[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:
committed by
Commit Queue
parent
5dfce919cd
commit
c075d939e0
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
+31
-8
@@ -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)
|
||||
+23
-11
@@ -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)
|
||||
+4
-4
@@ -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]
|
||||
+4
-4
@@ -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]
|
||||
+41
-77
@@ -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)
|
||||
+135
-154
@@ -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]
|
||||
+15
-24
@@ -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()
|
||||
+13
-19
@@ -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)
|
||||
+4
-4
@@ -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]
|
||||
+4
-4
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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") {
|
||||
|
||||
@@ -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].
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -267,7 +267,6 @@ CoverageInfo _process(
|
||||
CompilationUnitEnd ast = getAST(
|
||||
rawBytes,
|
||||
includeComments: true,
|
||||
enableNonNullable: true,
|
||||
enableTripleShift: true,
|
||||
allowPatterns: true,
|
||||
lineStarts: lineStarts,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user