feat: add WrenResolveModuleFn callback and module name parameter to wrenInterpret for relative import resolution

This breaking API change introduces a new `WrenResolveModuleFn` callback in the configuration that allows the host to canonicalize import module names, enabling relative imports. The `wrenInterpret()` function now requires a `module` parameter to specify the module name for the code being interpreted. The `wrenInterpretInModule()` function is removed in favor of the updated `wrenInterpret()`. The `metaCompile` function now dynamically looks up the caller's module name instead of hardcoding "main". New test files `resolution.c`, `resolution.h`, and `resolution.wren` are added to verify resolver behavior including null default, NULL return error, string rewriting, shared module deduplication, and importer propagation.
This commit is contained in:
Bob Nystrom
2018-03-23 14:54:09 +00:00
parent 88ad0fc138
commit 761032c0fc
12 changed files with 290 additions and 20 deletions
+2 -2
View File
@@ -228,7 +228,7 @@ void runFile(const char* path)
initVM();
WrenInterpretResult result = wrenInterpret(vm, source);
WrenInterpretResult result = wrenInterpret(vm, "main", source);
if (afterLoadFn != NULL) afterLoadFn(vm);
@@ -256,7 +256,7 @@ int runRepl()
printf("\\\\/\"-\n");
printf(" \\_/ wren v%s\n", WREN_VERSION_STRING);
wrenInterpret(vm, "import \"repl\"\n");
wrenInterpret(vm, "main", "import \"repl\"\n");
uv_run(loop, UV_RUN_DEFAULT);