gracelang / minigrace

Self-hosting compiler for the Grace programming language
39 stars 22 forks source link

Can't import a module from a sub-directory #295

Closed IsaacOscar closed 4 years ago

IsaacOscar commented 5 years ago

Suppose the current working directory looks like this:

.
├── folder
│   └── foo.grace
└── main.grace

Where main.grace is:

import "folder/foo" as F

And folder/foo.grace is an empty file.

Running this through mgc --verbose 60 fails, with the following information:

minigrace: main: 0.1 (+0.1): starting compilation
minigrace: main: 0.11 (+0.01): lexing.
minigrace: main: 0.12 (+0.01): parsing.
minigrace: main: 0.13 (+0.01): checking dialect standardGrace used by module main
minigrace: main: 0.14 (+0.01): checking module "standardGrace"
minigrace: main: 0.14 (+0): found module "standardGrace" in /usr/lib/grace/modules/./standardGrace.js
minigrace: main: 0.18 (+0.04): checking module "collectionsPrelude"
minigrace: main: 0.18 (+0): found module "collectionsPrelude" in /usr/lib/grace/modules/./collectionsPrelude.js
minigrace: main: 0.22 (+0.04): no need to load dialect "standardGrace": it does not define `thisDialect`
minigrace: main: 0.22 (+0): rewriting tree.
minigrace: main: 0.24 (+0.02): checking module "foo"
minigrace: main: 0.24 (+0): about to compile module "foo"
minigrace: main: 0.25 (+0.01): executing sub-compile "/usr/bin/mgc" --verbose 60 --gracelib /usr/lib/grace/modules/./ --target js --make "./folder/foo.grace"
minigrace: foo: 0.1 (+0.1): starting compilation
minigrace: foo: 0.1 (+0): lexing.
minigrace: foo: 0.11 (+0.01): parsing.
minigrace: foo: 0.11 (+0): checking dialect standardGrace used by module foo
minigrace: foo: 0.12 (+0.01): checking module "standardGrace"
minigrace: foo: 0.12 (+0): found module "standardGrace" in /usr/lib/grace/modules/./standardGrace.js
minigrace: foo: 0.16 (+0.04): checking module "collectionsPrelude"
minigrace: foo: 0.16 (+0): found module "collectionsPrelude" in /usr/lib/grace/modules/./collectionsPrelude.js
minigrace: foo: 0.2 (+0.04): no need to load dialect "standardGrace": it does not define `thisDialect`
minigrace: foo: 0.2 (+0): rewriting tree.
minigrace: foo: 0.23 (+0.03): symbol tables built.
minigrace: foo: 0.23 (+0): generating JavaScript code.
AST nodes compiled:
    dialect     1
minigrace: foo: 0.26 (+0.03): done.
minigrace: main: 1.07 (+0.82): found module "foo" in ./folder/foo.js
minigrace: main: 1.07 (+0): Failed to find gct for foo; looked for a .js file containing a gct string, and a .gct file.