[parser/scanner] Remove ScannerConfig `enableNonNullable`
Change-Id: If6bfbb65a02ac1a4f5708ab9e8c4d66c19ecff86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/403984
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index dbc8460f..6985248 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -1897,44 +1897,6 @@
}
}
- /// Check if [token] is the usage of 'required' in a formal parameter in a
- /// context where it's not legal (i.e. in non-nnbd-mode).
- bool _isUseOfRequiredInNonNNBD(Token token) {
- if (token.next is StringToken && token.next!.value() == "required") {
- // Possible recovery: Figure out if we're in a situation like
- // required covariant? <type> name
- // (in non-nnbd-mode) where the required modifier is not legal and thus
- // would normally be parsed as the type.
- token = token.next!;
- Token next = token.next!;
- // Skip modifiers.
- while (next.isModifier) {
- token = next;
- next = next.next!;
- }
- // Parse the (potential) new type.
- TypeInfo typeInfoAlternative = computeType(
- token,
- /* required = */ false,
- /* inDeclaration = */ true,
- );
- token = typeInfoAlternative.skipType(token);
- next = token.next!;
-
- // We've essentially ignored the 'required' at this point.
- // `token` is (in the good state) the last token of the type,
- // `next` is (in the good state) the name;
- // Are we in a 'good' state?
- if (typeInfoAlternative != noType &&
- next.isIdentifier &&
- (next.next!.isA(TokenType.COMMA) ||
- next.next!.isA(TokenType.CLOSE_CURLY_BRACKET))) {
- return true;
- }
- }
- return false;
- }
-
/// ```
/// normalFormalParameter:
/// functionFormalParameter |
@@ -1959,13 +1921,6 @@
token = parseMetadataStar(token);
Token? skippedNonRequiredRequired;
- if (_isUseOfRequiredInNonNNBD(token)) {
- skippedNonRequiredRequired = token.next!;
- reportRecoverableErrorWithToken(skippedNonRequiredRequired,
- codes.templateUnexpectedModifierInNonNnbd);
- token = token.next!;
- }
-
Token next = token.next!;
Token start = next;
@@ -3419,42 +3374,6 @@
return parseTopLevelMemberImpl(token).next!;
}
- /// Check if [token] is the usage of 'late' before a field declaration in a
- /// context where it's not legal (i.e. in non-nnbd-mode).
- bool _isUseOfLateInNonNNBD(Token token) {
- if (token is StringToken && token.value() == "late") {
- // Possible recovery: Figure out if we're in a situation like
- // late final? <type>/var/const name [...]
- // (in non-nnbd-mode) where the late modifier is not legal and thus would
- // normally be parsed as the type.
- Token next = token.next!;
- // Skip modifiers.
- while (next.isModifier) {
- token = next;
- next = next.next!;
- }
- // Parse the (potential) new type.
- TypeInfo typeInfoAlternative = computeType(
- token,
- /* required = */ false,
- /* inDeclaration = */ true,
- );
- token = typeInfoAlternative.skipType(token);
- next = token.next!;
-
- // We've essentially ignored the 'late' at this point.
- // `token` is (in the good state) the last token of the type,
- // `next` is (in the good state) the name;
- // Are we in a 'good' state?
- if (typeInfoAlternative != noType &&
- next.isIdentifier &&
- indicatesMethodOrField(next.next!)) {
- return true;
- }
- }
- return false;
- }
-
Token parseTopLevelMemberImpl(Token token) {
Token beforeStart = token;
Token next = token.next!;
@@ -3462,15 +3381,6 @@
Token? skippedNonLateLate;
- if (_isUseOfLateInNonNNBD(next)) {
- skippedNonLateLate = next;
- reportRecoverableErrorWithToken(
- skippedNonLateLate, codes.templateUnexpectedModifierInNonNnbd);
- token = token.next!;
- beforeStart = token;
- next = token.next!;
- }
-
Token? externalToken;
Token? augmentToken;
Token? lateToken;
@@ -4507,14 +4417,6 @@
Token? skippedNonLateLate;
- if (_isUseOfLateInNonNNBD(token.next!)) {
- skippedNonLateLate = token.next!;
- reportRecoverableErrorWithToken(
- skippedNonLateLate, codes.templateUnexpectedModifierInNonNnbd);
- token = token.next!;
- beforeStart = token;
- }
-
Token? covariantToken;
Token? abstractToken;
Token? augmentToken;
@@ -8149,24 +8051,6 @@
Token parseExpressionStatementOrDeclarationAfterModifiers(Token beforeType,
Token start, Token? lateToken, Token? varFinalOrConst, TypeInfo? typeInfo,
[ForPartsContext? forPartsContext]) {
- // In simple cases check for bad 'late' modifier in non-nnbd-mode.
- if (typeInfo == null &&
- lateToken == null &&
- varFinalOrConst == null &&
- beforeType == start &&
- _isUseOfLateInNonNNBD(beforeType.next!)) {
- lateToken = beforeType.next!;
- reportRecoverableErrorWithToken(
- lateToken, codes.templateUnexpectedModifierInNonNnbd);
- beforeType = start = beforeType.next!;
-
- // The below doesn't parse modifiers, so we need to do it here.
- ModifierContext context = new ModifierContext(this);
- beforeType =
- start = context.parseVariableDeclarationModifiers(beforeType);
- varFinalOrConst = context.varFinalOrConst;
- }
-
if (allowPatterns &&
varFinalOrConst != null &&
(varFinalOrConst.isA(Keyword.VAR) ||
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
index 4b3481b..f62ea6b 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart
@@ -73,10 +73,6 @@
/// based upon the specified language version.
final LanguageVersionChanged? languageVersionChanged;
- /// Experimental flag for enabling scanning of NNBD tokens
- /// such as 'required' and 'late'.
- bool _enableNonNullable = false;
-
/// Experimental flag for enabling scanning of `>>>`.
/// See https://github.com/dart-lang/language/issues/61
/// and https://github.com/dart-lang/language/issues/60
@@ -162,7 +158,6 @@
allowLazyStrings = true {
this.tail = this.tokens;
this.errorTail = this.tokens;
- this._enableNonNullable = copyFrom._enableNonNullable;
this._enableTripleShift = copyFrom._enableTripleShift;
this.tokenStart = copyFrom.tokenStart;
this.groupingStack = copyFrom.groupingStack;
@@ -171,7 +166,6 @@
@override
set configuration(ScannerConfiguration? config) {
if (config != null) {
- _enableNonNullable = config.enableNonNullable;
_enableTripleShift = config.enableTripleShift;
_forAugmentationLibrary = config.forAugmentationLibrary;
}
@@ -1048,11 +1042,9 @@
$EQ, TokenType.QUESTION_QUESTION_EQ, TokenType.QUESTION_QUESTION);
} else if (next == $PERIOD) {
next = advance();
- if (_enableNonNullable) {
- if ($PERIOD == next) {
- appendPrecedenceToken(TokenType.QUESTION_PERIOD_PERIOD);
- return advance();
- }
+ if ($PERIOD == next) {
+ appendPrecedenceToken(TokenType.QUESTION_PERIOD_PERIOD);
+ return advance();
}
appendPrecedenceToken(TokenType.QUESTION_PERIOD);
return next;
@@ -1572,10 +1564,6 @@
if (languageVersionChanged != null) {
// TODO(danrubel): make this required and remove the languageVersion field
languageVersionChanged!(this, languageVersion);
- } else {
- // TODO(danrubel): remove this hack and require listener to update
- // the scanner's configuration.
- configuration = ScannerConfiguration.classic;
}
if (includeComments) {
_appendToCommentStream(languageVersion);
@@ -1740,10 +1728,6 @@
if (keyword == null) {
return tokenizeIdentifier(next, start, allowDollar);
}
- if (!_enableNonNullable &&
- (keyword == Keyword.LATE || keyword == Keyword.REQUIRED)) {
- return tokenizeIdentifier(next, start, allowDollar);
- }
if (!_forAugmentationLibrary && keyword == Keyword.AUGMENT) {
return tokenizeIdentifier(next, start, allowDollar);
}
@@ -2160,13 +2144,7 @@
/// [ScannerConfiguration] contains information for configuring which tokens
/// the scanner produces based upon the Dart language level.
class ScannerConfiguration {
- static const ScannerConfiguration classic = const ScannerConfiguration();
- static const ScannerConfiguration nonNullable =
- const ScannerConfiguration(enableNonNullable: true);
-
- /// Experimental flag for enabling scanning of NNBD tokens
- /// such as 'required' and 'late'
- final bool enableNonNullable;
+ static const ScannerConfiguration nonNullable = const ScannerConfiguration();
/// Experimental flag for enabling scanning of `>>>`.
/// See https://github.com/dart-lang/language/issues/61
@@ -2177,7 +2155,6 @@
final bool forAugmentationLibrary;
const ScannerConfiguration({
- this.enableNonNullable = false,
this.enableTripleShift = false,
this.forAugmentationLibrary = false,
});
diff --git a/pkg/_fe_analyzer_shared/test/macros/code_optimizer_test.dart b/pkg/_fe_analyzer_shared/test/macros/code_optimizer_test.dart
index 0be2a03..60ad5c1 100644
--- a/pkg/_fe_analyzer_shared/test/macros/code_optimizer_test.dart
+++ b/pkg/_fe_analyzer_shared/test/macros/code_optimizer_test.dart
@@ -740,7 +740,6 @@
code,
libraryDeclarationNames: libraryDeclarationNames,
scannerConfiguration: ScannerConfiguration(
- enableNonNullable: true,
forAugmentationLibrary: true,
),
throwIfHasErrors: throwIfHasErrors,
diff --git a/pkg/_fe_analyzer_shared/test/scanner_benchmark.dart b/pkg/_fe_analyzer_shared/test/scanner_benchmark.dart
index d2694a8..c6b9abb 100644
--- a/pkg/_fe_analyzer_shared/test/scanner_benchmark.dart
+++ b/pkg/_fe_analyzer_shared/test/scanner_benchmark.dart
@@ -53,7 +53,6 @@
hasErrors = scanString(
content,
configuration: new ScannerConfiguration(
- enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
@@ -65,7 +64,6 @@
hasErrors = scan(
contentBytes,
configuration: new ScannerConfiguration(
- enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
@@ -78,7 +76,6 @@
hasErrors = scan(
tmp,
configuration: new ScannerConfiguration(
- enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
diff --git a/pkg/analyzer/lib/src/dart/scanner/scanner.dart b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
index 99d3b17..4e9757e 100644
--- a/pkg/analyzer/lib/src/dart/scanner/scanner.dart
+++ b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
@@ -200,7 +200,6 @@
? fasta.ScannerConfiguration()
: fasta.ScannerConfiguration(
enableTripleShift: featureSet.isEnabled(Feature.triple_shift),
- enableNonNullable: featureSet.isEnabled(Feature.non_nullable),
forAugmentationLibrary: featureSet.isEnabled(Feature.macros),
);
}
diff --git a/pkg/analyzer/test/generated/parser_test_base.dart b/pkg/analyzer/test/generated/parser_test_base.dart
index 17e1f3e..9c16e8e 100644
--- a/pkg/analyzer/test/generated/parser_test_base.dart
+++ b/pkg/analyzer/test/generated/parser_test_base.dart
@@ -257,10 +257,7 @@
var languageVersion = LibraryLanguageVersion(
package: ExperimentStatus.currentVersion, override: null);
var result = scanString(content,
- configuration: featureSet.isEnabled(Feature.non_nullable)
- ? ScannerConfiguration.nonNullable
- : ScannerConfiguration.classic,
- includeComments: true,
+ configuration: ScannerConfiguration.nonNullable, includeComments: true,
languageVersionChanged: (scanner, overrideVersion) {
languageVersion = LibraryLanguageVersion(
package: ExperimentStatus.currentVersion,
diff --git a/pkg/front_end/lib/src/base/incremental_compiler.dart b/pkg/front_end/lib/src/base/incremental_compiler.dart
index fea1ed6..746be2d 100644
--- a/pkg/front_end/lib/src/base/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/base/incremental_compiler.dart
@@ -1232,7 +1232,6 @@
return null;
}
ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableNonNullable: true /* can't be disabled */,
enableTripleShift:
/* should this be on the library? */
/* this is effectively what the constant evaluator does */
diff --git a/pkg/front_end/lib/src/kernel/macro/macro.dart b/pkg/front_end/lib/src/kernel/macro/macro.dart
index 4cb3207..b6019ee 100644
--- a/pkg/front_end/lib/src/kernel/macro/macro.dart
+++ b/pkg/front_end/lib/src/kernel/macro/macro.dart
@@ -1355,9 +1355,7 @@
ScannerResult scannerResult = scan(sourceUtf8,
configuration: new ScannerConfiguration(
- enableNonNullable: true,
- enableTripleShift: true,
- forAugmentationLibrary: true));
+ enableTripleShift: true, forAugmentationLibrary: true));
_sourceLoader.target.addSourceInformation(augmentationImportUri,
augmentationFileUri, scannerResult.lineStarts, sourceUtf8);
for (Uri intermediateAugmentationUri in intermediateAugmentationUris) {
diff --git a/pkg/front_end/lib/src/source/source_loader.dart b/pkg/front_end/lib/src/source/source_loader.dart
index d73c8e9..7d2dc9f 100644
--- a/pkg/front_end/lib/src/source/source_loader.dart
+++ b/pkg/front_end/lib/src/source/source_loader.dart
@@ -1051,10 +1051,6 @@
ExperimentalFlag.tripleShift,
compilationUnit.importUri,
compilationUnit.packageLanguageVersion.version),
- enableNonNullable: target.isExperimentEnabledInLibraryByVersion(
- ExperimentalFlag.nonNullable,
- compilationUnit.importUri,
- compilationUnit.packageLanguageVersion.version),
forAugmentationLibrary: compilationUnit.forAugmentationLibrary),
languageVersionChanged:
(Scanner scanner, LanguageVersionToken version) {
@@ -1066,8 +1062,7 @@
}
scanner.configuration = new ScannerConfiguration(
enableTripleShift:
- compilationUnit.libraryFeatures.tripleShift.isEnabled,
- enableNonNullable: true);
+ compilationUnit.libraryFeatures.tripleShift.isEnabled);
}, allowLazyStrings: allowLazyStrings);
Token token = result.tokens;
if (!suppressLexicalErrors) {
diff --git a/pkg/front_end/lib/src/util/import_export_etc_helper.dart b/pkg/front_end/lib/src/util/import_export_etc_helper.dart
index a429c46..07d934f 100644
--- a/pkg/front_end/lib/src/util/import_export_etc_helper.dart
+++ b/pkg/front_end/lib/src/util/import_export_etc_helper.dart
@@ -13,7 +13,6 @@
new ImportExportPartLibraryHelperVisitor();
getAST(
rawBytes,
- enableNonNullable: true,
enableTripleShift: true,
includeBody: false,
includeComments: false,
diff --git a/pkg/front_end/lib/src/util/outline_extractor.dart b/pkg/front_end/lib/src/util/outline_extractor.dart
index c1cdd78..0a31ca7 100644
--- a/pkg/front_end/lib/src/util/outline_extractor.dart
+++ b/pkg/front_end/lib/src/util/outline_extractor.dart
@@ -134,8 +134,8 @@
await fileSystem.entityForUri(fileUri).readAsBytes();
// TODO: Support updating the configuration; also default it to match
// the package version.
- final ScannerConfiguration configuration = new ScannerConfiguration(
- enableNonNullable: true, enableTripleShift: true);
+ final ScannerConfiguration configuration =
+ new ScannerConfiguration(enableTripleShift: true);
textualOutlineStopwatch.start();
final String? outlined =
textualOutline(bytes, configuration, enablePatterns: true);
@@ -145,7 +145,6 @@
getAstStopwatch.start();
List<Token> languageVersionsSeen = [];
final ParserAstNode ast = getAST(bytes2,
- enableNonNullable: configuration.enableNonNullable,
enableTripleShift: configuration.enableTripleShift,
languageVersionsSeen: languageVersionsSeen);
getAstStopwatch.stop();
diff --git a/pkg/front_end/lib/src/util/parser_ast.dart b/pkg/front_end/lib/src/util/parser_ast.dart
index 77aeeee..be798f3 100644
--- a/pkg/front_end/lib/src/util/parser_ast.dart
+++ b/pkg/front_end/lib/src/util/parser_ast.dart
@@ -28,15 +28,13 @@
Uint8List rawBytes, {
bool includeBody = true,
bool includeComments = false,
- bool enableNonNullable = false,
bool enableTripleShift = false,
bool allowPatterns = false,
List<Token>? languageVersionsSeen,
List<int>? lineStarts,
}) {
- ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableNonNullable: enableNonNullable,
- enableTripleShift: enableTripleShift);
+ ScannerConfiguration scannerConfiguration =
+ new ScannerConfiguration(enableTripleShift: enableTripleShift);
Utf8BytesScanner scanner = new Utf8BytesScanner(
rawBytes,
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_39326.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_39326.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_2.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_2.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_3.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_3.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40267_conditional_4.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40267_conditional_4.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.expect
similarity index 76%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.expect
index 6ac7949..a846e0d 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.expect
@@ -1,7 +1,30 @@
+Problems reported:
+
+parser/also-nnbd/issue_40288:1:7: Can't use 'late' as a name here.
+class late {
+ ^^^^
+
+parser/also-nnbd/issue_40288:5:7: Can't use 'required' as a name here.
+class required {
+ ^^^^^^^^
+
+parser/also-nnbd/issue_40288:10:8: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ late l = late();
+ ^
+
+parser/also-nnbd/issue_40288:11:3: Can't have modifier 'required' here.
+ required r = required();
+ ^^^^^^^^
+
+parser/also-nnbd/issue_40288:11:12: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ required r = required();
+ ^
+
beginCompilationUnit(class)
beginMetadataStar(class)
endMetadataStar(0)
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
handleIdentifier(late, classOrMixinDeclaration)
handleNoTypeVariables({)
beginClassDeclaration(class, null, null, null, null, null, null, null, null, late)
@@ -33,6 +56,7 @@
beginMetadataStar(class)
endMetadataStar(0)
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
handleIdentifier(required, classOrMixinDeclaration)
handleNoTypeVariables({)
beginClassDeclaration(class, null, null, null, null, null, null, null, null, required)
@@ -76,10 +100,9 @@
beginMetadataStar(late)
endMetadataStar(0)
beginMember()
- beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
- handleIdentifier(late, typeReference)
- handleNoTypeArguments(l)
- handleType(late, null)
+ beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, {)
+ handleRecoverableError(MissingConstFinalVarOrType, l, l)
+ handleNoType(late)
handleIdentifier(l, fieldDeclaration)
beginFieldInitializer(=)
handleIdentifier(late, expression)
@@ -88,15 +111,15 @@
endArguments(0, (, ))
handleSend(late, ))
endFieldInitializer(=, ))
- endClassFields(null, null, null, null, null, null, null, 1, late, ;)
+ endClassFields(null, null, null, null, null, late, null, 1, late, ;)
endMember()
beginMetadataStar(required)
endMetadataStar(0)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'required' here., Try removing 'required'., {lexeme: required}], required, required)
beginMember()
beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
- handleIdentifier(required, typeReference)
- handleNoTypeArguments(r)
- handleType(required, null)
+ handleRecoverableError(MissingConstFinalVarOrType, r, r)
+ handleNoType(required)
handleIdentifier(r, fieldDeclaration)
beginFieldInitializer(=)
handleIdentifier(required, expression)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.intertwined.expect
similarity index 88%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.intertwined.expect
index 8a65b25..448eb52 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.intertwined.expect
@@ -10,6 +10,8 @@
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
ensureIdentifier(class, classOrMixinDeclaration)
+ reportRecoverableErrorWithToken(late, Template(BuiltInIdentifierInDeclaration))
+ listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'late' as a name here., null, {lexeme: late}], late, late)
listener: handleIdentifier(late, classOrMixinDeclaration)
listener: handleNoTypeVariables({)
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, late)
@@ -74,6 +76,8 @@
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
ensureIdentifier(class, classOrMixinDeclaration)
+ reportRecoverableErrorWithToken(required, Template(BuiltInIdentifierInDeclaration))
+ listener: handleRecoverableError(Message[BuiltInIdentifierInDeclaration, Can't use 'required' as a name here., null, {lexeme: required}], required, required)
listener: handleIdentifier(required, classOrMixinDeclaration)
listener: handleNoTypeVariables({)
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, required)
@@ -159,24 +163,27 @@
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
listener: beginMember()
- parseFields({, null, null, null, null, null, null, null, {, SimpleType(), l, DeclarationKind.Class, C, false)
- listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
- listener: handleIdentifier(late, typeReference)
- listener: handleNoTypeArguments(l)
- listener: handleType(late, null)
+ isReservedKeyword(=)
+ parseFields({, null, null, null, null, null, late, null, late, NoType(), l, DeclarationKind.Class, C, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, {)
+ reportRecoverableError(l, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, l, l)
+ listener: handleNoType(late)
ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
listener: handleIdentifier(l, fieldDeclaration)
- parseFieldInitializerOpt(l, l, null, null, null, null, null, DeclarationKind.Class, C)
+ parseFieldInitializerOpt(l, l, late, null, null, null, null, DeclarationKind.Class, C)
listener: beginFieldInitializer(=)
parseExpression(=)
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
+ inPlainSync()
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
looksLikeFunctionBody(;)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
+ inPlainSync()
listener: handleIdentifier(late, expression)
listener: handleNoTypeArguments(()
parseArgumentsOpt(late)
@@ -186,19 +193,22 @@
listener: endArguments(0, (, ))
listener: handleSend(late, ))
listener: endFieldInitializer(=, ))
- listener: endClassFields(null, null, null, null, null, null, null, 1, late, ;)
+ listener: endClassFields(null, null, null, null, null, late, null, 1, late, ;)
listener: endMember()
notEofOrValue(}, required)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
+ reportRecoverableErrorWithToken(required, Template(ExtraneousModifier))
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'required' here., Try removing 'required'., {lexeme: required}], required, required)
listener: beginMember()
- parseFields(;, null, null, null, null, null, null, null, ;, SimpleType(), r, DeclarationKind.Class, C, false)
+ isReservedKeyword(=)
+ parseFields(;, null, null, null, null, null, null, null, required, NoType(), r, DeclarationKind.Class, C, false)
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
- listener: handleIdentifier(required, typeReference)
- listener: handleNoTypeArguments(r)
- listener: handleType(required, null)
+ reportRecoverableError(r, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, r, r)
+ listener: handleNoType(required)
ensureIdentifierPotentiallyRecovered(required, fieldDeclaration, false)
listener: handleIdentifier(r, fieldDeclaration)
parseFieldInitializerOpt(r, r, null, null, null, null, null, DeclarationKind.Class, C)
@@ -207,11 +217,13 @@
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
parseUnaryExpression(=, true, ConstantPatternContext.none)
parsePrimary(=, expression, ConstantPatternContext.none)
+ inPlainSync()
parseSendOrFunctionLiteral(=, expression, ConstantPatternContext.none)
looksLikeFunctionBody(;)
parseSend(=, expression, ConstantPatternContext.none)
isNextIdentifier(=)
ensureIdentifier(=, expression)
+ inPlainSync()
listener: handleIdentifier(required, expression)
listener: handleNoTypeArguments(()
parseArgumentsOpt(required)
diff --git a/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.parser.expect
new file mode 100644
index 0000000..c661340
--- /dev/null
+++ b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.parser.expect
@@ -0,0 +1,27 @@
+class late {
+int get g => 1;
+}
+
+class required {
+int get g => 2;
+}
+
+class C {
+late l = late();
+required r = required();
+}
+
+
+class[KeywordToken] late[KeywordToken] {[BeginToken]
+int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] required[KeywordToken] {[BeginToken]
+int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 2[StringToken];[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+late[KeywordToken] l[StringToken] =[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+required[KeywordToken] r[StringToken] =[SimpleToken] required[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.scanner.expect
new file mode 100644
index 0000000..c661340
--- /dev/null
+++ b/pkg/front_end/parser_testcases/also-nnbd/issue_40288.dart.scanner.expect
@@ -0,0 +1,27 @@
+class late {
+int get g => 1;
+}
+
+class required {
+int get g => 2;
+}
+
+class C {
+late l = late();
+required r = required();
+}
+
+
+class[KeywordToken] late[KeywordToken] {[BeginToken]
+int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] required[KeywordToken] {[BeginToken]
+int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 2[StringToken];[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] C[StringToken] {[BeginToken]
+late[KeywordToken] l[StringToken] =[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+required[KeywordToken] r[StringToken] =[SimpleToken] required[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart b/pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/issue_40288_prime.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/issue_40288_prime.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart b/pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart
rename to pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.intertwined.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.intertwined.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.parser.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.parser.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.scanner.expect
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/nullable_type_argument.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/nullable_type_argument.dart.scanner.expect
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart
rename to pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.expect
similarity index 71%
rename from pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.expect
index cb7e1c8..f40774e 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.expect
@@ -1,62 +1,38 @@
Problems reported:
-parser/non-nnbd/use_late_in_non_nnbd:4:1: The modifier 'late' is only available in null safe libraries.
-late int x2;
-^^^^
+parser/also-nnbd/use_late_in_non_nnbd:7:6: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+late x5;
+ ^^
-parser/non-nnbd/use_late_in_non_nnbd:5:1: The modifier 'late' is only available in null safe libraries.
-late List<int> x3;
-^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:6:1: The modifier 'late' is only available in null safe libraries.
-late final int x4;
-^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:8:1: Unexpected token ';'.
+parser/also-nnbd/use_late_in_non_nnbd:8:1: Unexpected token ';'.
; // Meant to confuse so `.next`-ing makes it look like the end of a field.
^
-parser/non-nnbd/use_late_in_non_nnbd:9:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/also-nnbd/use_late_in_non_nnbd:9:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
late;
^^^^
-parser/non-nnbd/use_late_in_non_nnbd:10:1: Unexpected token ';'.
+parser/also-nnbd/use_late_in_non_nnbd:10:1: Unexpected token ';'.
; // Meant to confuse so `.next`-ing makes it look like the end of a field.
^
-parser/non-nnbd/use_late_in_non_nnbd:14:3: The modifier 'late' is only available in null safe libraries.
- late int y2;
- ^^^^
+parser/also-nnbd/use_late_in_non_nnbd:17:8: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ late y5;
+ ^^
-parser/non-nnbd/use_late_in_non_nnbd:15:3: The modifier 'late' is only available in null safe libraries.
- late List<int> y3;
- ^^^^
+parser/also-nnbd/use_late_in_non_nnbd:28:8: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ late z5;
+ ^^
-parser/non-nnbd/use_late_in_non_nnbd:16:3: The modifier 'late' is only available in null safe libraries.
- late final int y4;
- ^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:25:3: The modifier 'late' is only available in null safe libraries.
- late int z2;
- ^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:26:3: The modifier 'late' is only available in null safe libraries.
- late List<int> x3;
- ^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:27:3: The modifier 'late' is only available in null safe libraries.
- late final int z4;
- ^^^^
-
-parser/non-nnbd/use_late_in_non_nnbd:29:3: Expected a class member, but got ';'.
+parser/also-nnbd/use_late_in_non_nnbd:29:3: Expected a class member, but got ';'.
; // Meant to confuse so `.next`-ing makes it look like the end of a field.
^
-parser/non-nnbd/use_late_in_non_nnbd:30:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+parser/also-nnbd/use_late_in_non_nnbd:30:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
late;
^^^^
-parser/non-nnbd/use_late_in_non_nnbd:31:3: Expected a class member, but got ';'.
+parser/also-nnbd/use_late_in_non_nnbd:31:3: Expected a class member, but got ';'.
; // Meant to confuse so `.next`-ing makes it look like the end of a field.
^
@@ -75,20 +51,18 @@
beginMetadataStar(late)
endMetadataStar(0)
beginTopLevelMember(late)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, late)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
handleIdentifier(int, typeReference)
handleNoTypeArguments(x2)
handleType(int, null)
handleIdentifier(x2, topLevelVariableDeclaration)
handleNoFieldInitializer(;)
- endTopLevelFields(null, null, null, null, late, null, 1, int, ;)
+ endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
endTopLevelDeclaration(;)
beginMetadataStar(late)
endMetadataStar(0)
beginTopLevelMember(late)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, late)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
@@ -98,30 +72,28 @@
handleType(List, null)
handleIdentifier(x3, topLevelVariableDeclaration)
handleNoFieldInitializer(;)
- endTopLevelFields(null, null, null, null, late, null, 1, List, ;)
+ endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
endTopLevelDeclaration(;)
beginMetadataStar(late)
endMetadataStar(0)
beginTopLevelMember(late)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, final, late)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, final, ;)
handleIdentifier(int, typeReference)
handleNoTypeArguments(x4)
handleType(int, null)
handleIdentifier(x4, topLevelVariableDeclaration)
handleNoFieldInitializer(;)
- endTopLevelFields(null, null, null, null, late, final, 1, final, ;)
+ endTopLevelFields(null, null, null, null, late, final, 1, late, ;)
endTopLevelDeclaration(;)
beginMetadataStar(late)
endMetadataStar(0)
beginTopLevelMember(late)
- beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ;)
- handleIdentifier(late, typeReference)
- handleNoTypeArguments(x5)
- handleType(late, null)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
+ handleRecoverableError(MissingConstFinalVarOrType, x5, x5)
+ handleNoType(late)
handleIdentifier(x5, topLevelVariableDeclaration)
handleNoFieldInitializer(;)
- endTopLevelFields(null, null, null, null, null, null, 1, late, ;)
+ endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
endTopLevelDeclaration(;)
beginMetadataStar(;)
endMetadataStar(0)
@@ -180,8 +152,7 @@
handleNoVariableInitializer(y1)
endInitializedIdentifier(y1)
endVariablesDeclaration(1, ;)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginMetadataStar(int)
+ beginMetadataStar(late)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(y2)
@@ -192,8 +163,7 @@
handleNoVariableInitializer(y2)
endInitializedIdentifier(y2)
endVariablesDeclaration(1, ;)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginMetadataStar(List)
+ beginMetadataStar(late)
endMetadataStar(0)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
@@ -208,8 +178,7 @@
handleNoVariableInitializer(y3)
endInitializedIdentifier(y3)
endVariablesDeclaration(1, ;)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- beginMetadataStar(int)
+ beginMetadataStar(late)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(y4)
@@ -220,12 +189,11 @@
handleNoVariableInitializer(y4)
endInitializedIdentifier(y4)
endVariablesDeclaration(1, ;)
+ handleRecoverableError(MissingConstFinalVarOrType, y5, y5)
beginMetadataStar(late)
endMetadataStar(0)
- handleIdentifier(late, typeReference)
- handleNoTypeArguments(y5)
- handleType(late, null)
- beginVariablesDeclaration(y5, null, null)
+ handleNoType(late)
+ beginVariablesDeclaration(y5, late, null)
handleIdentifier(y5, localVariableDeclaration)
beginInitializedIdentifier(y5)
handleNoVariableInitializer(y5)
@@ -266,21 +234,19 @@
endMember()
beginMetadataStar(late)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
beginMember()
- beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, late)
+ beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
handleIdentifier(int, typeReference)
handleNoTypeArguments(z2)
handleType(int, null)
handleIdentifier(z2, fieldDeclaration)
handleNoFieldInitializer(;)
- endClassFields(null, null, null, null, null, late, null, 1, int, ;)
+ endClassFields(null, null, null, null, null, late, null, 1, late, ;)
endMember()
beginMetadataStar(late)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
beginMember()
- beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, late)
+ beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(int, typeReference)
@@ -290,30 +256,28 @@
handleType(List, null)
handleIdentifier(x3, fieldDeclaration)
handleNoFieldInitializer(;)
- endClassFields(null, null, null, null, null, late, null, 1, List, ;)
+ endClassFields(null, null, null, null, null, late, null, 1, late, ;)
endMember()
beginMetadataStar(late)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
beginMember()
- beginFields(DeclarationKind.Class, null, null, null, null, null, late, final, late)
+ beginFields(DeclarationKind.Class, null, null, null, null, null, late, final, ;)
handleIdentifier(int, typeReference)
handleNoTypeArguments(z4)
handleType(int, null)
handleIdentifier(z4, fieldDeclaration)
handleNoFieldInitializer(;)
- endClassFields(null, null, null, null, null, late, final, 1, final, ;)
+ endClassFields(null, null, null, null, null, late, final, 1, late, ;)
endMember()
beginMetadataStar(late)
endMetadataStar(0)
beginMember()
- beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
- handleIdentifier(late, typeReference)
- handleNoTypeArguments(z5)
- handleType(late, null)
+ beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
+ handleRecoverableError(MissingConstFinalVarOrType, z5, z5)
+ handleNoType(late)
handleIdentifier(z5, fieldDeclaration)
handleNoFieldInitializer(;)
- endClassFields(null, null, null, null, null, null, null, 1, late, ;)
+ endClassFields(null, null, null, null, null, late, null, 1, late, ;)
endMember()
beginMetadataStar(;)
endMetadataStar(0)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
similarity index 66%
rename from pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
index b42daac..836bda4 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.intertwined.expect
@@ -25,11 +25,8 @@
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(late)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- parseFields(late, null, null, null, null, null, late, null, late, SimpleType(), x2, DeclarationKind.TopLevel, null, false)
- listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, late)
+ parseFields(;, null, null, null, null, null, late, null, late, SimpleType(), x2, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(x2)
listener: handleType(int, null)
@@ -37,7 +34,7 @@
listener: handleIdentifier(x2, topLevelVariableDeclaration)
parseFieldInitializerOpt(x2, x2, late, null, null, null, null, DeclarationKind.TopLevel, null)
listener: handleNoFieldInitializer(;)
- listener: endTopLevelFields(null, null, null, null, late, null, 1, int, ;)
+ listener: endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
listener: endTopLevelDeclaration(;)
parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
parseMetadataStar(;)
@@ -45,11 +42,8 @@
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(late)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- parseFields(late, null, null, null, null, null, late, null, late, SimpleTypeWith1Argument(typeArg: SimpleTypeArgument1()), x3, DeclarationKind.TopLevel, null, false)
- listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, late)
+ parseFields(;, null, null, null, null, null, late, null, late, SimpleTypeWith1Argument(typeArg: SimpleTypeArgument1()), x3, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
@@ -61,7 +55,7 @@
listener: handleIdentifier(x3, topLevelVariableDeclaration)
parseFieldInitializerOpt(x3, x3, late, null, null, null, null, DeclarationKind.TopLevel, null)
listener: handleNoFieldInitializer(;)
- listener: endTopLevelFields(null, null, null, null, late, null, 1, List, ;)
+ listener: endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
listener: endTopLevelDeclaration(;)
parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
parseMetadataStar(;)
@@ -69,13 +63,10 @@
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(late)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
skipOuterPattern(final)
skipObjectPatternRest(int)
- parseFields(late, null, null, null, null, null, late, final, final, SimpleType(), x4, DeclarationKind.TopLevel, null, false)
- listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, final, late)
+ parseFields(;, null, null, null, null, null, late, final, final, SimpleType(), x4, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, final, ;)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(x4)
listener: handleType(int, null)
@@ -83,7 +74,7 @@
listener: handleIdentifier(x4, topLevelVariableDeclaration)
parseFieldInitializerOpt(x4, x4, late, null, null, null, final, DeclarationKind.TopLevel, null)
listener: handleNoFieldInitializer(;)
- listener: endTopLevelFields(null, null, null, null, late, final, 1, final, ;)
+ listener: endTopLevelFields(null, null, null, null, late, final, 1, late, ;)
listener: endTopLevelDeclaration(;)
parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
parseMetadataStar(;)
@@ -91,16 +82,17 @@
listener: endMetadataStar(0)
parseTopLevelMemberImpl(;)
listener: beginTopLevelMember(late)
- parseFields(;, null, null, null, null, null, null, null, ;, SimpleType(), x5, DeclarationKind.TopLevel, null, false)
- listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, ;)
- listener: handleIdentifier(late, typeReference)
- listener: handleNoTypeArguments(x5)
- listener: handleType(late, null)
+ isReservedKeyword(;)
+ parseFields(;, null, null, null, null, null, late, null, late, NoType(), x5, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, late, null, ;)
+ reportRecoverableError(x5, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, x5, x5)
+ listener: handleNoType(late)
ensureIdentifierPotentiallyRecovered(late, topLevelVariableDeclaration, false)
listener: handleIdentifier(x5, topLevelVariableDeclaration)
- parseFieldInitializerOpt(x5, x5, null, null, null, null, null, DeclarationKind.TopLevel, null)
+ parseFieldInitializerOpt(x5, x5, late, null, null, null, null, DeclarationKind.TopLevel, null)
listener: handleNoFieldInitializer(;)
- listener: endTopLevelFields(null, null, null, null, null, null, 1, late, ;)
+ listener: endTopLevelFields(null, null, null, null, late, null, 1, late, ;)
listener: endTopLevelDeclaration(;)
parseTopLevelDeclarationImpl(;, DirectiveContext(DirectiveState.Declarations))
parseMetadataStar(;)
@@ -204,100 +196,95 @@
notEofOrValue(}, late)
parseStatement(;)
parseStatementX(;)
- parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- looksLikeLocalFunction(y2)
- listener: beginMetadataStar(int)
- listener: endMetadataStar(0)
- listener: handleIdentifier(int, typeReference)
- listener: handleNoTypeArguments(y2)
- listener: handleType(int, null)
- listener: beginVariablesDeclaration(y2, late, null)
- parseVariablesDeclarationRest(int, true)
- parseOptionallyInitializedIdentifier(int)
- ensureIdentifier(int, localVariableDeclaration)
- listener: handleIdentifier(y2, localVariableDeclaration)
- listener: beginInitializedIdentifier(y2)
- parseVariableInitializerOpt(y2)
- listener: handleNoVariableInitializer(y2)
- listener: endInitializedIdentifier(y2)
- ensureSemicolon(y2)
- listener: endVariablesDeclaration(1, ;)
+ parseExpressionStatementOrDeclaration(;, null)
+ parseExpressionStatementOrDeclarationAfterModifiers(late, ;, late, null, null, null)
+ looksLikeLocalFunction(y2)
+ listener: beginMetadataStar(late)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y2)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(y2, late, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(y2, localVariableDeclaration)
+ listener: beginInitializedIdentifier(y2)
+ parseVariableInitializerOpt(y2)
+ listener: handleNoVariableInitializer(y2)
+ listener: endInitializedIdentifier(y2)
+ ensureSemicolon(y2)
+ listener: endVariablesDeclaration(1, ;)
notEofOrValue(}, late)
parseStatement(;)
parseStatementX(;)
- parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- looksLikeLocalFunction(y3)
- listener: beginMetadataStar(List)
- listener: endMetadataStar(0)
- listener: handleIdentifier(List, typeReference)
- listener: beginTypeArguments(<)
- listener: handleIdentifier(int, typeReference)
- listener: handleNoTypeArguments(>)
- listener: handleType(int, null)
- listener: endTypeArguments(1, <, >)
- listener: handleType(List, null)
- listener: beginVariablesDeclaration(y3, late, null)
- parseVariablesDeclarationRest(>, true)
- parseOptionallyInitializedIdentifier(>)
- ensureIdentifier(>, localVariableDeclaration)
- listener: handleIdentifier(y3, localVariableDeclaration)
- listener: beginInitializedIdentifier(y3)
- parseVariableInitializerOpt(y3)
- listener: handleNoVariableInitializer(y3)
- listener: endInitializedIdentifier(y3)
- ensureSemicolon(y3)
- listener: endVariablesDeclaration(1, ;)
+ parseExpressionStatementOrDeclaration(;, null)
+ parseExpressionStatementOrDeclarationAfterModifiers(late, ;, late, null, null, null)
+ looksLikeLocalFunction(y3)
+ listener: beginMetadataStar(late)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(>)
+ listener: handleType(int, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ listener: beginVariablesDeclaration(y3, late, null)
+ parseVariablesDeclarationRest(>, true)
+ parseOptionallyInitializedIdentifier(>)
+ ensureIdentifier(>, localVariableDeclaration)
+ listener: handleIdentifier(y3, localVariableDeclaration)
+ listener: beginInitializedIdentifier(y3)
+ parseVariableInitializerOpt(y3)
+ listener: handleNoVariableInitializer(y3)
+ listener: endInitializedIdentifier(y3)
+ ensureSemicolon(y3)
+ listener: endVariablesDeclaration(1, ;)
notEofOrValue(}, late)
parseStatement(;)
parseStatementX(;)
- parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
- looksLikeLocalFunction(y4)
- listener: beginMetadataStar(int)
- listener: endMetadataStar(0)
- listener: handleIdentifier(int, typeReference)
- listener: handleNoTypeArguments(y4)
- listener: handleType(int, null)
- listener: beginVariablesDeclaration(y4, late, final)
- parseVariablesDeclarationRest(int, true)
- parseOptionallyInitializedIdentifier(int)
- ensureIdentifier(int, localVariableDeclaration)
- listener: handleIdentifier(y4, localVariableDeclaration)
- listener: beginInitializedIdentifier(y4)
- parseVariableInitializerOpt(y4)
- listener: handleNoVariableInitializer(y4)
- listener: endInitializedIdentifier(y4)
- ensureSemicolon(y4)
- listener: endVariablesDeclaration(1, ;)
+ parseExpressionStatementOrDeclaration(;, null)
+ parseExpressionStatementOrDeclarationAfterModifiers(final, ;, late, final, null, null)
+ looksLikeLocalFunction(y4)
+ listener: beginMetadataStar(late)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y4)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(y4, late, final)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(y4, localVariableDeclaration)
+ listener: beginInitializedIdentifier(y4)
+ parseVariableInitializerOpt(y4)
+ listener: handleNoVariableInitializer(y4)
+ listener: endInitializedIdentifier(y4)
+ ensureSemicolon(y4)
+ listener: endVariablesDeclaration(1, ;)
notEofOrValue(}, late)
parseStatement(;)
parseStatementX(;)
- parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
- looksLikeLocalFunction(y5)
- listener: beginMetadataStar(late)
- listener: endMetadataStar(0)
- listener: handleIdentifier(late, typeReference)
- listener: handleNoTypeArguments(y5)
- listener: handleType(late, null)
- listener: beginVariablesDeclaration(y5, null, null)
- parseVariablesDeclarationRest(late, true)
- parseOptionallyInitializedIdentifier(late)
- ensureIdentifier(late, localVariableDeclaration)
- listener: handleIdentifier(y5, localVariableDeclaration)
- listener: beginInitializedIdentifier(y5)
- parseVariableInitializerOpt(y5)
- listener: handleNoVariableInitializer(y5)
- listener: endInitializedIdentifier(y5)
- ensureSemicolon(y5)
- listener: endVariablesDeclaration(1, ;)
+ parseExpressionStatementOrDeclaration(;, null)
+ parseExpressionStatementOrDeclarationAfterModifiers(late, ;, late, null, null, null)
+ looksLikeLocalFunction(y5)
+ reportRecoverableError(y5, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, y5, y5)
+ listener: beginMetadataStar(late)
+ listener: endMetadataStar(0)
+ listener: handleNoType(late)
+ listener: beginVariablesDeclaration(y5, late, null)
+ parseVariablesDeclarationRest(late, true)
+ parseOptionallyInitializedIdentifier(late)
+ ensureIdentifier(late, localVariableDeclaration)
+ listener: handleIdentifier(y5, localVariableDeclaration)
+ listener: beginInitializedIdentifier(y5)
+ parseVariableInitializerOpt(y5)
+ listener: handleNoVariableInitializer(y5)
+ listener: endInitializedIdentifier(y5)
+ ensureSemicolon(y5)
+ listener: endVariablesDeclaration(1, ;)
notEofOrValue(}, ;)
parseStatement(;)
parseStatementX(;)
@@ -306,24 +293,27 @@
notEofOrValue(}, late)
parseStatement(;)
parseStatementX(;)
- parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
- looksLikeLocalFunction(late)
- parseExpressionStatement(;)
- parseExpression(;)
- parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
- parseUnaryExpression(;, true, ConstantPatternContext.none)
- parsePrimary(;, expression, ConstantPatternContext.none)
- parseSendOrFunctionLiteral(;, expression, ConstantPatternContext.none)
- parseSend(;, expression, ConstantPatternContext.none)
- isNextIdentifier(;)
- ensureIdentifier(;, expression)
- listener: handleIdentifier(late, expression)
- listener: handleNoTypeArguments(;)
- parseArgumentsOpt(late)
- listener: handleNoArguments(;)
- listener: handleSend(late, late)
- ensureSemicolon(late)
- listener: handleExpressionStatement(late, ;)
+ parseExpressionStatementOrDeclaration(;, null)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, null)
+ looksLikeLocalFunction(late)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(;, true, ConstantPatternContext.none)
+ parsePrimary(;, expression, ConstantPatternContext.none)
+ inPlainSync()
+ parseSendOrFunctionLiteral(;, expression, ConstantPatternContext.none)
+ parseSend(;, expression, ConstantPatternContext.none)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ inPlainSync()
+ listener: handleIdentifier(late, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(late)
+ listener: handleNoArguments(;)
+ listener: handleSend(late, late)
+ ensureSemicolon(late)
+ listener: handleExpressionStatement(late, ;)
notEofOrValue(}, ;)
parseStatement(;)
parseStatementX(;)
@@ -378,12 +368,9 @@
parseMetadataStar(;)
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
listener: beginMember()
- parseFields(late, null, null, null, null, null, late, null, late, SimpleType(), z2, DeclarationKind.Class, Foo, false)
- listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, late)
+ parseFields(;, null, null, null, null, null, late, null, late, SimpleType(), z2, DeclarationKind.Class, Foo, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(z2)
listener: handleType(int, null)
@@ -391,19 +378,16 @@
listener: handleIdentifier(z2, fieldDeclaration)
parseFieldInitializerOpt(z2, z2, late, null, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
- listener: endClassFields(null, null, null, null, null, late, null, 1, int, ;)
+ listener: endClassFields(null, null, null, null, null, late, null, 1, late, ;)
listener: endMember()
notEofOrValue(}, late)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
listener: beginMember()
- parseFields(late, null, null, null, null, null, late, null, late, SimpleTypeWith1Argument(typeArg: SimpleTypeArgument1()), x3, DeclarationKind.Class, Foo, false)
- listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, late)
+ parseFields(;, null, null, null, null, null, late, null, late, SimpleTypeWith1Argument(typeArg: SimpleTypeArgument1()), x3, DeclarationKind.Class, Foo, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
listener: handleIdentifier(int, typeReference)
@@ -415,21 +399,18 @@
listener: handleIdentifier(x3, fieldDeclaration)
parseFieldInitializerOpt(x3, x3, late, null, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
- listener: endClassFields(null, null, null, null, null, late, null, 1, List, ;)
+ listener: endClassFields(null, null, null, null, null, late, null, 1, late, ;)
listener: endMember()
notEofOrValue(}, late)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
- indicatesMethodOrField(;)
- reportRecoverableErrorWithToken(late, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'late' is only available in null safe libraries., null, {lexeme: late}], late, late)
listener: beginMember()
skipOuterPattern(final)
skipObjectPatternRest(int)
- parseFields(late, null, null, null, null, null, late, final, final, SimpleType(), z4, DeclarationKind.Class, Foo, false)
- listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, final, late)
+ parseFields(;, null, null, null, null, null, late, final, final, SimpleType(), z4, DeclarationKind.Class, Foo, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, final, ;)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(z4)
listener: handleType(int, null)
@@ -437,7 +418,7 @@
listener: handleIdentifier(z4, fieldDeclaration)
parseFieldInitializerOpt(z4, z4, late, null, null, null, final, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
- listener: endClassFields(null, null, null, null, null, late, final, 1, final, ;)
+ listener: endClassFields(null, null, null, null, null, late, final, 1, late, ;)
listener: endMember()
notEofOrValue(}, late)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
@@ -445,16 +426,17 @@
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
listener: beginMember()
- parseFields(;, null, null, null, null, null, null, null, ;, SimpleType(), z5, DeclarationKind.Class, Foo, false)
- listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
- listener: handleIdentifier(late, typeReference)
- listener: handleNoTypeArguments(z5)
- listener: handleType(late, null)
+ isReservedKeyword(;)
+ parseFields(;, null, null, null, null, null, late, null, late, NoType(), z5, DeclarationKind.Class, Foo, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, late, null, ;)
+ reportRecoverableError(z5, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, z5, z5)
+ listener: handleNoType(late)
ensureIdentifierPotentiallyRecovered(late, fieldDeclaration, false)
listener: handleIdentifier(z5, fieldDeclaration)
- parseFieldInitializerOpt(z5, z5, null, null, null, null, null, DeclarationKind.Class, Foo)
+ parseFieldInitializerOpt(z5, z5, late, null, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
- listener: endClassFields(null, null, null, null, null, null, null, 1, late, ;)
+ listener: endClassFields(null, null, null, null, null, late, null, 1, late, ;)
listener: endMember()
notEofOrValue(}, ;)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
@@ -473,7 +455,6 @@
listener: beginMetadataStar(late)
listener: endMetadataStar(0)
listener: beginMember()
- isReservedKeyword(;)
parseFields(;, null, null, null, null, null, null, null, ;, NoType(), late, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
reportRecoverableError(late, MissingConstFinalVarOrType)
diff --git a/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.parser.expect
new file mode 100644
index 0000000..5150444
--- /dev/null
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.parser.expect
@@ -0,0 +1,61 @@
+int x1;
+late int x2;
+late List<int> x3;
+late final int x4;
+late x5;
+;
+late;
+;
+
+main(List<String> args) {
+int y1;
+late int y2;
+late List<int> y3;
+late final int y4;
+late y5;
+;
+late;
+;
+}
+
+class Foo {
+int z1;
+late int z2;
+late List<int> x3;
+late final int z4;
+late z5;
+;
+late;
+;
+}
+
+int[StringToken] x1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] x2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] x4[StringToken];[SimpleToken]
+late[KeywordToken] x5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+
+main[StringToken]([BeginToken]List[StringToken]<[BeginToken]String[StringToken]>[SimpleToken] args[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] y1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] y2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] y3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] y4[StringToken];[SimpleToken]
+late[KeywordToken] y5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] Foo[StringToken] {[BeginToken]
+int[StringToken] z1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] z2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] z4[StringToken];[SimpleToken]
+late[KeywordToken] z5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.scanner.expect
new file mode 100644
index 0000000..5150444
--- /dev/null
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_late_in_non_nnbd.dart.scanner.expect
@@ -0,0 +1,61 @@
+int x1;
+late int x2;
+late List<int> x3;
+late final int x4;
+late x5;
+;
+late;
+;
+
+main(List<String> args) {
+int y1;
+late int y2;
+late List<int> y3;
+late final int y4;
+late y5;
+;
+late;
+;
+}
+
+class Foo {
+int z1;
+late int z2;
+late List<int> x3;
+late final int z4;
+late z5;
+;
+late;
+;
+}
+
+int[StringToken] x1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] x2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] x4[StringToken];[SimpleToken]
+late[KeywordToken] x5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+
+main[StringToken]([BeginToken]List[StringToken]<[BeginToken]String[StringToken]>[SimpleToken] args[StringToken])[SimpleToken] {[BeginToken]
+int[StringToken] y1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] y2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] y3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] y4[StringToken];[SimpleToken]
+late[KeywordToken] y5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+}[SimpleToken]
+
+class[KeywordToken] Foo[StringToken] {[BeginToken]
+int[StringToken] z1[StringToken];[SimpleToken]
+late[KeywordToken] int[StringToken] z2[StringToken];[SimpleToken]
+late[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
+late[KeywordToken] final[KeywordToken] int[StringToken] z4[StringToken];[SimpleToken]
+late[KeywordToken] z5[StringToken];[SimpleToken]
+;[SimpleToken]
+late[KeywordToken];[SimpleToken]
+;[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart
similarity index 100%
rename from pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart
rename to pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.expect
similarity index 78%
rename from pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.expect
index ae4eb2bb..b752193 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.expect
@@ -1,17 +1,13 @@
Problems reported:
-parser/non-nnbd/use_required_in_non_nnbd:1:12: The modifier 'required' is only available in null safe libraries.
-void foo1({required int x1}) {
- ^^^^^^^^
+parser/also-nnbd/use_required_in_non_nnbd:9:21: The modifier 'required' was already specified.
+void foo3({required required x3}) {
+ ^^^^^^^^
-parser/non-nnbd/use_required_in_non_nnbd:9:12: The modifier 'required' is only available in null safe libraries.
+parser/also-nnbd/use_required_in_non_nnbd:9:12: Can't have modifier 'required' here.
void foo3({required required x3}) {
^^^^^^^^
-parser/non-nnbd/use_required_in_non_nnbd:14:14: The modifier 'required' is only available in null safe libraries.
- void foo4({required covariant int x4}) {
- ^^^^^^^^
-
beginCompilationUnit(void)
beginMetadataStar(void)
endMetadataStar(0)
@@ -24,14 +20,13 @@
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
- beginFormalParameter(int, MemberKind.TopLevelMethod, required, null, null)
+ beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments(x1)
handleType(int, null)
handleIdentifier(x1, formalParameterDeclaration)
handleFormalParameterWithoutValue(})
- endFormalParameter(null, null, null, x1, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ endFormalParameter(null, null, null, x1, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
handleAsyncModifier(null, null)
@@ -60,13 +55,11 @@
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
- beginFormalParameter(required, MemberKind.TopLevelMethod, null, null, null)
- handleIdentifier(required, typeReference)
- handleNoTypeArguments(x2)
- handleType(required, null)
+ beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
+ handleNoType(required)
handleIdentifier(x2, formalParameterDeclaration)
handleFormalParameterWithoutValue(})
- endFormalParameter(null, null, null, x2, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ endFormalParameter(null, null, null, x2, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
handleAsyncModifier(null, null)
@@ -95,14 +88,13 @@
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
+ handleRecoverableError(Message[DuplicatedModifier, The modifier 'required' was already specified., Try removing all but one occurrence of the modifier., {lexeme: required}], required, required)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'required' here., Try removing 'required'., {lexeme: required}], required, required)
beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
- handleIdentifier(required, typeReference)
- handleNoTypeArguments(x3)
- handleType(required, null)
+ handleNoType(required)
handleIdentifier(x3, formalParameterDeclaration)
handleFormalParameterWithoutValue(})
- endFormalParameter(null, null, null, x3, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ endFormalParameter(null, null, null, x3, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
handleAsyncModifier(null, null)
@@ -143,14 +135,13 @@
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
- handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
- beginFormalParameter(covariant, MemberKind.NonStaticMethod, required, covariant, null)
+ beginFormalParameter(required, MemberKind.NonStaticMethod, required, covariant, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments(x4)
handleType(int, null)
handleIdentifier(x4, formalParameterDeclaration)
handleFormalParameterWithoutValue(})
- endFormalParameter(null, null, null, x4, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+ endFormalParameter(null, null, null, x4, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, }, MemberKind.NonStaticMethod)
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
similarity index 92%
rename from pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
index 65914e6..a2cc0d9 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.intertwined.expect
@@ -25,16 +25,14 @@
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
- reportRecoverableErrorWithToken(required, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
- listener: beginFormalParameter(int, MemberKind.TopLevelMethod, required, null, null)
+ listener: beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(x1)
listener: handleType(int, null)
ensureIdentifier(int, formalParameterDeclaration)
listener: handleIdentifier(x1, formalParameterDeclaration)
listener: handleFormalParameterWithoutValue(})
- listener: endFormalParameter(null, null, null, x1, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ listener: endFormalParameter(null, null, null, x1, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
listener: endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
@@ -108,14 +106,12 @@
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
- listener: beginFormalParameter(required, MemberKind.TopLevelMethod, null, null, null)
- listener: handleIdentifier(required, typeReference)
- listener: handleNoTypeArguments(x2)
- listener: handleType(required, null)
+ listener: beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
+ listener: handleNoType(required)
ensureIdentifier(required, formalParameterDeclaration)
listener: handleIdentifier(x2, formalParameterDeclaration)
listener: handleFormalParameterWithoutValue(})
- listener: endFormalParameter(null, null, null, x2, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ listener: endFormalParameter(null, null, null, x2, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
listener: endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
@@ -189,16 +185,16 @@
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
- reportRecoverableErrorWithToken(required, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
+ reportRecoverableErrorWithToken(required, Template(DuplicatedModifier))
+ listener: handleRecoverableError(Message[DuplicatedModifier, The modifier 'required' was already specified., Try removing all but one occurrence of the modifier., {lexeme: required}], required, required)
+ reportRecoverableErrorWithToken(required, Template(ExtraneousModifier))
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'required' here., Try removing 'required'., {lexeme: required}], required, required)
listener: beginFormalParameter(required, MemberKind.TopLevelMethod, required, null, null)
- listener: handleIdentifier(required, typeReference)
- listener: handleNoTypeArguments(x3)
- listener: handleType(required, null)
+ listener: handleNoType(required)
ensureIdentifier(required, formalParameterDeclaration)
listener: handleIdentifier(x3, formalParameterDeclaration)
listener: handleFormalParameterWithoutValue(})
- listener: endFormalParameter(null, null, null, x3, null, null, FormalParameterKind.optionalNamed, MemberKind.TopLevelMethod)
+ listener: endFormalParameter(null, null, null, x3, null, null, FormalParameterKind.requiredNamed, MemberKind.TopLevelMethod)
listener: endOptionalFormalParameters(1, {, }, MemberKind.TopLevelMethod)
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
@@ -296,16 +292,14 @@
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
- reportRecoverableErrorWithToken(required, Template(UnexpectedModifierInNonNnbd))
- listener: handleRecoverableError(Message[UnexpectedModifierInNonNnbd, The modifier 'required' is only available in null safe libraries., null, {lexeme: required}], required, required)
- listener: beginFormalParameter(covariant, MemberKind.NonStaticMethod, required, covariant, null)
+ listener: beginFormalParameter(required, MemberKind.NonStaticMethod, required, covariant, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(x4)
listener: handleType(int, null)
ensureIdentifier(int, formalParameterDeclaration)
listener: handleIdentifier(x4, formalParameterDeclaration)
listener: handleFormalParameterWithoutValue(})
- listener: endFormalParameter(null, null, null, x4, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
+ listener: endFormalParameter(null, null, null, x4, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, }, MemberKind.NonStaticMethod)
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.parser.expect b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.parser.expect
similarity index 69%
rename from pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.parser.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.parser.expect
index 468262a..bb8bfc5 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.parser.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.parser.expect
@@ -16,20 +16,20 @@
}
}
-void[KeywordToken] foo1[StringToken]([BeginToken]{[BeginToken]required[StringToken] int[StringToken] x1[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo1[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] int[StringToken] x1[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
-void[KeywordToken] foo2[StringToken]([BeginToken]{[BeginToken]required[StringToken] x2[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo2[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] x2[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
-void[KeywordToken] foo3[StringToken]([BeginToken]{[BeginToken]required[StringToken] required[StringToken] x3[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo3[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] required[KeywordToken] x3[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
class[KeywordToken] Foo[StringToken] {[BeginToken]
-void[KeywordToken] foo4[StringToken]([BeginToken]{[BeginToken]required[StringToken] covariant[KeywordToken] int[StringToken] x4[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo4[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] covariant[KeywordToken] int[StringToken] x4[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.scanner.expect b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.scanner.expect
similarity index 69%
rename from pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.scanner.expect
rename to pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.scanner.expect
index 468262a..bb8bfc5 100644
--- a/pkg/front_end/parser_testcases/non-nnbd/use_required_in_non_nnbd.dart.scanner.expect
+++ b/pkg/front_end/parser_testcases/also-nnbd/use_required_in_non_nnbd.dart.scanner.expect
@@ -16,20 +16,20 @@
}
}
-void[KeywordToken] foo1[StringToken]([BeginToken]{[BeginToken]required[StringToken] int[StringToken] x1[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo1[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] int[StringToken] x1[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
-void[KeywordToken] foo2[StringToken]([BeginToken]{[BeginToken]required[StringToken] x2[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo2[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] x2[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
-void[KeywordToken] foo3[StringToken]([BeginToken]{[BeginToken]required[StringToken] required[StringToken] x3[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo3[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] required[KeywordToken] x3[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
class[KeywordToken] Foo[StringToken] {[BeginToken]
-void[KeywordToken] foo4[StringToken]([BeginToken]{[BeginToken]required[StringToken] covariant[KeywordToken] int[StringToken] x4[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
+void[KeywordToken] foo4[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] covariant[KeywordToken] int[StringToken] x4[StringToken]}[SimpleToken])[SimpleToken] {[BeginToken]
print[StringToken]([BeginToken]x[StringToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.parser.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.parser.expect
deleted file mode 100644
index ffd3e65..0000000
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.parser.expect
+++ /dev/null
@@ -1,27 +0,0 @@
-class late {
-int get g => 1;
-}
-
-class required {
-int get g => 2;
-}
-
-class C {
-late l = late();
-required r = required();
-}
-
-
-class[KeywordToken] late[StringToken] {[BeginToken]
-int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] required[StringToken] {[BeginToken]
-int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 2[StringToken];[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] C[StringToken] {[BeginToken]
-late[StringToken] l[StringToken] =[SimpleToken] late[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
-required[StringToken] r[StringToken] =[SimpleToken] required[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
-}[SimpleToken]
-[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.scanner.expect b/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.scanner.expect
deleted file mode 100644
index ffd3e65..0000000
--- a/pkg/front_end/parser_testcases/non-nnbd/issue_40288.dart.scanner.expect
+++ /dev/null
@@ -1,27 +0,0 @@
-class late {
-int get g => 1;
-}
-
-class required {
-int get g => 2;
-}
-
-class C {
-late l = late();
-required r = required();
-}
-
-
-class[KeywordToken] late[StringToken] {[BeginToken]
-int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] required[StringToken] {[BeginToken]
-int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 2[StringToken];[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] C[StringToken] {[BeginToken]
-late[StringToken] l[StringToken] =[SimpleToken] late[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
-required[StringToken] r[StringToken] =[SimpleToken] required[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
-}[SimpleToken]
-[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.parser.expect b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.parser.expect
deleted file mode 100644
index 272afaa..0000000
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.parser.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-int x1;
-late int x2;
-late List<int> x3;
-late final int x4;
-late x5;
-;
-late;
-;
-
-main(List<String> args) {
-int y1;
-late int y2;
-late List<int> y3;
-late final int y4;
-late y5;
-;
-late;
-;
-}
-
-class Foo {
-int z1;
-late int z2;
-late List<int> x3;
-late final int z4;
-late z5;
-;
-late;
-;
-}
-
-int[StringToken] x1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] x2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] x4[StringToken];[SimpleToken]
-late[StringToken] x5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-
-main[StringToken]([BeginToken]List[StringToken]<[BeginToken]String[StringToken]>[SimpleToken] args[StringToken])[SimpleToken] {[BeginToken]
-int[StringToken] y1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] y2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] y3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] y4[StringToken];[SimpleToken]
-late[StringToken] y5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] Foo[StringToken] {[BeginToken]
-int[StringToken] z1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] z2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] z4[StringToken];[SimpleToken]
-late[StringToken] z5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.scanner.expect b/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.scanner.expect
deleted file mode 100644
index 272afaa..0000000
--- a/pkg/front_end/parser_testcases/non-nnbd/use_late_in_non_nnbd.dart.scanner.expect
+++ /dev/null
@@ -1,61 +0,0 @@
-int x1;
-late int x2;
-late List<int> x3;
-late final int x4;
-late x5;
-;
-late;
-;
-
-main(List<String> args) {
-int y1;
-late int y2;
-late List<int> y3;
-late final int y4;
-late y5;
-;
-late;
-;
-}
-
-class Foo {
-int z1;
-late int z2;
-late List<int> x3;
-late final int z4;
-late z5;
-;
-late;
-;
-}
-
-int[StringToken] x1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] x2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] x4[StringToken];[SimpleToken]
-late[StringToken] x5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-
-main[StringToken]([BeginToken]List[StringToken]<[BeginToken]String[StringToken]>[SimpleToken] args[StringToken])[SimpleToken] {[BeginToken]
-int[StringToken] y1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] y2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] y3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] y4[StringToken];[SimpleToken]
-late[StringToken] y5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-}[SimpleToken]
-
-class[KeywordToken] Foo[StringToken] {[BeginToken]
-int[StringToken] z1[StringToken];[SimpleToken]
-late[StringToken] int[StringToken] z2[StringToken];[SimpleToken]
-late[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] x3[StringToken];[SimpleToken]
-late[StringToken] final[KeywordToken] int[StringToken] z4[StringToken];[SimpleToken]
-late[StringToken] z5[StringToken];[SimpleToken]
-;[SimpleToken]
-late[StringToken];[SimpleToken]
-;[SimpleToken]
-}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/test/crashing_test_case_minimizer_impl.dart b/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
index d90f233..d39742f 100644
--- a/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
+++ b/pkg/front_end/test/crashing_test_case_minimizer_impl.dart
@@ -321,8 +321,7 @@
} else {
try {
if (_knownByCompiler(uri!)) {
- String parsedString =
- _getFileAsStringContent(_fs.data[uri]!, _isUriNnbd(uri));
+ String parsedString = _getFileAsStringContent(_fs.data[uri]!);
_fs.data[uri] = utf8.encode(parsedString);
}
} catch (e) {
@@ -557,11 +556,11 @@
if (!uri.toString().endsWith(".dart")) continue;
if (inlinableUri == uri) continue;
final Uint8List? originalBytes = _fs.data[uri];
- if (originalBytes == null || originalBytes.isEmpty) continue;
- CompilationUnitEnd ast = getAST(originalBytes,
- includeBody: false,
- includeComments: false,
- enableNonNullable: _isUriNnbd(uri!));
+ if (uri == null || originalBytes == null || originalBytes.isEmpty) {
+ continue;
+ }
+ CompilationUnitEnd ast =
+ getAST(originalBytes, includeBody: false, includeComments: false);
// Find all imports/exports of this file (if any).
// If finding any:
// * remove all of them, then
@@ -598,10 +597,8 @@
// have a `library` declaration.
// * The file we're inlining has a library declaration.
int offsetOfLast = 0;
- ast = getAST(withoutInlineable,
- includeBody: false,
- includeComments: false,
- enableNonNullable: _isUriNnbd(uri));
+ ast =
+ getAST(withoutInlineable, includeBody: false, includeComments: false);
for (ImportEnd import in ast.getImports()) {
offsetOfLast = max(offsetOfLast, import.semicolon!.offset + 1);
}
@@ -618,15 +615,15 @@
builder.writeCharCode(withoutInlineableString.codeUnitAt(i));
}
builder.write("\n");
- builder.write(utf8.decode(_rewriteImportsExportsToUri(
- inlineData, uri, inlinableUri, _isUriNnbd(inlinableUri))));
+ builder.write(utf8
+ .decode(_rewriteImportsExportsToUri(inlineData, uri, inlinableUri)));
builder.write("\n");
for (int i = offsetOfLast; i < withoutInlineableString.length; i++) {
builder.writeCharCode(withoutInlineableString.codeUnitAt(i));
}
final Uint8List inlinedWithoutChange = utf8.encode(builder.toString());
- if (!_parsesWithoutError(inlinedWithoutChange, _isUriNnbd(uri))) {
+ if (!_parsesWithoutError(inlinedWithoutChange)) {
print("WARNING: Parser error after stuff at ${StackTrace.current}");
}
@@ -658,7 +655,7 @@
}
builder.write("\n");
builder.write(utf8.decode(_rewriteImportsExportsToUri(
- inlineData, uri, inlinableUri, _isUriNnbd(inlinableUri),
+ inlineData, uri, inlinableUri,
convertExportToImport: true)));
builder.write("\n");
for (int i = offsetOfLast; i < withoutInlineableString.length; i++) {
@@ -666,7 +663,7 @@
}
Uint8List inlinedWithChange = utf8.encode(builder.toString());
- if (!_parsesWithoutError(inlinedWithChange, _isUriNnbd(uri))) {
+ if (!_parsesWithoutError(inlinedWithChange)) {
print("WARNING: Parser error after stuff at ${StackTrace.current}");
}
@@ -699,10 +696,10 @@
}
Uint8List _rewriteImportsExportsToUri(
- Uint8List oldData, Uri newUri, Uri oldUri, bool nnbd,
+ Uint8List oldData, Uri newUri, Uri oldUri,
{bool convertExportToImport = false}) {
- CompilationUnitEnd ast = getAST(oldData,
- includeBody: false, includeComments: false, enableNonNullable: nnbd);
+ CompilationUnitEnd ast =
+ getAST(oldData, includeBody: false, includeComments: false);
List<_Replacement> replacements = [];
for (ImportEnd import in ast.getImports()) {
_rewriteImportsExportsToUriInternal(
@@ -1040,10 +1037,7 @@
// Because textual outline doesn't do the right thing for nnbd, only
// replace if it's syntactically valid.
if (candidate.length != _fs.data[uri]!.length &&
- _parsesWithoutError(
- candidate,
- languageVersion >=
- ExperimentalFlag.nonNullable.enabledVersion)) {
+ _parsesWithoutError(candidate)) {
if (await _shouldQuit()) return;
_fs.data[uri] = candidate;
if (!await _crashesOnCompile(initialComponent)) {
@@ -1124,10 +1118,8 @@
List<int> lineStarts = [];
- Token firstToken = parser_suite.scanRawBytes(
- data,
- _isUriNnbd(uri) ? _scannerConfiguration : _scannerConfigurationNonNNBD,
- lineStarts);
+ Token firstToken =
+ parser_suite.scanRawBytes(data, _scannerConfiguration, lineStarts);
int compileTry = 0;
Token? token = firstToken;
@@ -1292,10 +1284,8 @@
if (!uri.toString().endsWith(".dart")) return;
Uint8List data = _fs.data[uri]!;
- CompilationUnitEnd ast = getAST(data,
- includeBody: true,
- includeComments: false,
- enableNonNullable: _isUriNnbd(uri));
+ CompilationUnitEnd ast =
+ getAST(data, includeBody: true, includeComments: false);
_CompilationHelperClass helper = new _CompilationHelperClass(data);
@@ -1694,11 +1684,11 @@
}
Uint8List candidate = _replaceRange(data.replacements, data.originalData);
- if (!_parsesWithoutError(candidate, _isUriNnbd(uri)) &&
- _parsesWithoutError(data.originalData, _isUriNnbd(uri))) {
+ if (!_parsesWithoutError(candidate) &&
+ _parsesWithoutError(data.originalData)) {
print("WARNING: Parser error after stuff at ${StackTrace.current}");
- _parsesWithoutError(candidate, _isUriNnbd(uri));
- _parsesWithoutError(data.originalData, _isUriNnbd(uri));
+ _parsesWithoutError(candidate);
+ _parsesWithoutError(data.originalData);
}
_fs.data[uri] = candidate;
@@ -1743,8 +1733,7 @@
Uint8List candidate = builder.takeBytes();
if (candidate.length == data.length) return;
- if (uri.path.endsWith(".dart") &&
- !_parsesWithoutError(candidate, _isUriNnbd(uri))) {
+ if (uri.path.endsWith(".dart") && !_parsesWithoutError(candidate)) {
print("WARNING: Parser error after stuff at ${StackTrace.current}");
}
@@ -1861,8 +1850,6 @@
ScannerConfiguration _getScannerConfiguration(Version languageVersion) {
return new ScannerConfiguration(
- enableNonNullable:
- languageVersion >= ExperimentalFlag.nonNullable.enabledVersion,
enableTripleShift:
languageVersion >= ExperimentalFlag.tripleShift.enabledVersion);
}
@@ -1915,11 +1902,6 @@
}
}
- bool _isUriNnbd(Uri uri, {bool crashOnFail = true}) {
- return _getLanguageVersion(uri, crashOnFail: crashOnFail) >=
- ExperimentalFlag.nonNullable.enabledVersion;
- }
-
Future<bool> _crashesOnCompile(Component initialComponent) async {
IncrementalCompiler incrementalCompiler;
_gotWantedError = false;
@@ -2134,13 +2116,11 @@
return compilerContext;
}
- String _getFileAsStringContent(Uint8List rawBytes, bool nnbd) {
+ String _getFileAsStringContent(Uint8List rawBytes) {
List<int> lineStarts = [];
- Token firstToken = parser_suite.scanRawBytes(
- rawBytes,
- nnbd ? _scannerConfiguration : _scannerConfigurationNonNNBD,
- lineStarts);
+ Token firstToken =
+ parser_suite.scanRawBytes(rawBytes, _scannerConfiguration, lineStarts);
ParserTestListener parserTestListener = new ParserTestListener(false);
Parser parser = new Parser(parserTestListener,
@@ -2151,9 +2131,9 @@
return parsedString;
}
- bool _parsesWithoutError(Uint8List rawBytes, bool nnbd) {
- Token firstToken = parser_suite.scanRawBytes(rawBytes,
- nnbd ? _scannerConfiguration : _scannerConfigurationNonNNBD, null);
+ bool _parsesWithoutError(Uint8List rawBytes) {
+ Token firstToken =
+ parser_suite.scanRawBytes(rawBytes, _scannerConfiguration, null);
ParserErrorListener parserErrorListener = new ParserErrorListener();
Parser parser = new Parser(parserErrorListener,
@@ -2162,11 +2142,8 @@
return !parserErrorListener.gotError;
}
- ScannerConfiguration _scannerConfiguration = new ScannerConfiguration(
- enableTripleShift: true, enableNonNullable: true);
-
- ScannerConfiguration _scannerConfigurationNonNNBD = new ScannerConfiguration(
- enableTripleShift: true, enableNonNullable: false);
+ ScannerConfiguration _scannerConfiguration =
+ new ScannerConfiguration(enableTripleShift: true);
List<int>? _dataCache;
String? _dataCacheString;
diff --git a/pkg/front_end/test/lint_suite.dart b/pkg/front_end/test/lint_suite.dart
index 08f3375..34db7de 100644
--- a/pkg/front_end/test/lint_suite.dart
+++ b/pkg/front_end/test/lint_suite.dart
@@ -135,8 +135,7 @@
Uint8List bytes = description.cache.rawBytes = f.readAsBytesSync();
Utf8BytesScanner scanner = new Utf8BytesScanner(
bytes,
- configuration: const ScannerConfiguration(
- enableNonNullable: true, enableTripleShift: true),
+ configuration: const ScannerConfiguration(enableTripleShift: true),
includeComments: true,
languageVersionChanged: (scanner, languageVersion) {
// Nothing - but don't overwrite the previous settings.
diff --git a/pkg/front_end/test/parser/parser_ast_test.dart b/pkg/front_end/test/parser/parser_ast_test.dart
index 65f506f..d9a7af8 100644
--- a/pkg/front_end/test/parser/parser_ast_test.dart
+++ b/pkg/front_end/test/parser/parser_ast_test.dart
@@ -39,7 +39,6 @@
data,
includeBody: true,
includeComments: true,
- enableNonNullable: true,
enableTripleShift: true,
);
splitIntoChunks(ast, data);
@@ -80,8 +79,8 @@
File file = new File.fromUri(
base.resolve("parser_ast_test_data/top_level_stuff.txt"));
Uint8List data = file.readAsBytesSync();
- CompilationUnitEnd ast = getAST(data,
- includeBody: true, includeComments: true, enableNonNullable: false);
+ CompilationUnitEnd ast =
+ getAST(data, includeBody: true, includeComments: true);
expect(2, ast.getImports().length);
expect(2, ast.getExports().length);
@@ -134,8 +133,7 @@
file = new File.fromUri(
base.resolve("parser_ast_test_data/top_level_stuff_helper.txt"));
data = file.readAsBytesSync();
- ast = getAST(data,
- includeBody: true, includeComments: true, enableNonNullable: false);
+ ast = getAST(data, includeBody: true, includeComments: true);
foundChunks = splitIntoChunks(ast, data);
expect(1, foundChunks.length);
expect("part of 'top_level_stuff.txt';", foundChunks[0]);
@@ -143,8 +141,7 @@
file =
new File.fromUri(base.resolve("parser_ast_test_data/script_handle.txt"));
data = file.readAsBytesSync();
- ast = getAST(data,
- includeBody: true, includeComments: true, enableNonNullable: false);
+ ast = getAST(data, includeBody: true, includeComments: true);
foundChunks = splitIntoChunks(ast, data);
expect(1, foundChunks.length);
expect("#!/usr/bin/env dart -c", foundChunks[0]);
@@ -153,8 +150,8 @@
void testClassStuff() {
File file = new File.fromUri(base.resolve("parser_ast_test_data/class.txt"));
Uint8List data = file.readAsBytesSync();
- CompilationUnitEnd ast = getAST(data,
- includeBody: true, includeComments: true, enableNonNullable: false);
+ CompilationUnitEnd ast =
+ getAST(data, includeBody: true, includeComments: true);
List<TopLevelDeclarationEnd> classes = ast.getClasses();
expect(2, classes.length);
@@ -234,8 +231,8 @@
void testMixinStuff() {
File file = new File.fromUri(base.resolve("parser_ast_test_data/mixin.txt"));
Uint8List data = file.readAsBytesSync();
- CompilationUnitEnd ast = getAST(data,
- includeBody: true, includeComments: true, enableNonNullable: false);
+ CompilationUnitEnd ast =
+ getAST(data, includeBody: true, includeComments: true);
List<TopLevelDeclarationEnd> mixins = ast.getMixinDeclarations();
expect(mixins.length, 1);
diff --git a/pkg/front_end/test/parser_suite.dart b/pkg/front_end/test/parser_suite.dart
index 1cb1f0f..e5168ae 100644
--- a/pkg/front_end/test/parser_suite.dart
+++ b/pkg/front_end/test/parser_suite.dart
@@ -72,26 +72,15 @@
}
ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableTripleShift: true,
- enableNonNullable: true,
- forAugmentationLibrary: false);
-
-ScannerConfiguration scannerConfigurationNonNNBD = new ScannerConfiguration(
- enableTripleShift: true,
- enableNonNullable: false,
- forAugmentationLibrary: false);
+ enableTripleShift: true, forAugmentationLibrary: false);
ScannerConfiguration scannerConfigurationNonTripleShift =
new ScannerConfiguration(
- enableTripleShift: false,
- enableNonNullable: true,
- forAugmentationLibrary: false);
+ enableTripleShift: false, forAugmentationLibrary: false);
ScannerConfiguration scannerConfigurationAugmentation =
new ScannerConfiguration(
- enableTripleShift: true,
- enableNonNullable: true,
- forAugmentationLibrary: true);
+ enableTripleShift: true, forAugmentationLibrary: true);
class Context extends ChainContext with MatchContext {
@override
@@ -401,8 +390,8 @@
ScannerConfiguration config;
String firstDir = shortName.split("/")[0];
- if (firstDir == "non-nnbd") {
- config = scannerConfigurationNonNNBD;
+ if (firstDir == "also-nnbd") {
+ config = scannerConfigurationNonTripleShift;
} else if (firstDir == "no-triple-shift") {
config = scannerConfigurationNonTripleShift;
} else if (firstDir == "augmentation") {
diff --git a/pkg/front_end/test/scanner_test.dart b/pkg/front_end/test/scanner_test.dart
index cea2784..862e2f9 100644
--- a/pkg/front_end/test/scanner_test.dart
+++ b/pkg/front_end/test/scanner_test.dart
@@ -588,13 +588,7 @@
}
void test_keyword_late() {
- _assertKeywordToken("late",
- configuration: ScannerConfiguration(enableNonNullable: true));
- }
-
- void test_keyword_late_old() {
- _assertNotKeywordToken("late",
- configuration: ScannerConfiguration(enableNonNullable: false));
+ _assertKeywordToken("late", configuration: ScannerConfiguration());
}
void test_keyword_library() {
@@ -642,13 +636,7 @@
}
void test_keyword_required() {
- _assertKeywordToken("required",
- configuration: ScannerConfiguration(enableNonNullable: true));
- }
-
- void test_keyword_required_disabled() {
- _assertNotKeywordToken("required",
- configuration: ScannerConfiguration(enableNonNullable: false));
+ _assertKeywordToken("required", configuration: ScannerConfiguration());
}
void test_keyword_rethrow() {
@@ -1444,27 +1432,6 @@
}
/**
- * Assert that when scanned the given [source] contains a single identifier
- * token with the same lexeme as the original source.
- */
- void _assertNotKeywordToken(String source,
- {ScannerConfiguration? configuration}) {
- Token token = _scan(source, configuration: configuration);
- expect(token, isNotNull);
- expect(token.type.isKeyword, false);
- expect(token.offset, 0);
- expect(token.length, source.length);
- expect(token.lexeme, source);
- token = _scan(" $source ", configuration: configuration);
- expect(token, isNotNull);
- expect(token.type.isKeyword, false);
- expect(token.offset, 1);
- expect(token.length, source.length);
- expect(token.lexeme, source);
- expect(token.next!.type, TokenType.EOF);
- }
-
- /**
* Assert that the token scanned from the given [source] has the
* [expectedType].
*/
diff --git a/pkg/front_end/test/testing/suite.dart b/pkg/front_end/test/testing/suite.dart
index bf85974..a38b1f7 100644
--- a/pkg/front_end/test/testing/suite.dart
+++ b/pkg/front_end/test/testing/suite.dart
@@ -1625,7 +1625,6 @@
CompilationUnitEnd ast = getAST(bytes,
includeBody: false,
includeComments: true,
- enableNonNullable: true,
allowPatterns: allowPatterns);
ast.accept(this);
diff --git a/pkg/front_end/test/textual_outline_suite.dart b/pkg/front_end/test/textual_outline_suite.dart
index 73a65fa..ffcfbf6 100644
--- a/pkg/front_end/test/textual_outline_suite.dart
+++ b/pkg/front_end/test/textual_outline_suite.dart
@@ -116,8 +116,6 @@
String? result = textualOutline(
bytes,
new ScannerConfiguration(
- enableNonNullable: isExperimentEnabled(ExperimentalFlag.nonNullable,
- explicitExperimentalFlags: experimentalFlags),
enableTripleShift: isExperimentEnabled(ExperimentalFlag.tripleShift,
explicitExperimentalFlags: experimentalFlags),
),
diff --git a/pkg/front_end/test/utils/kernel_chain.dart b/pkg/front_end/test/utils/kernel_chain.dart
index 49acbb4..fb8ddaa 100644
--- a/pkg/front_end/test/utils/kernel_chain.dart
+++ b/pkg/front_end/test/utils/kernel_chain.dart
@@ -334,8 +334,7 @@
Uint8List rawBytes = f.readAsBytesSync();
Utf8BytesScanner scanner = new Utf8BytesScanner(
rawBytes,
- configuration: const ScannerConfiguration(
- enableNonNullable: true, enableTripleShift: true),
+ configuration: const ScannerConfiguration(enableTripleShift: true),
includeComments: true,
languageVersionChanged: (scanner, languageVersion) {
// Nothing - but don't overwrite the previous settings.
diff --git a/pkg/front_end/test/web_parser_git_test_helper.dart b/pkg/front_end/test/web_parser_git_test_helper.dart
index 3b5e4f6..66b3309 100644
--- a/pkg/front_end/test/web_parser_git_test_helper.dart
+++ b/pkg/front_end/test/web_parser_git_test_helper.dart
@@ -16,8 +16,8 @@
}
""";
- ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableNonNullable: true, enableTripleShift: true);
+ ScannerConfiguration scannerConfiguration =
+ new ScannerConfiguration(enableTripleShift: true);
StringScanner scanner = new StringScanner(
source,
diff --git a/pkg/front_end/tool/coverage_merger.dart b/pkg/front_end/tool/coverage_merger.dart
index 5012acf..14aa17b 100644
--- a/pkg/front_end/tool/coverage_merger.dart
+++ b/pkg/front_end/tool/coverage_merger.dart
@@ -267,7 +267,6 @@
CompilationUnitEnd ast = getAST(
rawBytes,
includeComments: true,
- enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
lineStarts: lineStarts,
diff --git a/pkg/front_end/tool/dart_doctest_impl.dart b/pkg/front_end/tool/dart_doctest_impl.dart
index b4dc667..a3f10fc 100644
--- a/pkg/front_end/tool/dart_doctest_impl.dart
+++ b/pkg/front_end/tool/dart_doctest_impl.dart
@@ -530,8 +530,8 @@
}
Token scanRawBytes(Uint8List rawBytes, {List<int>? lineStarts}) {
- ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableNonNullable: true, enableTripleShift: true);
+ ScannerConfiguration scannerConfiguration =
+ new ScannerConfiguration(enableTripleShift: true);
Utf8BytesScanner scanner = new Utf8BytesScanner(
rawBytes,
diff --git a/pkg/front_end/tool/duplicate_code_finder_experiment.dart b/pkg/front_end/tool/duplicate_code_finder_experiment.dart
index b28d915..519c311 100644
--- a/pkg/front_end/tool/duplicate_code_finder_experiment.dart
+++ b/pkg/front_end/tool/duplicate_code_finder_experiment.dart
@@ -329,9 +329,7 @@
Token _scan(String data) {
ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
- enableTripleShift: true,
- enableNonNullable: true,
- forAugmentationLibrary: false);
+ enableTripleShift: true, forAugmentationLibrary: false);
StringScanner scanner =
new StringScanner(data, configuration: scannerConfiguration);
diff --git a/pkg/front_end/tool/fuzz/minimizer.dart b/pkg/front_end/tool/fuzz/minimizer.dart
index da0b65d..ed477d6 100644
--- a/pkg/front_end/tool/fuzz/minimizer.dart
+++ b/pkg/front_end/tool/fuzz/minimizer.dart
@@ -33,7 +33,6 @@
CompilationUnitEnd ast = getAST(
rawBytes,
includeComments: true,
- enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
);
diff --git a/pkg/front_end/tool/parser_direct_ast/viewer.dart b/pkg/front_end/tool/parser_direct_ast/viewer.dart
index cac6d096..5c0bec5 100644
--- a/pkg/front_end/tool/parser_direct_ast/viewer.dart
+++ b/pkg/front_end/tool/parser_direct_ast/viewer.dart
@@ -19,7 +19,6 @@
Uint8List bytes = new File.fromUri(uri).readAsBytesSync();
ParserAstNode ast = getAST(
bytes,
- enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
);