summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-06-10 14:19:41 +0200
committerGitHub <noreply@github.com>2020-06-10 14:19:41 +0200
commitdb70b77e4b6a24814e0045f7f6afcf77730878a7 (patch)
tree0aeb0ba674aa6cd2b978742993329616dafa80fc
parentaf69f25319ba27226f4b79e7d4ed0190448a8b8b (diff)
fix: handle @deno-types in export {} (#6202)
* fix: handle @deno-types in export {} * lint * fix tests * fmt * fix test
-rw-r--r--cli/file_fetcher.rs6
-rw-r--r--cli/swc_util.rs18
-rw-r--r--cli/tests/export_type_def.ts2
-rw-r--r--cli/tests/integration_tests.rs6
-rw-r--r--cli/tests/type_definitions_for_export.ts7
-rw-r--r--cli/tests/type_definitions_for_export.ts.out5
-rw-r--r--cli/tests/type_directives_js_main.js.out2
7 files changed, 31 insertions, 15 deletions
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs
index be3bc6efc..8fd1a331e 100644
--- a/cli/file_fetcher.rs
+++ b/cli/file_fetcher.rs
@@ -154,7 +154,11 @@ impl SourceFileFetcher {
permissions: Permissions,
) -> Result<SourceFile, ErrBox> {
let module_url = specifier.as_url().to_owned();
- debug!("fetch_source_file specifier: {} ", &module_url);
+ debug!(
+ "fetch_source_file specifier: {} maybe_referrer: {:#?}",
+ &module_url,
+ maybe_referrer.as_ref()
+ );
// Check if this file was already fetched and can be retrieved from in-process cache.
let maybe_cached_file = self.source_file_cache.get(specifier.to_string());
diff --git a/cli/swc_util.rs b/cli/swc_util.rs
index eb41fbc34..77ac6d083 100644
--- a/cli/swc_util.rs
+++ b/cli/swc_util.rs
@@ -504,19 +504,11 @@ pub fn analyze_dependencies_and_references(
})
.map(|desc| {
let location = parser.get_span_location(desc.span);
- if desc.kind == DependencyKind::Import {
- let deno_types = get_deno_types(&parser, desc.span);
- ImportDescriptor {
- specifier: desc.specifier.to_string(),
- deno_types,
- location: location.into(),
- }
- } else {
- ImportDescriptor {
- specifier: desc.specifier.to_string(),
- deno_types: None,
- location: location.into(),
- }
+ let deno_types = get_deno_types(&parser, desc.span);
+ ImportDescriptor {
+ specifier: desc.specifier.to_string(),
+ deno_types,
+ location: location.into(),
}
})
.collect();
diff --git a/cli/tests/export_type_def.ts b/cli/tests/export_type_def.ts
new file mode 100644
index 000000000..e33b70a64
--- /dev/null
+++ b/cli/tests/export_type_def.ts
@@ -0,0 +1,2 @@
+// @deno-types="./type_definitions/foo.d.ts"
+export { foo } from "./type_definitions/foo.js";
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index d70527881..c62a9a501 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -1729,6 +1729,12 @@ itest!(type_definitions {
output: "type_definitions.ts.out",
});
+itest!(type_definitions_for_export {
+ args: "run --reload type_definitions_for_export.ts",
+ output: "type_definitions_for_export.ts.out",
+ exit_code: 1,
+});
+
itest!(type_directives_01 {
args: "run --reload -L debug type_directives_01.ts",
output: "type_directives_01.ts.out",
diff --git a/cli/tests/type_definitions_for_export.ts b/cli/tests/type_definitions_for_export.ts
new file mode 100644
index 000000000..e9eb6b139
--- /dev/null
+++ b/cli/tests/type_definitions_for_export.ts
@@ -0,0 +1,7 @@
+import { foo } from "./export_type_def.ts";
+
+function bar(a: number): void {
+ console.log(a);
+}
+
+bar(foo);
diff --git a/cli/tests/type_definitions_for_export.ts.out b/cli/tests/type_definitions_for_export.ts.out
new file mode 100644
index 000000000..81f0167c5
--- /dev/null
+++ b/cli/tests/type_definitions_for_export.ts.out
@@ -0,0 +1,5 @@
+Compile [WILDCARD]type_definitions_for_export.ts
+error: TS2345 [ERROR]: Argument of type 'string' is not assignable to parameter of type 'number'.
+bar(foo);
+ ~~~
+ at [WILDCARD]type_definitions_for_export.ts:7:5
diff --git a/cli/tests/type_directives_js_main.js.out b/cli/tests/type_directives_js_main.js.out
index 714dbd0b7..2ccecc904 100644
--- a/cli/tests/type_directives_js_main.js.out
+++ b/cli/tests/type_directives_js_main.js.out
@@ -1,3 +1,3 @@
[WILDCARD]
-fetch_source_file specifier: file:[WILDCARD]cli/tests/subdir/type_reference.d.ts
+fetch_source_file specifier: file:[WILDCARD]cli/tests/subdir/type_reference.d.ts [WILDCARD]
[WILDCARD] \ No newline at end of file