From f35d41809ee9b64436dd780f18107e6d61827d4e Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 14 Jun 2019 00:05:59 +0800 Subject: [PATCH 1/4] flow BigIntLiteralTypeAnnotation --- packages/babel-parser/src/plugins/flow.js | 31 +++++++++++++++------ scripts/tests/flow/flow_tests_whitelist.txt | 9 ------ 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index e9b4cc32c37f..54fc6171d3e2 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1352,16 +1352,25 @@ export default (superClass: Class): Class => case tt.plusMin: if (this.state.value === "-") { this.next(); - if (!this.match(tt.num)) { - this.unexpected(null, `Unexpected token, expected "number"`); + if (this.match(tt.num)) { + return this.parseLiteral( + -this.state.value, + "NumberLiteralTypeAnnotation", + node.start, + node.loc.start, + ); } - return this.parseLiteral( - -this.state.value, - "NumberLiteralTypeAnnotation", - node.start, - node.loc.start, - ); + if (this.match(tt.bigint)) { + return this.parseLiteral( + -this.state.value, + "BigIntLiteralTypeAnnotation", + node.start, + node.loc.start, + ); + } + + this.unexpected(null, `Unexpected token, expected "number"`); } this.unexpected(); @@ -1371,6 +1380,12 @@ export default (superClass: Class): Class => "NumberLiteralTypeAnnotation", ); + case tt.bigint: + return this.parseLiteral( + this.state.value, + "BigIntLiteralTypeAnnotation", + ); + case tt._void: this.next(); return this.finishNode(node, "VoidTypeAnnotation"); diff --git a/scripts/tests/flow/flow_tests_whitelist.txt b/scripts/tests/flow/flow_tests_whitelist.txt index 81758912b0f4..e91f836e3425 100644 --- a/scripts/tests/flow/flow_tests_whitelist.txt +++ b/scripts/tests/flow/flow_tests_whitelist.txt @@ -27,15 +27,6 @@ private_class_properties/getter_duplicate.js private_class_properties/setter_and_field.js private_class_properties/setter_duplicate.js types/member/reserved_words.js -types/bigint_literal/migrated_0000.js -types/bigint_literal/migrated_0002.js -types/bigint_literal/migrated_0003.js -types/bigint_literal/migrated_0004.js -types/bigint_literal/migrated_0005.js -types/bigint_literal/migrated_0006.js -types/bigint_literal/migrated_0007.js -types/bigint_literal/migrated_0008.js -types/bigint_literal/migrated_0009.js class_method_kinds/polymorphic_getter.js numbers/underscored_bin.js numbers/underscored_float.js From e1844e626e8fdc76361253fc2018793f26ef9f6e Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 14 Jun 2019 00:11:40 +0800 Subject: [PATCH 2/4] numericSeparator for flow test plugins --- scripts/tests/flow/flow_tests_whitelist.txt | 6 ------ scripts/tests/flow/run_babel_parser_flow_tests.js | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/scripts/tests/flow/flow_tests_whitelist.txt b/scripts/tests/flow/flow_tests_whitelist.txt index e91f836e3425..971049b662c7 100644 --- a/scripts/tests/flow/flow_tests_whitelist.txt +++ b/scripts/tests/flow/flow_tests_whitelist.txt @@ -28,12 +28,6 @@ private_class_properties/setter_and_field.js private_class_properties/setter_duplicate.js types/member/reserved_words.js class_method_kinds/polymorphic_getter.js -numbers/underscored_bin.js -numbers/underscored_float.js -numbers/underscored_float_whole.js -numbers/underscored_hex.js -numbers/underscored_number.js -numbers/underscored_oct.js ES6/modules/migrated_0020.js export_import_reserved_words/migrated_0003.js export_statements/export_trailing_comma.js diff --git a/scripts/tests/flow/run_babel_parser_flow_tests.js b/scripts/tests/flow/run_babel_parser_flow_tests.js index ffad821ba1d5..f087fb6614e3 100644 --- a/scripts/tests/flow/run_babel_parser_flow_tests.js +++ b/scripts/tests/flow/run_babel_parser_flow_tests.js @@ -117,6 +117,7 @@ const options = { "classPrivateProperties", "classPrivateMethods", "bigInt", + "numericSeparator", ], sourceType: "module", ranges: true, From 77dd93c7b52d3861bd03c3edfaf20a7a22fd54eb Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Fri, 14 Jun 2019 00:44:34 +0800 Subject: [PATCH 3/4] fix flow tuple --- packages/babel-parser/src/plugins/flow.js | 5 ++++- scripts/tests/flow/flow_tests_whitelist.txt | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index 54fc6171d3e2..b543c40a22aa 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1263,7 +1263,10 @@ export default (superClass: Class): Class => }); case tt.bracketL: - return this.flowParseTupleType(); + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; case tt.relational: if (this.state.value === "<") { diff --git a/scripts/tests/flow/flow_tests_whitelist.txt b/scripts/tests/flow/flow_tests_whitelist.txt index 971049b662c7..1c9cc9519f76 100644 --- a/scripts/tests/flow/flow_tests_whitelist.txt +++ b/scripts/tests/flow/flow_tests_whitelist.txt @@ -9,7 +9,6 @@ # Entries should be removed incrementally as the babel parser is improved. JSX_invalid/migrated_0000.js -arrow_function/tuple_return_type.js arrow_function_invalid/migrated_0002.js async_await/migrated_0007.js async_await/migrated_0020.js From 3e3904d671a296f818dde6b7820a5e4663bb09e0 Mon Sep 17 00:00:00 2001 From: Li Hau Tan Date: Fri, 28 Jun 2019 10:16:43 +0800 Subject: [PATCH 4/4] fix code review --- packages/babel-parser/src/plugins/flow.js | 5 ++++- .../flow/literal-types/invalid-number-negative/options.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index b543c40a22aa..54a051b46828 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1373,7 +1373,10 @@ export default (superClass: Class): Class => ); } - this.unexpected(null, `Unexpected token, expected "number"`); + this.unexpected( + null, + `Unexpected token, expected "number" or "bigint"`, + ); } this.unexpected(); diff --git a/packages/babel-parser/test/fixtures/flow/literal-types/invalid-number-negative/options.json b/packages/babel-parser/test/fixtures/flow/literal-types/invalid-number-negative/options.json index 5667a8ffb0c0..d4fadede72f8 100644 --- a/packages/babel-parser/test/fixtures/flow/literal-types/invalid-number-negative/options.json +++ b/packages/babel-parser/test/fixtures/flow/literal-types/invalid-number-negative/options.json @@ -1,3 +1,3 @@ { - "throws": "Unexpected token, expected \"number\" (1:8)" + "throws": "Unexpected token, expected \"number\" or \"bigint\" (1:8)" }