module extension: add support for canonical name resolution (#2013)

Before attempting to load a module, each provided resolver must be given an
opportunity to examine the name of the requested module without actually
loading it so as to canonicalize it, in case a module can be referred to by
multiple names.

Then, modules are loaded and cached by their canonical name.

JerryScript-DCO-1.0-Signed-off-by: Gabriel Schulhof gabriel.schulhof@intel.com
This commit is contained in:
Gabriel "_|Nix|_" Schulhof
2017-09-29 13:02:34 +03:00
committed by Zoltan Herczeg
parent e527e41bac
commit 6d53931055
6 changed files with 329 additions and 77 deletions
+5 -2
View File
@@ -26,12 +26,15 @@ main (int argc, char **argv)
(void) argv;
jerry_char_t buffer[256];
jerry_size_t bytes_copied;
jerryx_module_resolver_t resolver = jerryx_module_native_resolver;
const jerryx_module_resolver_t *resolver = &jerryx_module_native_resolver;
jerry_value_t module_name;
jerry_init (JERRY_INIT_EMPTY);
/* Attempt to load a non-existing module. */
jerry_value_t module = jerryx_module_resolve ((jerry_char_t *) "some-unknown-module-name", &resolver, 1);
module_name = jerry_create_string ((jerry_char_t *) "some-unknown-module-name");
jerry_value_t module = jerryx_module_resolve (module_name, &resolver, 1);
jerry_release_value (module_name);
TEST_ASSERT (jerry_value_has_error_flag (module));