summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-06-18 16:23:06 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-06-18 07:23:06 -0700
commit01858f115ae4c051a0beb5c1719c59431562f43e (patch)
treebd74c084216fab2ea7e8ff485cb52fcedb0da0e5
parented390a51cac08ec238b45c793a5ddd65fcae1b78 (diff)
fix: use Loader::resolve in op_fetch_module_meta_data (#2519)
-rw-r--r--cli/ops.rs18
-rw-r--r--tests/error_004_missing_module.ts2
-rw-r--r--tests/error_004_missing_module.ts.out2
-rw-r--r--tests/error_005_missing_dynamic_import.ts2
-rw-r--r--tests/error_005_missing_dynamic_import.ts.out2
-rw-r--r--tests/error_006_import_ext_failure.ts.out2
-rw-r--r--tests/error_011_bad_module_specifier.test4
-rw-r--r--tests/error_011_bad_module_specifier.ts2
-rw-r--r--tests/error_011_bad_module_specifier.ts.out11
-rw-r--r--tests/error_012_bad_dynamic_import_specifier.test4
-rw-r--r--tests/error_012_bad_dynamic_import_specifier.ts4
-rw-r--r--tests/error_012_bad_dynamic_import_specifier.ts.out10
12 files changed, 43 insertions, 20 deletions
diff --git a/cli/ops.rs b/cli/ops.rs
index 2155dcd5a..a9279f070 100644
--- a/cli/ops.rs
+++ b/cli/ops.rs
@@ -29,6 +29,7 @@ use deno::js_check;
use deno::Buf;
use deno::CoreOp;
use deno::JSError;
+use deno::Loader;
use deno::ModuleSpecifier;
use deno::Op;
use deno::OpResult;
@@ -507,25 +508,12 @@ fn op_fetch_module_meta_data(
let use_cache = !state.flags.reload;
let no_fetch = state.flags.no_fetch;
-
- // TODO(bartlomieju): I feel this is wrong - specifier is only resolved if there's an
- // import map - why it is not always resolved? Eg. "bad-module.ts" will return NotFound
- // error whilst it should return RelativeUrlWithCannotBeABaseBase error
- let resolved_specifier = match &state.import_map {
- Some(import_map) => match import_map.resolve(specifier, referrer) {
- Ok(result) => match result {
- Some(module_specifier) => module_specifier.to_string(),
- None => specifier.to_string(),
- },
- Err(err) => return Err(DenoError::from(err)),
- },
- None => specifier.to_string(),
- };
+ let resolved_specifier = state.resolve(specifier, referrer, false)?;
let fut = state
.dir
.fetch_module_meta_data_async(
- &resolved_specifier,
+ &resolved_specifier.to_string(),
referrer,
use_cache,
no_fetch,
diff --git a/tests/error_004_missing_module.ts b/tests/error_004_missing_module.ts
index e74d6b821..24ae52cf7 100644
--- a/tests/error_004_missing_module.ts
+++ b/tests/error_004_missing_module.ts
@@ -1,2 +1,2 @@
// eslint-disable-next-line
-import * as badModule from "bad-module.ts";
+import * as badModule from "./bad-module.ts";
diff --git a/tests/error_004_missing_module.ts.out b/tests/error_004_missing_module.ts.out
index b3a9aa65e..ca43bd5ff 100644
--- a/tests/error_004_missing_module.ts.out
+++ b/tests/error_004_missing_module.ts.out
@@ -1,4 +1,4 @@
-[WILDCARD]Uncaught NotFound: Cannot resolve module "bad-module.ts" from "[WILDCARD]/tests/error_004_missing_module.ts"
+[WILDCARD]Uncaught NotFound: Cannot resolve module "[WILDCARD]/bad-module.ts" from "[WILDCARD]/tests/error_004_missing_module.ts"
at DenoError (js/errors.ts:[WILDCARD])
at maybeError (js/errors.ts:[WILDCARD])
at maybeThrowError (js/errors.ts:[WILDCARD])
diff --git a/tests/error_005_missing_dynamic_import.ts b/tests/error_005_missing_dynamic_import.ts
index 0420a80bf..4c09feb5f 100644
--- a/tests/error_005_missing_dynamic_import.ts
+++ b/tests/error_005_missing_dynamic_import.ts
@@ -1,4 +1,4 @@
(async (): Promise<void> => {
// eslint-disable-next-line
- const badModule = await import("bad-module.ts");
+ const badModule = await import("./bad-module.ts");
})();
diff --git a/tests/error_005_missing_dynamic_import.ts.out b/tests/error_005_missing_dynamic_import.ts.out
index 78839e8d6..ef4972940 100644
--- a/tests/error_005_missing_dynamic_import.ts.out
+++ b/tests/error_005_missing_dynamic_import.ts.out
@@ -1,4 +1,4 @@
-[WILDCARD]NotFound: Cannot resolve module "bad-module.ts" from "[WILDCARD]/tests/error_005_missing_dynamic_import.ts"
+[WILDCARD]NotFound: Cannot resolve module "[WILDCARD]/bad-module.ts" from "[WILDCARD]/tests/error_005_missing_dynamic_import.ts"
at DenoError (js/errors.ts:[WILDCARD])
at maybeError (js/errors.ts:[WILDCARD])
at maybeThrowError (js/errors.ts:[WILDCARD])
diff --git a/tests/error_006_import_ext_failure.ts.out b/tests/error_006_import_ext_failure.ts.out
index 8cd05d692..335a7f4a8 100644
--- a/tests/error_006_import_ext_failure.ts.out
+++ b/tests/error_006_import_ext_failure.ts.out
@@ -1,4 +1,4 @@
-[WILDCARD]Uncaught NotFound: Cannot resolve module "./non-existent" from "[WILDCARD]/tests/error_006_import_ext_failure.ts"
+[WILDCARD]Uncaught NotFound: Cannot resolve module "[WILDCARD]/non-existent" from "[WILDCARD]/tests/error_006_import_ext_failure.ts"
at DenoError (js/errors.ts:[WILDCARD])
at maybeError (js/errors.ts:[WILDCARD])
at maybeThrowError (js/errors.ts:[WILDCARD])
diff --git a/tests/error_011_bad_module_specifier.test b/tests/error_011_bad_module_specifier.test
new file mode 100644
index 000000000..b2e125cfa
--- /dev/null
+++ b/tests/error_011_bad_module_specifier.test
@@ -0,0 +1,4 @@
+args: run --reload tests/error_011_bad_module_specifier.ts
+check_stderr: true
+exit_code: 1
+output: tests/error_011_bad_module_specifier.ts.out
diff --git a/tests/error_011_bad_module_specifier.ts b/tests/error_011_bad_module_specifier.ts
new file mode 100644
index 000000000..e74d6b821
--- /dev/null
+++ b/tests/error_011_bad_module_specifier.ts
@@ -0,0 +1,2 @@
+// eslint-disable-next-line
+import * as badModule from "bad-module.ts";
diff --git a/tests/error_011_bad_module_specifier.ts.out b/tests/error_011_bad_module_specifier.ts.out
new file mode 100644
index 000000000..ed0052062
--- /dev/null
+++ b/tests/error_011_bad_module_specifier.ts.out
@@ -0,0 +1,11 @@
+[WILDCARD]Uncaught RelativeUrlWithCannotBeABaseBase: relative URL with a cannot-be-a-base base
+ at DenoError (js/errors.ts:[WILDCARD])
+ at maybeError (js/errors.ts:[WILDCARD])
+ at maybeThrowError (js/errors.ts:[WILDCARD])
+ at sendSync (js/dispatch.ts:[WILDCARD])
+ at fetchModuleMetaData (js/compiler.ts:[WILDCARD])
+ at _resolveModule (js/compiler.ts:[WILDCARD])
+ at js/compiler.ts:[WILDCARD]
+ at resolveModuleNames (js/compiler.ts:[WILDCARD])
+ at resolveModuleNamesWorker ([WILDCARD]typescript.js:[WILDCARD])
+ at resolveModuleNamesReusingOldState ([WILDCARD]typescript.js:[WILDCARD])
diff --git a/tests/error_012_bad_dynamic_import_specifier.test b/tests/error_012_bad_dynamic_import_specifier.test
new file mode 100644
index 000000000..d0c25608d
--- /dev/null
+++ b/tests/error_012_bad_dynamic_import_specifier.test
@@ -0,0 +1,4 @@
+args: run --reload tests/error_012_bad_dynamic_import_specifier.ts
+check_stderr: true
+exit_code: 1
+output: tests/error_012_bad_dynamic_import_specifier.ts.out
diff --git a/tests/error_012_bad_dynamic_import_specifier.ts b/tests/error_012_bad_dynamic_import_specifier.ts
new file mode 100644
index 000000000..0420a80bf
--- /dev/null
+++ b/tests/error_012_bad_dynamic_import_specifier.ts
@@ -0,0 +1,4 @@
+(async (): Promise<void> => {
+ // eslint-disable-next-line
+ const badModule = await import("bad-module.ts");
+})();
diff --git a/tests/error_012_bad_dynamic_import_specifier.ts.out b/tests/error_012_bad_dynamic_import_specifier.ts.out
new file mode 100644
index 000000000..cdfc547f9
--- /dev/null
+++ b/tests/error_012_bad_dynamic_import_specifier.ts.out
@@ -0,0 +1,10 @@
+[WILDCARD]Uncaught RelativeUrlWithCannotBeABaseBase: relative URL with a cannot-be-a-base base
+ at DenoError (js/errors.ts:[WILDCARD])
+ at maybeError (js/errors.ts:[WILDCARD])
+ at maybeThrowError (js/errors.ts:[WILDCARD])
+ at sendSync (js/dispatch.ts:[WILDCARD])
+ at fetchModuleMetaData (js/compiler.ts:[WILDCARD])
+ at _resolveModule (js/compiler.ts:[WILDCARD])
+ at js/compiler.ts:[WILDCARD]
+ at resolveModuleNamesWorker ([WILDCARD])
+ at resolveModuleNamesReusingOldState ([WILDCARD]typescript.js:[WILDCARD])