diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/input.js b/packages/babel-generator/test/fixtures/flow/declare-statements/input.js index a0874c4d44a4..3a2d2aa6a74e 100644 --- a/packages/babel-generator/test/fixtures/flow/declare-statements/input.js +++ b/packages/babel-generator/test/fixtures/flow/declare-statements/input.js @@ -11,13 +11,13 @@ declare class A { static [ indexer: number]: string } declare class A { static () : number } declare class B { (): number } declare class A mixins B, C {} -declare type A = string +declare type A1 = string declare type T = { [k:string]: U } -declare type B = { +declare type B1 = { fn?: (foo: string) => void, } -declare interface I { foo: string } -declare interface I { foo: T } +declare interface I1 { foo: string } +declare interface I2 { foo: T } declare module.exports: { foo: string } declare opaque type Foo: Bar; declare opaque type ID; diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/output.js b/packages/babel-generator/test/fixtures/flow/declare-statements/output.js index 7be6ae40cec7..c5f087d49ab0 100644 --- a/packages/babel-generator/test/fixtures/flow/declare-statements/output.js +++ b/packages/babel-generator/test/fixtures/flow/declare-statements/output.js @@ -22,17 +22,17 @@ declare class B { (): number } declare class A mixins B, C {} -declare type A = string; +declare type A1 = string; declare type T = { [k: string]: U }; -declare type B = { +declare type B1 = { fn?: (foo: string) => void }; -declare interface I { +declare interface I1 { foo: string } -declare interface I { +declare interface I2 { foo: T } declare module.exports: { diff --git a/packages/babel-generator/test/fixtures/flow/def-site-variance/input.js b/packages/babel-generator/test/fixtures/flow/def-site-variance/input.js index 9f00e80993d1..0891ba212de5 100644 --- a/packages/babel-generator/test/fixtures/flow/def-site-variance/input.js +++ b/packages/babel-generator/test/fixtures/flow/def-site-variance/input.js @@ -5,10 +5,10 @@ type T2 = { +p: T }; type T3 = { -p: T }; type T4 = { +[k:K]: V }; type T5 = { -[k:K]: V }; -interface I { +p: T } -interface I { -p: T } -interface I { +[k:K]: V } -interface I { -[k:K]: V } +interface I1 { +p: T } +interface I2 { -p: T } +interface I3 { +[k:K]: V } +interface I4 { -[k:K]: V } declare class I { +p: T } declare class I { -p: T } declare class I { +[k:K]: V } diff --git a/packages/babel-generator/test/fixtures/flow/def-site-variance/output.js b/packages/babel-generator/test/fixtures/flow/def-site-variance/output.js index 5c2b69d1a6dd..66dd195d22e1 100644 --- a/packages/babel-generator/test/fixtures/flow/def-site-variance/output.js +++ b/packages/babel-generator/test/fixtures/flow/def-site-variance/output.js @@ -15,16 +15,16 @@ type T4 = { type T5 = { -[k: K]: V }; -interface I { +interface I1 { +p: T } -interface I { +interface I2 { -p: T } -interface I { +interface I3 { +[k: K]: V } -interface I { +interface I4 { -[k: K]: V } declare class I { diff --git a/packages/babel-generator/test/fixtures/flow/internal-slot/input.js b/packages/babel-generator/test/fixtures/flow/internal-slot/input.js index b00d3bd76f22..6056da54458a 100644 --- a/packages/babel-generator/test/fixtures/flow/internal-slot/input.js +++ b/packages/babel-generator/test/fixtures/flow/internal-slot/input.js @@ -1,7 +1,7 @@ declare class C { static [[foo]]: T } declare class C { [[foo]]: T } -interface I { [[foo]]: X } -interface I { [[foo]](): X } +interface I1 { [[foo]]: X } +interface I2 { [[foo]](): X } type T1 = { [[foo]]: X } type T2 = { [[foo]](): X } type T3 = { [[foo]]?: X } diff --git a/packages/babel-generator/test/fixtures/flow/internal-slot/output.js b/packages/babel-generator/test/fixtures/flow/internal-slot/output.js index 2a48fb9f186a..3b2b5ece1a23 100644 --- a/packages/babel-generator/test/fixtures/flow/internal-slot/output.js +++ b/packages/babel-generator/test/fixtures/flow/internal-slot/output.js @@ -4,10 +4,10 @@ declare class C { declare class C { [[foo]]: T } -interface I { +interface I1 { [[foo]]: X } -interface I { +interface I2 { [[foo]]() => X } type T1 = { diff --git a/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/input.js b/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/input.js index dab9a962acf7..7e5fb6309d97 100644 --- a/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/input.js +++ b/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/input.js @@ -1,7 +1,7 @@ -interface A { +interface A1 { @@iterator(): Iterator; } -interface A { +interface A2 { @@asyncIterator(): Iterator; } diff --git a/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/output.js b/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/output.js index ef726ab2fc5b..57b22ad84495 100644 --- a/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/output.js +++ b/packages/babel-generator/test/fixtures/flow/iterator-inside-interface/output.js @@ -1,6 +1,6 @@ -interface A { +interface A1 { @@iterator(): Iterator } -interface A { +interface A2 { @@asyncIterator(): Iterator } \ No newline at end of file diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 9b48c7129e2f..5aba0020634a 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1944,7 +1944,7 @@ export default class ExpressionParser extends LValParser { node.params[i], BIND_VAR, allowDuplicates ? null : nameHash, - "function paramter list", + "function parameter list", ); } } diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 024a21baa5ab..e1a9e72a291c 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -14,6 +14,8 @@ import { type BindingTypes, BIND_NONE, BIND_LEXICAL, + BIND_VAR, + BIND_FUNCTION, SCOPE_ARROW, SCOPE_OTHER, } from "../util/scopeflags"; @@ -270,6 +272,7 @@ export default (superClass: Class): Class => node.id = this.flowParseTypeAnnotatableIdentifier( /*allowPrimitiveOverride*/ true, ); + this.scope.declareName(node.id.name, BIND_VAR, node.id.start); this.semicolon(); return this.finishNode(node, "DeclareVariable"); } @@ -462,6 +465,12 @@ export default (superClass: Class): Class => ): void { node.id = this.flowParseRestrictedIdentifier(/*liberal*/ !isClass); + this.scope.declareName( + node.id.name, + isClass ? BIND_FUNCTION : BIND_LEXICAL, + node.id.start, + ); + if (this.isRelational("<")) { node.typeParameters = this.flowParseTypeParameterDeclaration(); } else { diff --git a/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/input.js b/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/input.js new file mode 100644 index 000000000000..6e0495a39c96 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/input.js @@ -0,0 +1,3 @@ +interface Foo {} + +export type { Foo } \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/output.json b/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/output.json new file mode 100644 index 000000000000..15c57d370772 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/interfaces-module-and-script/implements-exports/output.json @@ -0,0 +1,160 @@ +{ + "type": "File", + "start": 0, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "InterfaceDeclaration", + "start": 0, + "end": 16, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 16 + } + }, + "id": { + "type": "Identifier", + "start": 10, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 1, + "column": 13 + }, + "identifierName": "Foo" + }, + "name": "Foo" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 14, + "end": 16, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 16 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "ExportNamedDeclaration", + "start": 18, + "end": 37, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + }, + "specifiers": [ + { + "type": "ExportSpecifier", + "start": 32, + "end": 35, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 17 + } + }, + "local": { + "type": "Identifier", + "start": 32, + "end": 35, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 17 + }, + "identifierName": "Foo" + }, + "name": "Foo" + }, + "exported": { + "type": "Identifier", + "start": 32, + "end": 35, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 17 + }, + "identifierName": "Foo" + }, + "name": "Foo" + } + } + ], + "source": null, + "exportKind": "type", + "declaration": null + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/input.js new file mode 100644 index 000000000000..fa5ff14cb9be --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/input.js @@ -0,0 +1,2 @@ +declare class C1 {} +class C1 {} diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/options.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/options.json new file mode 100644 index 000000000000..06ad6ded6032 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/class/options.json @@ -0,0 +1,8 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx", + "flow" + ], + "throws": "Identifier 'C1' has already been declared (2:6)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/input.js new file mode 100644 index 000000000000..d9470b0fd596 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/input.js @@ -0,0 +1,6 @@ +declare class C1{} +declare class C1{} + +declare module M1 { + declare class C1 {} +} diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/output.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/output.json new file mode 100644 index 000000000000..149ca744eb22 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-class/output.json @@ -0,0 +1,253 @@ +{ + "type": "File", + "start": 0, + "end": 82, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 82, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareClass", + "start": 0, + "end": 18, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 18 + } + }, + "id": { + "type": "Identifier", + "start": 14, + "end": 16, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 16 + }, + "identifierName": "C1" + }, + "name": "C1" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 16, + "end": 18, + "loc": { + "start": { + "line": 1, + "column": 16 + }, + "end": { + "line": 1, + "column": 18 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "DeclareClass", + "start": 19, + "end": 37, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "id": { + "type": "Identifier", + "start": 33, + "end": 35, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 16 + }, + "identifierName": "C1" + }, + "name": "C1" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 35, + "end": 37, + "loc": { + "start": { + "line": 2, + "column": 16 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "DeclareModule", + "start": 39, + "end": 82, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 54, + "end": 56, + "loc": { + "start": { + "line": 4, + "column": 15 + }, + "end": { + "line": 4, + "column": 17 + }, + "identifierName": "M1" + }, + "name": "M1" + }, + "body": { + "type": "BlockStatement", + "start": 57, + "end": 82, + "loc": { + "start": { + "line": 4, + "column": 18 + }, + "end": { + "line": 6, + "column": 1 + } + }, + "body": [ + { + "type": "DeclareClass", + "start": 61, + "end": 80, + "loc": { + "start": { + "line": 5, + "column": 2 + }, + "end": { + "line": 5, + "column": 21 + } + }, + "id": { + "type": "Identifier", + "start": 75, + "end": 77, + "loc": { + "start": { + "line": 5, + "column": 16 + }, + "end": { + "line": 5, + "column": 18 + }, + "identifierName": "C1" + }, + "name": "C1" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 78, + "end": 80, + "loc": { + "start": { + "line": 5, + "column": 19 + }, + "end": { + "line": 5, + "column": 21 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + } + ] + }, + "kind": "CommonJS" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/input.js new file mode 100644 index 000000000000..fb98eb970189 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/input.js @@ -0,0 +1,3 @@ +declare function F1(): void +declare function F1(): void +function F1() {} diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/output.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/output.json new file mode 100644 index 000000000000..ad507ae14079 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-function/output.json @@ -0,0 +1,249 @@ +{ + "type": "File", + "start": 0, + "end": 72, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 16 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 72, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 16 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareFunction", + "start": 0, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 17, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 17 + }, + "end": { + "line": 1, + "column": 27 + }, + "identifierName": "F1" + }, + "name": "F1", + "typeAnnotation": { + "type": "TypeAnnotation", + "start": 19, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 19 + }, + "end": { + "line": 1, + "column": 27 + } + }, + "typeAnnotation": { + "type": "FunctionTypeAnnotation", + "start": 19, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 19 + }, + "end": { + "line": 1, + "column": 27 + } + }, + "typeParameters": null, + "params": [], + "rest": null, + "returnType": { + "type": "VoidTypeAnnotation", + "start": 23, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 23 + }, + "end": { + "line": 1, + "column": 27 + } + } + } + } + } + }, + "predicate": null + }, + { + "type": "DeclareFunction", + "start": 28, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 45, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 17 + }, + "end": { + "line": 2, + "column": 27 + }, + "identifierName": "F1" + }, + "name": "F1", + "typeAnnotation": { + "type": "TypeAnnotation", + "start": 47, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 27 + } + }, + "typeAnnotation": { + "type": "FunctionTypeAnnotation", + "start": 47, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 27 + } + }, + "typeParameters": null, + "params": [], + "rest": null, + "returnType": { + "type": "VoidTypeAnnotation", + "start": 51, + "end": 55, + "loc": { + "start": { + "line": 2, + "column": 23 + }, + "end": { + "line": 2, + "column": 27 + } + } + } + } + } + }, + "predicate": null + }, + { + "type": "FunctionDeclaration", + "start": 56, + "end": 72, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 16 + } + }, + "id": { + "type": "Identifier", + "start": 65, + "end": 67, + "loc": { + "start": { + "line": 3, + "column": 9 + }, + "end": { + "line": 3, + "column": 11 + }, + "identifierName": "F1" + }, + "name": "F1" + }, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 70, + "end": 72, + "loc": { + "start": { + "line": 3, + "column": 14 + }, + "end": { + "line": 3, + "column": 16 + } + }, + "body": [], + "directives": [] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/input.js new file mode 100644 index 000000000000..21b4f11b204c --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/input.js @@ -0,0 +1,3 @@ +declare var V1; +declare var V1; +var V1; diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/output.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/output.json new file mode 100644 index 000000000000..b96badb7fe54 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/declare-var/output.json @@ -0,0 +1,150 @@ +{ + "type": "File", + "start": 0, + "end": 39, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 7 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 39, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 7 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareVariable", + "start": 0, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 15 + } + }, + "id": { + "type": "Identifier", + "start": 12, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 12 + }, + "end": { + "line": 1, + "column": 14 + }, + "identifierName": "V1" + }, + "name": "V1" + } + }, + { + "type": "DeclareVariable", + "start": 16, + "end": 31, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 15 + } + }, + "id": { + "type": "Identifier", + "start": 28, + "end": 30, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 14 + }, + "identifierName": "V1" + }, + "name": "V1" + } + }, + { + "type": "VariableDeclaration", + "start": 32, + "end": 39, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 7 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 36, + "end": 38, + "loc": { + "start": { + "line": 3, + "column": 4 + }, + "end": { + "line": 3, + "column": 6 + } + }, + "id": { + "type": "Identifier", + "start": 36, + "end": 38, + "loc": { + "start": { + "line": 3, + "column": 4 + }, + "end": { + "line": 3, + "column": 6 + }, + "identifierName": "V1" + }, + "name": "V1" + }, + "init": null + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/input.js new file mode 100644 index 000000000000..bca93948ce50 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/input.js @@ -0,0 +1,2 @@ +interface I {}; +interface I {}; diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/options.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/options.json new file mode 100644 index 000000000000..5672ce1b6444 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/interface/options.json @@ -0,0 +1,8 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx", + "flow" + ], + "throws": "Identifier 'I' has already been declared (2:10)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/input.js b/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/input.js new file mode 100644 index 000000000000..273aa1c7176c --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/input.js @@ -0,0 +1,2 @@ +type T1 = string; +type T1 = number; diff --git a/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/options.json b/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/options.json new file mode 100644 index 000000000000..946261f4e872 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/multiple-declarations/type/options.json @@ -0,0 +1,8 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx", + "flow" + ], + "throws": "Identifier 'T1' has already been declared (2:5)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/regression/issue-10044/input.js b/packages/babel-parser/test/fixtures/flow/regression/issue-10044/input.js new file mode 100644 index 000000000000..4d3e8c48a837 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/regression/issue-10044/input.js @@ -0,0 +1,8 @@ +declare class C1 {} +declare interface I1 {} +declare type T1 = number; + +interface I2 {} +type T2 = number; + +export type { C1, I1, I2, T1, T2 } diff --git a/packages/babel-parser/test/fixtures/flow/regression/issue-10044/output.json b/packages/babel-parser/test/fixtures/flow/regression/issue-10044/output.json new file mode 100644 index 000000000000..5df63e757a77 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/regression/issue-10044/output.json @@ -0,0 +1,564 @@ +{ + "type": "File", + "start": 0, + "end": 140, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 8, + "column": 34 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 140, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 8, + "column": 34 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareClass", + "start": 0, + "end": 19, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 19 + } + }, + "id": { + "type": "Identifier", + "start": 14, + "end": 16, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 16 + }, + "identifierName": "C1" + }, + "name": "C1" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 17, + "end": 19, + "loc": { + "start": { + "line": 1, + "column": 17 + }, + "end": { + "line": 1, + "column": 19 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "DeclareInterface", + "start": 20, + "end": 43, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 23 + } + }, + "id": { + "type": "Identifier", + "start": 38, + "end": 40, + "loc": { + "start": { + "line": 2, + "column": 18 + }, + "end": { + "line": 2, + "column": 20 + }, + "identifierName": "I1" + }, + "name": "I1" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 41, + "end": 43, + "loc": { + "start": { + "line": 2, + "column": 21 + }, + "end": { + "line": 2, + "column": 23 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "DeclareTypeAlias", + "start": 44, + "end": 69, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 25 + } + }, + "id": { + "type": "Identifier", + "start": 57, + "end": 59, + "loc": { + "start": { + "line": 3, + "column": 13 + }, + "end": { + "line": 3, + "column": 15 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + "typeParameters": null, + "right": { + "type": "NumberTypeAnnotation", + "start": 62, + "end": 68, + "loc": { + "start": { + "line": 3, + "column": 18 + }, + "end": { + "line": 3, + "column": 24 + } + } + } + }, + { + "type": "InterfaceDeclaration", + "start": 71, + "end": 86, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 15 + } + }, + "id": { + "type": "Identifier", + "start": 81, + "end": 83, + "loc": { + "start": { + "line": 5, + "column": 10 + }, + "end": { + "line": 5, + "column": 12 + }, + "identifierName": "I2" + }, + "name": "I2" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 84, + "end": 86, + "loc": { + "start": { + "line": 5, + "column": 13 + }, + "end": { + "line": 5, + "column": 15 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "TypeAlias", + "start": 87, + "end": 104, + "loc": { + "start": { + "line": 6, + "column": 0 + }, + "end": { + "line": 6, + "column": 17 + } + }, + "id": { + "type": "Identifier", + "start": 92, + "end": 94, + "loc": { + "start": { + "line": 6, + "column": 5 + }, + "end": { + "line": 6, + "column": 7 + }, + "identifierName": "T2" + }, + "name": "T2" + }, + "typeParameters": null, + "right": { + "type": "NumberTypeAnnotation", + "start": 97, + "end": 103, + "loc": { + "start": { + "line": 6, + "column": 10 + }, + "end": { + "line": 6, + "column": 16 + } + } + } + }, + { + "type": "ExportNamedDeclaration", + "start": 106, + "end": 140, + "loc": { + "start": { + "line": 8, + "column": 0 + }, + "end": { + "line": 8, + "column": 34 + } + }, + "specifiers": [ + { + "type": "ExportSpecifier", + "start": 120, + "end": 122, + "loc": { + "start": { + "line": 8, + "column": 14 + }, + "end": { + "line": 8, + "column": 16 + } + }, + "local": { + "type": "Identifier", + "start": 120, + "end": 122, + "loc": { + "start": { + "line": 8, + "column": 14 + }, + "end": { + "line": 8, + "column": 16 + }, + "identifierName": "C1" + }, + "name": "C1" + }, + "exported": { + "type": "Identifier", + "start": 120, + "end": 122, + "loc": { + "start": { + "line": 8, + "column": 14 + }, + "end": { + "line": 8, + "column": 16 + }, + "identifierName": "C1" + }, + "name": "C1" + } + }, + { + "type": "ExportSpecifier", + "start": 124, + "end": 126, + "loc": { + "start": { + "line": 8, + "column": 18 + }, + "end": { + "line": 8, + "column": 20 + } + }, + "local": { + "type": "Identifier", + "start": 124, + "end": 126, + "loc": { + "start": { + "line": 8, + "column": 18 + }, + "end": { + "line": 8, + "column": 20 + }, + "identifierName": "I1" + }, + "name": "I1" + }, + "exported": { + "type": "Identifier", + "start": 124, + "end": 126, + "loc": { + "start": { + "line": 8, + "column": 18 + }, + "end": { + "line": 8, + "column": 20 + }, + "identifierName": "I1" + }, + "name": "I1" + } + }, + { + "type": "ExportSpecifier", + "start": 128, + "end": 130, + "loc": { + "start": { + "line": 8, + "column": 22 + }, + "end": { + "line": 8, + "column": 24 + } + }, + "local": { + "type": "Identifier", + "start": 128, + "end": 130, + "loc": { + "start": { + "line": 8, + "column": 22 + }, + "end": { + "line": 8, + "column": 24 + }, + "identifierName": "I2" + }, + "name": "I2" + }, + "exported": { + "type": "Identifier", + "start": 128, + "end": 130, + "loc": { + "start": { + "line": 8, + "column": 22 + }, + "end": { + "line": 8, + "column": 24 + }, + "identifierName": "I2" + }, + "name": "I2" + } + }, + { + "type": "ExportSpecifier", + "start": 132, + "end": 134, + "loc": { + "start": { + "line": 8, + "column": 26 + }, + "end": { + "line": 8, + "column": 28 + } + }, + "local": { + "type": "Identifier", + "start": 132, + "end": 134, + "loc": { + "start": { + "line": 8, + "column": 26 + }, + "end": { + "line": 8, + "column": 28 + }, + "identifierName": "T1" + }, + "name": "T1" + }, + "exported": { + "type": "Identifier", + "start": 132, + "end": 134, + "loc": { + "start": { + "line": 8, + "column": 26 + }, + "end": { + "line": 8, + "column": 28 + }, + "identifierName": "T1" + }, + "name": "T1" + } + }, + { + "type": "ExportSpecifier", + "start": 136, + "end": 138, + "loc": { + "start": { + "line": 8, + "column": 30 + }, + "end": { + "line": 8, + "column": 32 + } + }, + "local": { + "type": "Identifier", + "start": 136, + "end": 138, + "loc": { + "start": { + "line": 8, + "column": 30 + }, + "end": { + "line": 8, + "column": 32 + }, + "identifierName": "T2" + }, + "name": "T2" + }, + "exported": { + "type": "Identifier", + "start": 136, + "end": 138, + "loc": { + "start": { + "line": 8, + "column": 30 + }, + "end": { + "line": 8, + "column": 32 + }, + "identifierName": "T2" + }, + "name": "T2" + } + } + ], + "source": null, + "exportKind": "type", + "declaration": null + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-var/options.json b/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-var/options.json deleted file mode 100644 index 81dc2c90799f..000000000000 --- a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-var/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Identifier 'A' has already been declared (2:12)" -} diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-func/options.json b/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-func/options.json deleted file mode 100644 index 5f6027f8dd3b..000000000000 --- a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-func/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Identifier 'A' has already been declared (2:9)" -} diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-let/options.json b/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-let/options.json deleted file mode 100644 index b6ff3a4b0987..000000000000 --- a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-let/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Identifier 'A' has already been declared (2:4)" -} diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-class/options.json b/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-class/options.json deleted file mode 100644 index 4a1b4e5c5cd4..000000000000 --- a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-class/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Identifier 'A' has already been declared (2:14)" -} diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-class/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-class/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-class/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-class/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-class/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-class/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-class/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-class/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-declare-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-declare-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-const-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-const-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-class/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-class/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-class/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-class/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-class/output.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-class/output.json new file mode 100644 index 000000000000..25358ef97ae7 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-class/output.json @@ -0,0 +1,147 @@ +{ + "type": "File", + "start": 0, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 37, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareClass", + "start": 0, + "end": 18, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 18 + } + }, + "id": { + "type": "Identifier", + "start": 14, + "end": 15, + "loc": { + "start": { + "line": 1, + "column": 14 + }, + "end": { + "line": 1, + "column": 15 + }, + "identifierName": "A" + }, + "name": "A" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 16, + "end": 18, + "loc": { + "start": { + "line": 1, + "column": 16 + }, + "end": { + "line": 1, + "column": 18 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + }, + { + "type": "DeclareClass", + "start": 19, + "end": 37, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "id": { + "type": "Identifier", + "start": 33, + "end": 34, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 15 + }, + "identifierName": "A" + }, + "name": "A" + }, + "typeParameters": null, + "extends": [], + "implements": [], + "mixins": [], + "body": { + "type": "ObjectTypeAnnotation", + "start": 35, + "end": 37, + "loc": { + "start": { + "line": 2, + "column": 16 + }, + "end": { + "line": 2, + "column": 18 + } + }, + "callProperties": [], + "properties": [], + "indexers": [], + "internalSlots": [], + "exact": false + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-class-declare-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-class-declare-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-func/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-func/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-func/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-func/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-func/output.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-func/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-func/output.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-func/output.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-var/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-var/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-declare-var/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-var/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-var/output.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-var/output.json new file mode 100644 index 000000000000..5e5c135d5908 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-declare-var/output.json @@ -0,0 +1,178 @@ +{ + "type": "File", + "start": 0, + "end": 50, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 22 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 50, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 22 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareFunction", + "start": 0, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 17, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 17 + }, + "end": { + "line": 1, + "column": 26 + }, + "identifierName": "A" + }, + "name": "A", + "typeAnnotation": { + "type": "TypeAnnotation", + "start": 18, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 18 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "typeAnnotation": { + "type": "FunctionTypeAnnotation", + "start": 18, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 18 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "typeParameters": null, + "params": [], + "rest": null, + "returnType": { + "type": "VoidTypeAnnotation", + "start": 22, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 22 + }, + "end": { + "line": 1, + "column": 26 + } + } + } + } + } + }, + "predicate": null + }, + { + "type": "DeclareVariable", + "start": 28, + "end": 50, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 40, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 21 + }, + "identifierName": "A" + }, + "name": "A", + "typeAnnotation": { + "type": "TypeAnnotation", + "start": 41, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 13 + }, + "end": { + "line": 2, + "column": 21 + } + }, + "typeAnnotation": { + "type": "NumberTypeAnnotation", + "start": 43, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 15 + }, + "end": { + "line": 2, + "column": 21 + } + } + } + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-func/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-func/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/options.json new file mode 100644 index 000000000000..7c91792f0e9c --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/options.json @@ -0,0 +1,7 @@ +{ + "sourceType": "module", + "plugins": [ + "jsx", + "flow" + ] +} diff --git a/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/output.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/output.json new file mode 100644 index 000000000000..44114ec35913 --- /dev/null +++ b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-func-func/output.json @@ -0,0 +1,168 @@ +{ + "type": "File", + "start": 0, + "end": 43, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 15 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 43, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 15 + } + }, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "DeclareFunction", + "start": 0, + "end": 27, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 27 + } + }, + "id": { + "type": "Identifier", + "start": 17, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 17 + }, + "end": { + "line": 1, + "column": 26 + }, + "identifierName": "A" + }, + "name": "A", + "typeAnnotation": { + "type": "TypeAnnotation", + "start": 18, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 18 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "typeAnnotation": { + "type": "FunctionTypeAnnotation", + "start": 18, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 18 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "typeParameters": null, + "params": [], + "rest": null, + "returnType": { + "type": "VoidTypeAnnotation", + "start": 22, + "end": 26, + "loc": { + "start": { + "line": 1, + "column": 22 + }, + "end": { + "line": 1, + "column": 26 + } + } + } + } + } + }, + "predicate": null + }, + { + "type": "FunctionDeclaration", + "start": 28, + "end": 43, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 15 + } + }, + "id": { + "type": "Identifier", + "start": 37, + "end": 38, + "loc": { + "start": { + "line": 2, + "column": 9 + }, + "end": { + "line": 2, + "column": 10 + }, + "identifierName": "A" + }, + "name": "A" + }, + "generator": false, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 41, + "end": 43, + "loc": { + "start": { + "line": 2, + "column": 13 + }, + "end": { + "line": 2, + "column": 15 + } + }, + "body": [], + "directives": [] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-interface-declare-class/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-interface-declare-class/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-interface-declare-class/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-interface-declare-class/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-interface-declare-class/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-interface-declare-class/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-interface-declare-class/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-interface-declare-class/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-declare-var/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-declare-var/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-declare-var/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-declare-var/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-declare-var/output.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-declare-var/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-declare-var/output.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-declare-var/output.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-let/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-let/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-var-let/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-let/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-let/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-let/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-declare-func-let/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-declare-var-let/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-interface-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-interface-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-interface-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-interface-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-interface-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-interface-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-interface-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-interface-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-class/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-class/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-class/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-class/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-class/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-class/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-class/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-class/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-declare-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-declare-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-let-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-let-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-type-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-type-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-type-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-type-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-type-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-type-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-type-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-type-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-declare-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-declare-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-declare-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-declare-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-declare-interface/options.json diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-interface/input.js b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-interface/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-interface/input.js rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-interface/input.js diff --git a/packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-interface/options.json b/packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-interface/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/flow/scope/.dupl-decl-var-interface/options.json rename to packages/babel-parser/test/fixtures/flow/scope/dupl-decl-var-interface/options.json diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/input.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/input.js index e9ca299ae87e..666d38e3a4ed 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/input.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/input.js @@ -1,2 +1,2 @@ declare class foo {} -const foo = 1; +const foo1 = 1; diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/output.js index 9375fc4abd22..0332cc0604b1 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/output.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/const-violations/flow-declar/output.js @@ -1 +1 @@ -var foo = 1; +var foo1 = 1; diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/input.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/input.js index 7c2826479454..64db78b233dc 100644 --- a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/input.js +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/input.js @@ -4,13 +4,13 @@ declare function foo(): void declare function foo(): void; declare function foo(): void; declare function foo(x: number, y: string): void; -declare class A {} -declare class A extends B { x: number } -declare class A { static foo(): number, static x : string } -declare class A { static [ indexer: number]: string } -declare class A { static () : number } -declare class A mixins B, C {} -declare type A = string +declare class A1 {} +declare class A1 extends B { x: number } +declare class A1 { static foo(): number, static x : string } +declare class A1 { static [ indexer: number]: string } +declare class A1 { static () : number } +declare class A1 mixins B, C {} +declare type A2 = string declare type T = { [k:string]: U } -declare interface I { foo: string } -declare interface I { foo: T } +declare interface I1 { foo: string } +declare interface I2 { foo: T } diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/output.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/output.js index 3be48955c146..3feecb2a9347 100644 --- a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/output.js +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/declare-statements/output.js @@ -10,22 +10,22 @@ /*:: declare function foo(x: number, y: string): void;*/ -/*:: declare class A {}*/ +/*:: declare class A1 {}*/ -/*:: declare class A extends B { x: number }*/ +/*:: declare class A1 extends B { x: number }*/ -/*:: declare class A { static foo(): number, static x : string }*/ +/*:: declare class A1 { static foo(): number, static x : string }*/ -/*:: declare class A { static [ indexer: number]: string }*/ +/*:: declare class A1 { static [ indexer: number]: string }*/ -/*:: declare class A { static () : number }*/ +/*:: declare class A1 { static () : number }*/ -/*:: declare class A mixins B, C {}*/ +/*:: declare class A1 mixins B, C {}*/ -/*:: declare type A = string*/ +/*:: declare type A2 = string*/ /*:: declare type T = { [k:string]: U }*/ -/*:: declare interface I { foo: string }*/ +/*:: declare interface I1 { foo: string }*/ -/*:: declare interface I { foo: T }*/ +/*:: declare interface I2 { foo: T }*/ diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/def-site-variance/input.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/def-site-variance/input.js index eb188c5c908a..9cc374a5d523 100644 --- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/def-site-variance/input.js +++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/def-site-variance/input.js @@ -5,10 +5,10 @@ type T1 = { +p: T } type T2 = { -p: T } type T3 = { +[k:K]: V } type T4 = { -[k:K]: V } -interface I { +p: T } -interface I { -p: T } -interface I { +[k:K]: V } -interface I { -[k:K]: V } +interface I1 { +p: T } +interface I2 { -p: T } +interface I3 { +[k:K]: V } +interface I4 { -[k:K]: V } declare class I { +p: T } declare class I { -p: T } declare class I { +[k:K]: V } diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-declare-statements/input.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-declare-statements/input.js index 75b24828392c..10cce21e41f8 100644 --- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-declare-statements/input.js +++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-declare-statements/input.js @@ -4,14 +4,14 @@ declare function foo(): void declare function foo(): void; declare function foo(): void; declare function foo(x: number, y: string): void; -declare class A {} -declare class A extends B { x: number } -declare class A { static foo(): number; static x : string } -declare class A { static [ indexer: number]: string } -declare class A { static () : number } -declare class A mixins B, C {} -declare type A = string +declare class A1 {} +declare class A1 extends B { x: number } +declare class A1 { static foo(): number; static x : string } +declare class A1 { static [ indexer: number]: string } +declare class A1 { static () : number } +declare class A1 mixins B, C {} +declare type A2 = string declare type T = { [k:string]: U } -declare interface I { foo: string } -declare interface I { foo: T } +declare interface I1 { foo: string } +declare interface I2 { foo: T } declare module.exports: string; diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-interfaces-module-and-script/input.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-interfaces-module-and-script/input.js index 2e37dfaf618d..1ee5de6c9ea3 100644 --- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-interfaces-module-and-script/input.js +++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-interfaces-module-and-script/input.js @@ -1,7 +1,7 @@ -interface A {} -interface A extends B {} -interface A extends B, C {} -interface A { foo: () => number; } +interface A1 {} +interface A2 extends B {} +interface A3 extends B, C {} +interface A4 { foo: () => number; } interface Dictionary { [index: string]: string; length: number; } class Foo implements Bar {} class Foo2 extends Bar implements Bat, Man {} diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-iterator/input.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-iterator/input.js index 741c23987d23..7a1d4011b35a 100644 --- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-iterator/input.js +++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-iterator/input.js @@ -6,10 +6,10 @@ declare class A { @@asyncIterator(): Iterator; } -interface A { +interface A1 { @@iterator(): Iterator; } -interface A { +interface A2 { @@asyncIterator(): Iterator; } diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/input.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/input.mjs new file mode 100644 index 000000000000..d2e9958f6aaf --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/input.mjs @@ -0,0 +1,4 @@ +function f(): void; +function f(): void { +} +export { f } \ No newline at end of file diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/options.json b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/options.json new file mode 100644 index 000000000000..d5e8a7e4201b --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/options.json @@ -0,0 +1,4 @@ +{ + "plugins": ["transform-typescript"], + "sourceType": "module" +} diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/output.mjs b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/output.mjs new file mode 100644 index 000000000000..a7997dca3a66 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/function/overloads-exports/output.mjs @@ -0,0 +1,3 @@ +function f() {} + +export { f };