From c2b2aa5b9aa55bc6cea1e07c6ed44afb747d0f8a Mon Sep 17 00:00:00 2001 From: Jens Johansen Date: Fri, 28 Jan 2022 08:54:13 +0000 Subject: [PATCH] [parser] Add beforeSynthetic to Synthetic* Follow-up to https://dart-review.googlesource.com/c/sdk/+/205799 Change-Id: I620bf4548095d0597b89e4b6305c2301bcbed144 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/230242 Reviewed-by: Johnni Winther Reviewed-by: Brian Wilkerson Commit-Queue: Jens Johansen --- pkg/_fe_analyzer_shared/lib/src/scanner/token.dart | 6 ++++++ pkg/analyzer/test/generated/error_parser_test.dart | 2 +- .../error_recovery/issue_38415.crash_dart.expect | 9 +++------ .../issue_38415.crash_dart.intertwined.expect | 5 ++--- .../issue_39058.crash_dart.intertwined.expect | 2 +- .../issue_39058_prime.crash_dart.intertwined.expect | 2 +- .../error_recovery/issue_39060.dart.expect | 8 ++++---- .../error_recovery/issue_39060.dart.intertwined.expect | 4 ++-- .../keyword_named_class_methods.dart.expect | 8 ++++---- .../keyword_named_class_methods.dart.intertwined.expect | 4 ++-- .../keyword_named_top_level_methods.dart.expect | 8 ++++---- ...yword_named_top_level_methods.dart.intertwined.expect | 4 ++-- .../error_recovery/keyword_named_typedefs.dart.expect | 6 +++--- .../keyword_named_typedefs.dart.intertwined.expect | 4 ++-- .../error_recovery/issue_38415.crash_dart.weak.expect | 4 ++-- .../issue_38415.crash_dart.weak.modular.expect | 4 ++-- .../issue_38415.crash_dart.weak.transformed.expect | 4 ++-- .../general/error_recovery/issue_39060.dart.weak.expect | 6 +++--- .../error_recovery/issue_39060.dart.weak.modular.expect | 6 +++--- .../issue_39060.dart.weak.transformed.expect | 6 +++--- .../testcases/rasta/issue_000046.dart.weak.expect | 4 ++-- .../rasta/issue_000046.dart.weak.modular.expect | 4 ++-- .../rasta/issue_000046.dart.weak.outline.expect | 4 ++-- .../rasta/issue_000046.dart.weak.transformed.expect | 4 ++-- 24 files changed, 60 insertions(+), 58 deletions(-) diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart index 0a6ab6cf56e..6573bbcb698 100644 --- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart +++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart @@ -733,6 +733,9 @@ class SyntheticBeginToken extends BeginToken { [CommentToken? precedingComment]) : super(type, offset, precedingComment); + @override + Token? beforeSynthetic; + @override Token copy() => new SyntheticBeginToken(type, offset, copyComments(precedingComments)); @@ -754,6 +757,9 @@ class SyntheticKeywordToken extends KeywordToken { */ SyntheticKeywordToken(Keyword keyword, int offset) : super(keyword, offset); + @override + Token? beforeSynthetic; + @override int get length => 0; diff --git a/pkg/analyzer/test/generated/error_parser_test.dart b/pkg/analyzer/test/generated/error_parser_test.dart index 41a03fcdb2a..70737559ac1 100644 --- a/pkg/analyzer/test/generated/error_parser_test.dart +++ b/pkg/analyzer/test/generated/error_parser_test.dart @@ -1683,9 +1683,9 @@ class Wrong { void test_invalidTypedef() { parseCompilationUnit("typedef var Function(var arg);", errors: [ + expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 7), expectedError(ParserErrorCode.MISSING_IDENTIFIER, 8, 3), expectedError(ParserErrorCode.MISSING_TYPEDEF_PARAMETERS, 8, 3), - expectedError(ParserErrorCode.EXPECTED_TOKEN, 8, 3), expectedError(ParserErrorCode.VAR_RETURN_TYPE, 8, 3), expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 29, 1), ]); diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect index 0b3a01408be..742472b0c68 100644 --- a/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect +++ b/pkg/front_end/parser_testcases/error_recovery/issue_38415.crash_dart.expect @@ -6,11 +6,9 @@ f() { m(T, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) rewriter() listener: handleExpressionStatement(;) notEofOrValue(}, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.expect index f1b7c51de1b..de5b1196ba8 100644 --- a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.expect +++ b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.expect @@ -12,9 +12,9 @@ parser/error_recovery/issue_39060:3:1: Expected '[' before this. } ^ -parser/error_recovery/issue_39060:3:1: Expected ';' after this. -} -^ +parser/error_recovery/issue_39060:2:9: Expected ';' after this. + {s A<}> + ^ beginCompilationUnit(main) beginMetadataStar(main) @@ -49,7 +49,7 @@ beginCompilationUnit(main) endTypeArguments(1, <, >) handleRecoverableError(Message[ExpectedButGot, Expected '[' before this., null, {string: [}], }, }) handleLiteralList(0, [, null, ]) - handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >) handleExpressionStatement(;) endBlock(2, {, }, BlockKind(statement)) endBlockFunctionBody(1, {, ) diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect index c6ddd9b6ed3..bb5e98dee07 100644 --- a/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect +++ b/pkg/front_end/parser_testcases/error_recovery/issue_39060.dart.intertwined.expect @@ -85,8 +85,8 @@ parseUnit(main) rewriter() listener: handleLiteralList(0, [, null, ]) ensureSemicolon(]) - reportRecoverableError([, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) - listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + reportRecoverableError(>, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) + listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], >, >) rewriter() listener: handleExpressionStatement(;) notEofOrValue(}, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect index a281a5c3e45..34b8bbc92f8 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.expect @@ -112,9 +112,9 @@ parser/error_recovery/keyword_named_class_methods:75:3: Expected an identifier, } ^ -parser/error_recovery/keyword_named_class_methods:75:3: Expected ';' after this. - } - ^ +parser/error_recovery/keyword_named_class_methods:74:23: Expected ';' after this. + return do(x-1) + 1; + ^ parser/error_recovery/keyword_named_class_methods:82:7: 'else' can't be used as an identifier because it's a keyword. int else(int x) { @@ -1394,7 +1394,7 @@ beginCompilationUnit(class) handleNoArguments()) handleSend(, )) handleParenthesizedCondition(() - handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;) endDoWhileStatement(do, while, ;) endBlockFunctionBody(3, {, }) endClassMethod(null, int, (, null, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect index 75b6cd7ccbe..9e747120ad3 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart.intertwined.expect @@ -2325,8 +2325,8 @@ parseUnit(class) ensureCloseParen(, () listener: handleParenthesizedCondition(() ensureSemicolon()) - reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) - listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + reportRecoverableError(;, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) + listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;) rewriter() listener: endDoWhileStatement(do, while, ;) notEofOrValue(}, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect index 85b9f180c41..8734745a78f 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.expect @@ -112,9 +112,9 @@ parser/error_recovery/keyword_named_top_level_methods:74:1: Expected an identifi } ^ -parser/error_recovery/keyword_named_top_level_methods:74:1: Expected ';' after this. -} -^ +parser/error_recovery/keyword_named_top_level_methods:73:21: Expected ';' after this. + return do(x-1) + 1; + ^ parser/error_recovery/keyword_named_top_level_methods:81:5: 'else' can't be used as an identifier because it's a keyword. int else(int x) { @@ -1359,7 +1359,7 @@ beginCompilationUnit(int) handleNoArguments()) handleSend(, )) handleParenthesizedCondition(() - handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;) endDoWhileStatement(do, while, ;) endBlockFunctionBody(3, {, }) endTopLevelMethod(int, null, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect index bad4dea292f..385ad93e09c 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_top_level_methods.dart.intertwined.expect @@ -2241,8 +2241,8 @@ parseUnit(int) ensureCloseParen(, () listener: handleParenthesizedCondition(() ensureSemicolon()) - reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) - listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], }, }) + reportRecoverableError(;, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) + listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], ;, ;) rewriter() listener: endDoWhileStatement(do, while, ;) notEofOrValue(}, }) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect index 1f1f6e601a0..f39ac7198e3 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.expect @@ -436,9 +436,9 @@ parser/error_recovery/keyword_named_typedefs:132:14: A typedef needs an explicit typedef void = void Function(); ^ -parser/error_recovery/keyword_named_typedefs:132:14: Expected ';' after this. +parser/error_recovery/keyword_named_typedefs:132:9: Expected ';' after this. typedef void = void Function(); - ^ + ^^^^ parser/error_recovery/keyword_named_typedefs:132:14: Expected a declaration, but got '='. typedef void = void Function(); @@ -2219,7 +2219,7 @@ beginCompilationUnit(typedef) handleRecoverableError(MissingTypedefParameters, =, =) beginFormalParameters((, MemberKind.FunctionTypeAlias) endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias) - handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =) + handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void) endTypedef(typedef, null, ;) endTopLevelDeclaration(=) beginMetadataStar(=) diff --git a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect index 93da896aa4b..68d9dd89f48 100644 --- a/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect +++ b/pkg/front_end/parser_testcases/error_recovery/keyword_named_typedefs.dart.intertwined.expect @@ -3057,8 +3057,8 @@ parseUnit(typedef) listener: beginFormalParameters((, MemberKind.FunctionTypeAlias) listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias) ensureSemicolon()) - reportRecoverableError((, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) - listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], =, =) + reportRecoverableError(void, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}]) + listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], void, void) rewriter() listener: endTypedef(typedef, null, ;) listener: endTopLevelDeclaration(=) diff --git a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect index 75defa5b91e..1a48ce67800 100644 --- a/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect +++ b/pkg/front_end/testcases/general/error_recovery/issue_38415.crash_dart.weak.expect @@ -38,9 +38,9 @@ library /*isNonNullableByDefault*/; // f() { m(T +// ^ // import self as self; diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.modular.expect b/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.modular.expect index a49ea7c9222..2504ef6878a 100644 --- a/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.modular.expect @@ -22,9 +22,9 @@ library; // } // ^ // -// pkg/front_end/testcases/general/error_recovery/issue_39060.dart:4:1: Error: Expected ';' after this. -// } -// ^ +// pkg/front_end/testcases/general/error_recovery/issue_39060.dart:3:9: Error: Expected ';' after this. +// {s A<}> +// ^ // import self as self; diff --git a/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.transformed.expect index f0e2ebdbb4c..3684ba368d1 100644 --- a/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/error_recovery/issue_39060.dart.weak.transformed.expect @@ -22,9 +22,9 @@ library; // } // ^ // -// pkg/front_end/testcases/general/error_recovery/issue_39060.dart:4:1: Error: Expected ';' after this. -// } -// ^ +// pkg/front_end/testcases/general/error_recovery/issue_39060.dart:3:9: Error: Expected ';' after this. +// {s A<}> +// ^ // import self as self; import "dart:core" as core; diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.expect index 4625b853fc7..77f4768d8cc 100644 --- a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.expect +++ b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.expect @@ -6,9 +6,9 @@ library; // C c = new Object)(); // ^^^^^^ // -// pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected ';' after this. +// pkg/front_end/testcases/rasta/issue_000046.dart:6:13: Error: Expected ';' after this. // C c = new Object)(); -// ^ +// ^^^^^^ // // pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected a class member, but got ')'. // C c = new Object)(); diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.modular.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.modular.expect index 4625b853fc7..77f4768d8cc 100644 --- a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.modular.expect +++ b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.modular.expect @@ -6,9 +6,9 @@ library; // C c = new Object)(); // ^^^^^^ // -// pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected ';' after this. +// pkg/front_end/testcases/rasta/issue_000046.dart:6:13: Error: Expected ';' after this. // C c = new Object)(); -// ^ +// ^^^^^^ // // pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected a class member, but got ')'. // C c = new Object)(); diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.outline.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.outline.expect index 204c7a91e5d..ef6529efd59 100644 --- a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.outline.expect +++ b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.outline.expect @@ -6,9 +6,9 @@ library; // C c = new Object)(); // ^^^^^^ // -// pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected ';' after this. +// pkg/front_end/testcases/rasta/issue_000046.dart:6:13: Error: Expected ';' after this. // C c = new Object)(); -// ^ +// ^^^^^^ // // pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected a class member, but got ')'. // C c = new Object)(); diff --git a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.transformed.expect b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.transformed.expect index 4625b853fc7..77f4768d8cc 100644 --- a/pkg/front_end/testcases/rasta/issue_000046.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/rasta/issue_000046.dart.weak.transformed.expect @@ -6,9 +6,9 @@ library; // C c = new Object)(); // ^^^^^^ // -// pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected ';' after this. +// pkg/front_end/testcases/rasta/issue_000046.dart:6:13: Error: Expected ';' after this. // C c = new Object)(); -// ^ +// ^^^^^^ // // pkg/front_end/testcases/rasta/issue_000046.dart:6:19: Error: Expected a class member, but got ')'. // C c = new Object)();