From 55df6631fab3c3bbc3c9d18fbbcc062f8ff5ea83 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Fri, 20 Jan 2017 22:20:13 +0100 Subject: [PATCH] Address comments on flow type imports (#312) --- src/plugins/flow.js | 5 ++++- .../type-imports/invalid-import-type-shorthand-2/actual.js | 1 + .../invalid-import-type-shorthand-2/options.json | 3 +++ .../type-imports/invalid-import-type-shorthand/actual.js | 1 - 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/actual.js create mode 100644 test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/options.json diff --git a/src/plugins/flow.js b/src/plugins/flow.js index 90b6e13f85..bd44f00f74 100644 --- a/src/plugins/flow.js +++ b/src/plugins/flow.js @@ -1234,7 +1234,10 @@ export default function (instance) { specifier.local = specifier.imported.__clone(); } - if (node.importKind !== "value" && specifier.importKind !== null) { + if ( + (node.importKind === "type" || node.importKind === "typeof") && + (specifier.importKind === "type" || specifier.importKind === "typeof") + ) { this.raise(firstIdentLoc, "`The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements`"); } diff --git a/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/actual.js b/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/actual.js new file mode 100644 index 0000000000..19d143488a --- /dev/null +++ b/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/actual.js @@ -0,0 +1 @@ +import type {type t} from "foo"; diff --git a/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/options.json b/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/options.json new file mode 100644 index 0000000000..fcf8bc0a65 --- /dev/null +++ b/test/fixtures/flow/type-imports/invalid-import-type-shorthand-2/options.json @@ -0,0 +1,3 @@ +{ + "throws": "`The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements` (1:13)" +} diff --git a/test/fixtures/flow/type-imports/invalid-import-type-shorthand/actual.js b/test/fixtures/flow/type-imports/invalid-import-type-shorthand/actual.js index 5fa51659c7..4cff04a42b 100644 --- a/test/fixtures/flow/type-imports/invalid-import-type-shorthand/actual.js +++ b/test/fixtures/flow/type-imports/invalid-import-type-shorthand/actual.js @@ -1,2 +1 @@ import typeof {typeof t} from "foo"; -import type {type t} from "foo";