Module search revamp for pkg managers

The search path listed in an import directive can now be an array.  The
top-level search path is appended.  Null and empty strings in the path
terminate any search.  The "." in "." and "./*" is replaced with the
directory containing the file doing the import (for command-line
programs this is the current directory, though that may be a bad idea).

No version numbers or anything of the sort are gratuitously added to the
search paths.

All this makes external package managers possible by allowing
dependencies to be installed local to dependents.
This commit is contained in:
Nicolas Williams committed 2014-12-24 02:31:51 -06:00
1 parent 1cdcff1c01
commit 56ae88d9d5
10 files changed
+167 -80

No files matched your search

+11 -2
View File
@@ -1,5 +1,14 @@
module c {whatever:null};
import a as foo;
import d as d {search:"$ORIGIN/"};
import d as d {search:"./"};
import d {search:"./"};
import e as e {search:"./../lib/jq"};
import f as f {search:"./../lib/jq"};
def a: 0;
def c: foo::a + "c" + d::meh;
def c:
if meh != d::meh then error("import into namespace doesn't work")
elif foo::a != "a" then error("foo::a didn't work as expected")
elif d::meh != "meh" then error("d::meh didn't work as expected")
elif e::bah != "bah" then error("e::bah didn't work as expected")
elif f::f != "f is here" then error("f::f didn't work as expected")
else foo::a + "c" + d::meh + e::bah end;
+1
View File
@@ -0,0 +1 @@
def bah: "bah";
+1
View File
@@ -0,0 +1 @@
def f: "f is here";