[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>
This commit is contained in:
Jens Johansen
2025-01-13 00:32:35 -08:00
committed by Commit Queue
parent 5dfce919cd
commit c075d939e0
78 changed files with 463 additions and 737 deletions
@@ -1897,44 +1897,6 @@ class Parser {
}
}
/// 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 @@ class Parser {
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 @@ class Parser {
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 @@ class Parser {
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 @@ class Parser {
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 @@ class Parser {
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) ||
@@ -73,10 +73,6 @@ abstract class AbstractScanner implements Scanner {
/// 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 @@ abstract class AbstractScanner implements Scanner {
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 @@ abstract class AbstractScanner implements Scanner {
@override
set configuration(ScannerConfiguration? config) {
if (config != null) {
_enableNonNullable = config.enableNonNullable;
_enableTripleShift = config.enableTripleShift;
_forAugmentationLibrary = config.forAugmentationLibrary;
}
@@ -1048,11 +1042,9 @@ abstract class AbstractScanner implements Scanner {
$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 @@ abstract class AbstractScanner implements Scanner {
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 @@ abstract class AbstractScanner implements Scanner {
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 @@ class LineStarts extends Object with ListMixin<int> {
/// [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 @@ class ScannerConfiguration {
final bool forAugmentationLibrary;
const ScannerConfiguration({
this.enableNonNullable = false,
this.enableTripleShift = false,
this.forAugmentationLibrary = false,
});
@@ -740,7 +740,6 @@ void assertEdits({
code,
libraryDeclarationNames: libraryDeclarationNames,
scannerConfiguration: ScannerConfiguration(
enableNonNullable: true,
forAugmentationLibrary: true,
),
throwIfHasErrors: throwIfHasErrors,
@@ -53,7 +53,6 @@ void main(List<String> args) {
hasErrors = scanString(
content,
configuration: new ScannerConfiguration(
enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
@@ -65,7 +64,6 @@ void main(List<String> args) {
hasErrors = scan(
contentBytes,
configuration: new ScannerConfiguration(
enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
@@ -78,7 +76,6 @@ void main(List<String> args) {
hasErrors = scan(
tmp,
configuration: new ScannerConfiguration(
enableNonNullable: true,
enableTripleShift: true,
),
includeComments: true,
@@ -200,7 +200,6 @@ class Scanner {
? fasta.ScannerConfiguration()
: fasta.ScannerConfiguration(
enableTripleShift: featureSet.isEnabled(Feature.triple_shift),
enableNonNullable: featureSet.isEnabled(Feature.non_nullable),
forAugmentationLibrary: featureSet.isEnabled(Feature.macros),
);
}
@@ -257,10 +257,7 @@ class FastaParserTestCase
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,
@@ -1232,7 +1232,6 @@ class IncrementalCompiler implements IncrementalKernelGenerator {
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 */
@@ -1355,9 +1355,7 @@ class MacroApplications {
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) {
@@ -1051,10 +1051,6 @@ severity: $severity
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 @@ severity: $severity
}
scanner.configuration = new ScannerConfiguration(
enableTripleShift:
compilationUnit.libraryFeatures.tripleShift.isEnabled,
enableNonNullable: true);
compilationUnit.libraryFeatures.tripleShift.isEnabled);
}, allowLazyStrings: allowLazyStrings);
Token token = result.tokens;
if (!suppressLexicalErrors) {
@@ -13,7 +13,6 @@ FileInfoHelper getFileInfoHelper(Uint8List rawBytes) {
new ImportExportPartLibraryHelperVisitor();
getAST(
rawBytes,
enableNonNullable: true,
enableTripleShift: true,
includeBody: false,
includeComments: false,
@@ -134,8 +134,8 @@ class _Processor {
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 @@ class _Processor {
getAstStopwatch.start();
List<Token> languageVersionsSeen = [];
final ParserAstNode ast = getAST(bytes2,
enableNonNullable: configuration.enableNonNullable,
enableTripleShift: configuration.enableTripleShift,
languageVersionsSeen: languageVersionsSeen);
getAstStopwatch.stop();
+2 -4
View File
@@ -28,15 +28,13 @@ CompilationUnitEnd getAST(
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,
@@ -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 @@ beginCompilationUnit(class)
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 @@ beginCompilationUnit(class)
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 @@ beginCompilationUnit(class)
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)
@@ -10,6 +10,8 @@ parseUnit(class)
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 @@ parseUnit(class)
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 @@ parseUnit(class)
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 @@ parseUnit(class)
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 @@ parseUnit(class)
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)
@@ -12,16 +12,16 @@ required r = required();
}
class[KeywordToken] late[StringToken] {[BeginToken]
class[KeywordToken] late[KeywordToken] {[BeginToken]
int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
}[SimpleToken]
class[KeywordToken] required[StringToken] {[BeginToken]
class[KeywordToken] required[KeywordToken] {[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]
late[KeywordToken] l[StringToken] =[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
required[KeywordToken] r[StringToken] =[SimpleToken] required[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]
@@ -12,16 +12,16 @@ required r = required();
}
class[KeywordToken] late[StringToken] {[BeginToken]
class[KeywordToken] late[KeywordToken] {[BeginToken]
int[StringToken] get[KeywordToken] g[StringToken] =>[SimpleToken] 1[StringToken];[SimpleToken]
}[SimpleToken]
class[KeywordToken] required[StringToken] {[BeginToken]
class[KeywordToken] required[KeywordToken] {[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]
late[KeywordToken] l[StringToken] =[SimpleToken] late[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
required[KeywordToken] r[StringToken] =[SimpleToken] required[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]
@@ -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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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 @@ beginCompilationUnit(int)
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)
@@ -25,11 +25,8 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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 @@ parseUnit(int)
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)
@@ -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]
@@ -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]
@@ -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 @@ beginCompilationUnit(void)
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 @@ beginCompilationUnit(void)
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 @@ beginCompilationUnit(void)
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 @@ beginCompilationUnit(void)
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()
@@ -25,16 +25,14 @@ parseUnit(void)
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 @@ parseUnit(void)
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 @@ parseUnit(void)
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 @@ parseUnit(void)
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)
@@ -16,20 +16,20 @@ print(x);
}
}
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]
@@ -16,20 +16,20 @@ print(x);
}
}
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]
@@ -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]
@@ -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]
@@ -321,8 +321,7 @@ class TestMinimizer {
} 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 @@ class TestMinimizer {
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 @@ class TestMinimizer {
// 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 @@ class TestMinimizer {
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 @@ class TestMinimizer {
}
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 @@ class TestMinimizer {
}
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 @@ class TestMinimizer {
}
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 @@ worlds:
// 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 @@ worlds:
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 @@ worlds:
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 @@ worlds:
}
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 @@ worlds:
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 @@ worlds:
ScannerConfiguration _getScannerConfiguration(Version languageVersion) {
return new ScannerConfiguration(
enableNonNullable:
languageVersion >= ExperimentalFlag.nonNullable.enabledVersion,
enableTripleShift:
languageVersion >= ExperimentalFlag.tripleShift.enabledVersion);
}
@@ -1915,11 +1902,6 @@ worlds:
}
}
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 @@ worlds:
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 @@ worlds:
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 @@ worlds:
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;
+1 -2
View File
@@ -135,8 +135,7 @@ class LintStep extends Step<LintTestDescription, LintTestDescription, Context> {
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.
+8 -11
View File
@@ -39,7 +39,6 @@ void canParseTopLevelIshOfAllFrontendFiles() {
data,
includeBody: true,
includeComments: true,
enableNonNullable: true,
enableTripleShift: true,
);
splitIntoChunks(ast, data);
@@ -80,8 +79,8 @@ void testTopLevelStuff() {
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 @@ void testTopLevelStuff() {
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 @@ void testTopLevelStuff() {
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 testTopLevelStuff() {
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 testClassStuff() {
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);
+5 -16
View File
@@ -72,26 +72,15 @@ Future<Context> createContext(Chain suite, Map<String, String> environment) {
}
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 @@ Token scanUri(Uri uri, String shortName, {List<int>? lineStarts}) {
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") {
+2 -35
View File
@@ -588,13 +588,7 @@ abstract class ScannerTestBase {
}
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 @@ abstract class ScannerTestBase {
}
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() {
@@ -1443,27 +1431,6 @@ abstract class ScannerTestBase {
expect(token.next!.type, TokenType.EOF);
}
/**
* 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].
-1
View File
@@ -1625,7 +1625,6 @@ class FuzzAstVisitorSorter extends IgnoreSomeForCompatibilityAstVisitor {
CompilationUnitEnd ast = getAST(bytes,
includeBody: false,
includeComments: true,
enableNonNullable: true,
allowPatterns: allowPatterns);
ast.accept(this);
@@ -116,8 +116,6 @@ class TextualOutline extends Step<TestDescription, TestDescription, Context> {
String? result = textualOutline(
bytes,
new ScannerConfiguration(
enableNonNullable: isExperimentEnabled(ExperimentalFlag.nonNullable,
explicitExperimentalFlags: experimentalFlags),
enableTripleShift: isExperimentEnabled(ExperimentalFlag.tripleShift,
explicitExperimentalFlags: experimentalFlags),
),
+1 -2
View File
@@ -334,8 +334,7 @@ class ErrorCommentChecker
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.
@@ -16,8 +16,8 @@ void main(List<String> args) {
}
""";
ScannerConfiguration scannerConfiguration = new ScannerConfiguration(
enableNonNullable: true, enableTripleShift: true);
ScannerConfiguration scannerConfiguration =
new ScannerConfiguration(enableTripleShift: true);
StringScanner scanner = new StringScanner(
source,
-1
View File
@@ -267,7 +267,6 @@ CoverageInfo _process(
CompilationUnitEnd ast = getAST(
rawBytes,
includeComments: true,
enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
lineStarts: lineStarts,
+2 -2
View File
@@ -530,8 +530,8 @@ List<Test> extractTests(Uint8List rawBytes, Uri uriForReporting) {
}
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,
@@ -329,9 +329,7 @@ List<ExtendedLines>? _extend(List<Line> lines,
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);
-1
View File
@@ -33,7 +33,6 @@ Future<void> main(List<String> args) async {
CompilationUnitEnd ast = getAST(
rawBytes,
includeComments: true,
enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
);
@@ -19,7 +19,6 @@ void main(List<String> args) {
Uint8List bytes = new File.fromUri(uri).readAsBytesSync();
ParserAstNode ast = getAST(
bytes,
enableNonNullable: true,
enableTripleShift: true,
allowPatterns: true,
);