diff --git a/resolution/module-resolver.go b/resolution/module-resolver.go index da6876d..b084fb6 100644 --- a/resolution/module-resolver.go +++ b/resolution/module-resolver.go @@ -20,9 +20,9 @@ type ModuleResolver struct { lithiaSourceGlob string } -func DefaultModuleResolver() ModuleResolver { +func DefaultModuleResolver(importRoots ...string) ModuleResolver { return ModuleResolver{ - externalImportRoots: defaultImportRoots(), + externalImportRoots: defaultImportRoots(importRoots...), defaultPackageName: "root", manifestName: "Potfile", manifestSearchPaths: []string{".", "..", "../..", "../../..", "../../../.."}, @@ -52,8 +52,8 @@ type PackageManifest struct { Path string } -func defaultImportRoots() []string { - roots := []string{} +func defaultImportRoots(importRoots ...string) []string { + roots := importRoots if path, ok := os.LookupEnv("LITHIA_LOCALS"); ok { roots = append(roots, path) } diff --git a/runtime/interpreter.go b/runtime/interpreter.go index ef51a68..355e8e0 100644 --- a/runtime/interpreter.go +++ b/runtime/interpreter.go @@ -18,7 +18,7 @@ type Interpreter struct { func NewInterpreter(referenceFile string, importRoots ...string) *Interpreter { inter := &Interpreter{ - Resolver: resolution.DefaultModuleResolver(), + Resolver: resolution.DefaultModuleResolver(importRoots...), Parser: parser.NewParser(), Modules: make(map[ast.ModuleName]*RuntimeModule), ExternalDefinitions: make(map[ast.ModuleName]ExternalDefinition), diff --git a/runtime/runtime-stdlib_test.go b/runtime/runtime-stdlib_test.go index 5c14703..c16bc18 100644 --- a/runtime/runtime-stdlib_test.go +++ b/runtime/runtime-stdlib_test.go @@ -11,7 +11,7 @@ import ( func TestStdlib(t *testing.T) { pathToStdlib := "../stdlib" - inter := r.NewInterpreter(pathToStdlib) + inter := r.NewInterpreter(pathToStdlib, "../stdlib") mockOS := &mockExternalOS{ calledExitCode: -1, env: map[string]string{"LITHIA_TESTS": "1"},