[parser] Parse record type question after modifier

Change-Id: If2dd018a79719bd0f5a9a44f46fb102c3595d08e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/261644
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Jens Johansen 2022-10-07 08:52:04 +00:00 committed by Commit Queue
parent 6524b31967
commit 575ae24207
6 changed files with 931 additions and 3 deletions

View file

@ -27,9 +27,15 @@ bool isModifier(Token token) {
Keyword? keyword = next.keyword;
if (keyword == null && !next.isIdentifier || keyword == Keyword.IN) {
// Record type is a possibility.
if (optional("(", next) && next.endGroup!.next!.isIdentifier) {
// We've seen [modifier] [record type] [identifier].
return true;
if (optional("(", next)) {
Token afterGroup = next.endGroup!.next!;
if (afterGroup.isIdentifier) {
// We've seen [modifier] [record type] [identifier].
return true;
} else if (optional('?', afterGroup) && afterGroup.next!.isIdentifier) {
// We've seen [modifier] [record type]? [identifier].
return true;
}
}
return false;
}

View file

@ -0,0 +1,14 @@
abstract class Foo {
abstract int foo1;
abstract int? foo2;
abstract (int, int) foo3;
abstract (int, int)? foo4;
abstract Function(int) foo5;
abstract Function(int)? foo6;
abstract int Function(int) foo7;
abstract int Function(int)? foo8;
abstract (int, int) Function(int) foo9;
abstract (int, int) Function(int)? foo10;
abstract (int, int)? Function(int) foo11;
abstract (int, int)? Function(int)? foo12;
}

View file

@ -0,0 +1,347 @@
beginCompilationUnit(abstract)
beginMetadataStar(abstract)
endMetadataStar(0)
beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
handleIdentifier(Foo, classOrMixinDeclaration)
handleNoTypeVariables({)
beginClassDeclaration(abstract, abstract, null, null, Foo)
handleNoType(Foo)
handleClassExtends(null, 1)
handleClassNoWithClause()
handleImplements(null, 0)
handleClassHeader(abstract, class, null)
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, {)
handleIdentifier(int, typeReference)
handleNoTypeArguments(foo1)
handleType(int, null)
handleIdentifier(foo1, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
handleIdentifier(int, typeReference)
handleNoTypeArguments(?)
handleType(int, ?)
handleIdentifier(foo2, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, null, 2, false)
handleIdentifier(foo3, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, ?, 2, false)
handleIdentifier(foo4, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(Function)
handleNoTypeVariables(()
handleNoType(abstract)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
handleIdentifier(foo5, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(Function)
handleNoTypeVariables(()
handleNoType(abstract)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, ?)
handleIdentifier(foo6, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(int)
handleNoTypeVariables(()
handleIdentifier(int, typeReference)
handleNoTypeArguments(Function)
handleType(int, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
handleIdentifier(foo7, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(int)
handleNoTypeVariables(()
handleIdentifier(int, typeReference)
handleNoTypeArguments(Function)
handleType(int, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, ?)
handleIdentifier(foo8, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(()
handleNoTypeVariables(()
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, null, 2, false)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
handleIdentifier(foo9, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(()
handleNoTypeVariables(()
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, null, 2, false)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, ?)
handleIdentifier(foo10, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(()
handleNoTypeVariables(()
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, ?, 2, false)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
handleIdentifier(foo11, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
beginMetadataStar(abstract)
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
beginFunctionType(()
handleNoTypeVariables(()
beginRecordType(()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(,)
handleType(int, null)
handleNoName(,)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
endRecordTypeEntry()
endRecordType((, ?, 2, false)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
beginMetadataStar(int)
endMetadataStar(0)
beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
handleIdentifier(int, typeReference)
handleNoTypeArguments())
handleType(int, null)
handleNoName())
handleFormalParameterWithoutValue())
endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, ?)
handleIdentifier(foo12, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
endMember()
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 12, {, })
endClassDeclaration(abstract, })
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,499 @@
parseUnit(abstract)
skipErrorTokens(abstract)
listener: beginCompilationUnit(abstract)
syntheticPreviousToken(abstract)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, class, null, Instance of 'DirectiveContext')
parseClassOrNamedMixinApplication(abstract, null, null, class)
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(abstract)
ensureIdentifier(class, classOrMixinDeclaration)
listener: handleIdentifier(Foo, classOrMixinDeclaration)
listener: handleNoTypeVariables({)
listener: beginClassDeclaration(abstract, abstract, null, null, Foo)
parseClass(Foo, abstract, class, Foo)
parseClassHeaderOpt(Foo, abstract, class)
parseClassExtendsOpt(Foo)
listener: handleNoType(Foo)
listener: handleClassExtends(null, 1)
parseClassWithClauseOpt(Foo)
listener: handleClassNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(Foo)
listener: handleImplements(null, 0)
listener: handleClassHeader(abstract, class, null)
parseClassOrMixinOrExtensionBody(Foo, DeclarationKind.Class, Foo)
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, Foo)
parseMetadataStar({)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields({, abstract, null, null, null, null, null, null, abstract, Instance of 'SimpleType', foo1, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, {)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(foo1)
listener: handleType(int, null)
ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
listener: handleIdentifier(foo1, fieldDeclaration)
parseFieldInitializerOpt(foo1, foo1, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'SimpleNullableType', foo2, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(?)
listener: handleType(int, ?)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo2, fieldDeclaration)
parseFieldInitializerOpt(foo2, foo2, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo3, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, null, 2, false)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(foo3, fieldDeclaration)
parseFieldInitializerOpt(foo3, foo3, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo4, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, ?, 2, false)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo4, fieldDeclaration)
parseFieldInitializerOpt(foo4, foo4, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo5, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(Function)
listener: handleNoTypeVariables(()
listener: handleNoType(abstract)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(foo5, fieldDeclaration)
parseFieldInitializerOpt(foo5, foo5, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo6, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(Function)
listener: handleNoTypeVariables(()
listener: handleNoType(abstract)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, ?)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo6, fieldDeclaration)
parseFieldInitializerOpt(foo6, foo6, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo7, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(int)
listener: handleNoTypeVariables(()
ensureIdentifier(abstract, typeReference)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(int, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(foo7, fieldDeclaration)
parseFieldInitializerOpt(foo7, foo7, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo8, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(int)
listener: handleNoTypeVariables(()
ensureIdentifier(abstract, typeReference)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(int, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, ?)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo8, fieldDeclaration)
parseFieldInitializerOpt(foo8, foo8, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo9, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(()
listener: handleNoTypeVariables(()
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, null, 2, false)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(foo9, fieldDeclaration)
parseFieldInitializerOpt(foo9, foo9, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo10, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(()
listener: handleNoTypeVariables(()
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, null, 2, false)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, ?)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo10, fieldDeclaration)
parseFieldInitializerOpt(foo10, foo10, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo11, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(()
listener: handleNoTypeVariables(()
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, ?, 2, false)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(foo11, fieldDeclaration)
parseFieldInitializerOpt(foo11, foo11, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, abstract)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(abstract)
listener: endMetadataStar(0)
listener: beginMember()
parseFields(;, abstract, null, null, null, null, null, null, abstract, Instance of 'ComplexTypeInfo', foo12, DeclarationKind.Class, Foo, false)
listener: beginFields(DeclarationKind.Class, abstract, null, null, null, null, null, null, ;)
listener: beginFunctionType(()
listener: handleNoTypeVariables(()
parseRecordType((, abstract)
listener: beginRecordType(()
parseRecordTypeField((, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(,)
listener: handleType(int, null)
listener: handleNoName(,)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: true)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: endRecordTypeEntry()
listener: endRecordType((, ?, 2, false)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
parseMetadataStar(()
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments())
listener: handleType(int, null)
listener: handleNoName())
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, ?)
ensureIdentifierPotentiallyRecovered(?, fieldDeclaration, false)
listener: handleIdentifier(foo12, fieldDeclaration)
parseFieldInitializerOpt(foo12, foo12, null, abstract, null, null, null, DeclarationKind.Class, Foo)
listener: handleNoFieldInitializer(;)
listener: endClassFields(abstract, null, null, null, null, null, null, 1, abstract, ;)
listener: endMember()
notEofOrValue(}, })
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 12, {, })
listener: endClassDeclaration(abstract, })
listener: endTopLevelDeclaration()
reportAllErrorTokens(abstract)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,31 @@
abstract class Foo {
abstract int foo1;
abstract int? foo2;
abstract (int, int) foo3;
abstract (int, int)? foo4;
abstract Function(int) foo5;
abstract Function(int)? foo6;
abstract int Function(int) foo7;
abstract int Function(int)? foo8;
abstract (int, int) Function(int) foo9;
abstract (int, int) Function(int)? foo10;
abstract (int, int)? Function(int) foo11;
abstract (int, int)? Function(int)? foo12;
}
abstract[KeywordToken] class[KeywordToken] Foo[StringToken] {[BeginToken]
abstract[KeywordToken] int[StringToken] foo1[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken]?[SimpleToken] foo2[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] foo3[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] foo4[StringToken];[SimpleToken]
abstract[KeywordToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo5[StringToken];[SimpleToken]
abstract[KeywordToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo6[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo7[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo8[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo9[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo10[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo11[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo12[StringToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,31 @@
abstract class Foo {
abstract int foo1;
abstract int? foo2;
abstract (int, int) foo3;
abstract (int, int)? foo4;
abstract Function(int) foo5;
abstract Function(int)? foo6;
abstract int Function(int) foo7;
abstract int Function(int)? foo8;
abstract (int, int) Function(int) foo9;
abstract (int, int) Function(int)? foo10;
abstract (int, int)? Function(int) foo11;
abstract (int, int)? Function(int)? foo12;
}
abstract[KeywordToken] class[KeywordToken] Foo[StringToken] {[BeginToken]
abstract[KeywordToken] int[StringToken] foo1[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken]?[SimpleToken] foo2[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] foo3[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] foo4[StringToken];[SimpleToken]
abstract[KeywordToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo5[StringToken];[SimpleToken]
abstract[KeywordToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo6[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo7[StringToken];[SimpleToken]
abstract[KeywordToken] int[StringToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo8[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo9[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo10[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken] foo11[StringToken];[SimpleToken]
abstract[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] Function[KeywordToken]([BeginToken]int[StringToken])[SimpleToken]?[SimpleToken] foo12[StringToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]