[parser] More corner cases for record types

* required is a modifier when followed by [record type] `?`.
* Parse record type as record type if followed by `super` or `?` `super`
  or `?` `this`.
* Typedef with record type follow by `?`.
* Parse record type as record type in get/set with async/sync/sync*.
* Parse record type as record type when followed by `>>=` or `>>>=`
  (for weird formatted use in typedefs).

Change-Id: I19e208497e28780fb1505139c488e943751cce25
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/263123
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
Jens Johansen 2022-10-14 09:33:58 +00:00 committed by Commit Queue
parent 5501c7f978
commit b3dbaadc83
25 changed files with 7753 additions and 119 deletions

View file

@ -29,11 +29,19 @@ bool isModifier(Token token) {
// Record type is a possibility.
if (optional("(", next)) {
Token afterGroup = next.endGroup!.next!;
if (afterGroup.isIdentifier) {
// We've seen [modifier] [record type] [identifier].
if (afterGroup.isIdentifier || _thisOrSuperWithDot(afterGroup)) {
// We've seen either
// [modifier] [record type] [identifier], or
// [modifier] [record type] `this` `.`, or
// [modifier] [record type] `super` `.`
return true;
} else if (optional('?', afterGroup) && afterGroup.next!.isIdentifier) {
// We've seen [modifier] [record type]? [identifier].
} else if (optional('?', afterGroup) &&
(afterGroup.next!.isIdentifier ||
_thisOrSuperWithDot(afterGroup.next!))) {
// We've seen either
// [modifier] [record type] `?` [identifier], or
// [modifier] [record type] `?` `this` `.`, or
// [modifier] [record type] `?` `super` `.`
return true;
}
}
@ -43,6 +51,13 @@ bool isModifier(Token token) {
return true;
}
bool _thisOrSuperWithDot(Token token) {
if (optional("this", token) || optional("super", token)) {
return optional(".", token.next!);
}
return false;
}
/// This class is used to parse modifiers in most locations where modifiers
/// can occur, but does not call handleModifier or handleModifiers.
class ModifierContext {

View file

@ -596,7 +596,8 @@ class Parser {
bool typedefWithRecord = false;
if (identical(value, 'typedef') && identical(nextValue, '(')) {
Token? endParen = keyword.next!.endGroup;
if (endParen != null && endParen.next!.isIdentifier) {
if (endParen != null &&
_isIdentifierOrQuestionIdentifier(endParen.next!)) {
// Looks like a typedef with a record.
TypeInfo typeInfo = computeType(keyword, /* required = */ false);
if (typeInfo is ComplexTypeInfo && typeInfo.recordType) {
@ -663,6 +664,14 @@ class Parser {
throw "Internal error: Unhandled top level keyword '$value'.";
}
bool _isIdentifierOrQuestionIdentifier(Token token) {
if (token.isIdentifier) return true;
if (optional("?", token)) {
return token.next!.isIdentifier;
}
return false;
}
/// ```
/// libraryAugmentationDirective:
/// 'library' 'augment' uri ';'

View file

@ -739,14 +739,20 @@ class ComplexTypeInfo implements TypeInfo {
// * `]` e.g. `x([(int, int) x = (42, 42)]) {}`.
if (!isOneOfOrEof(afterIdentifier,
const [";", "=", "<", "(", ",", ")", "in", "}", ":", "]"])) {
if (getOrSet && isOneOfOrEof(afterIdentifier, const ["=>", "{"])) {
if (getOrSet &&
isOneOfOrEof(
afterIdentifier, const ["=>", "{", "async", "sync"])) {
// With a getter/setter in the mix we can accept more stuff, e.g.
// these would be fine:
// these would be "fine":
// * `=>`: e.g. `(int, int) get x => (42, 42);`.
// * `{`: e.g. `(int, int) get x { }`.
// TODO(jensj): A setter would need parenthesis so technically
// couldn't look like this, but I don't think any other valid thing
// could either. Should we handle that specifically?
// * `async`: e.g. `(int, int) get x async {}`.
// * `sync`: e.g. `(int, int) get x sync* {}`.
// Not all of this is valid (e.g. a setter can't be async, sync has
// to be followed by *, return type of async has to be Future etc),
// but for disambiguation we'll assume it's enough, and we'd rather
// have an error saying "return time has to be Future" than "I don't
// know what these parenthesis mean".
} else if (optional("operator", next) &&
afterIdentifier.isUserDefinableOperator) {
// E.g.
@ -756,12 +762,20 @@ class ComplexTypeInfo implements TypeInfo {
return noType;
}
}
} else if (optional("this", next) && optional(".", next.next!)) {
// E.g. C(({int n, String s}) this.x);
} else if ((optional("this", next) || optional("super", next)) &&
optional(".", next.next!)) {
// E.g.
// * C(({int n, String s}) this.x);
// * C((int, int) super.x);
} else {
// Is it e.g. List<(int, int)> or Map<(int, int), (String, String)>?
// or List<List<(int, int)>> or List<List<List<(int, int)>>>.
if (!isOneOfOrEof(next, const [",", ">", ">>", ">>>"])) {
// Is it e.g.
// * List<(int, int)>
// * Map<(int, int), (String, String)>?
// * List<List<(int, int)>>
// * List<List<List<(int, int)>>>
// * typedef F2<T extends List<(int, int)>>= T Function();
// * typedef F3<T extends List<List<(int, int)>>>= T Function();
if (!isOneOfOrEof(next, const [",", ">", ">>", ">>=", ">>>", ">>>="])) {
return noType;
}
}

View file

@ -1,7 +1,10 @@
// https://github.com/dart-lang/sdk/issues/50007
class C {
({num n, String s}) x;
C(({int n, String s}) this.x);
C({({int n, String s}) this.x});
C({required ({int n, String s}) this.x});
C(({int n, String s})? this.x);
C({({int n, String s})? this.x});
C({required ({int n, String s})? this.x});
}

View file

@ -11,39 +11,11 @@ beginCompilationUnit(class)
handleImplements(null, 0)
handleClassHeader(class, class, null)
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
beginMetadataStar(()
endMetadataStar(0)
beginMember()
beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(num)
endMetadataStar(0)
handleIdentifier(num, typeReference)
handleNoTypeArguments(n)
handleType(num, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, null, 1, true)
handleIdentifier(x, fieldDeclaration)
handleNoFieldInitializer(;)
endClassFields(null, null, null, null, null, null, null, 1, (, ;)
endMember()
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleNoType({)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
@ -79,7 +51,215 @@ beginCompilationUnit(class)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(n)
handleType(int, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, null, 1, true)
handleIdentifier(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(this, null, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
beginFormalParameter(required, MemberKind.NonStaticMethod, required, null, null)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(n)
handleType(int, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, null, 1, true)
handleIdentifier(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(n)
handleType(int, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, ?, 1, true)
handleIdentifier(x, fieldInitializer)
handleFormalParameterWithoutValue())
endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(n)
handleType(int, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, ?, 1, true)
handleIdentifier(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(this, null, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
beginMetadataStar(C)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
handleNoType(;)
handleIdentifier(C, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
beginFormalParameter(required, MemberKind.NonStaticMethod, required, null, null)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(n)
handleType(int, null)
handleIdentifier(n, recordFieldDeclaration)
endRecordTypeEntry()
beginRecordTypeEntry()
beginMetadataStar(String)
endMetadataStar(0)
handleIdentifier(String, typeReference)
handleNoTypeArguments(s)
handleType(String, null)
handleIdentifier(s, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(2, {)
endRecordType((, ?, 1, true)
handleIdentifier(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, C, (, null, ;)
endMember()
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
endClassDeclaration(class, })
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -25,60 +25,17 @@ parseUnit(class)
listener: handleClassHeader(class, class, null)
parseClassOrMixinOrExtensionBody(C, DeclarationKind.Class, C)
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
notEofOrValue(}, ()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C)
parseMetadataStar({)
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginMember()
parseFields({, null, null, null, null, null, null, null, {, Instance of 'ComplexTypeInfo', x, DeclarationKind.Class, C, false)
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
parseRecordType((, {, false)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(num)
listener: endMetadataStar(0)
listener: handleIdentifier(num, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(num, null)
ensureIdentifier(num, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, null, 1, true)
ensureIdentifierPotentiallyRecovered(), fieldDeclaration, false)
listener: handleIdentifier(x, fieldDeclaration)
parseFieldInitializerOpt(x, x, null, null, null, null, null, DeclarationKind.Class, C)
listener: handleNoFieldInitializer(;)
listener: endClassFields(null, null, null, null, null, null, null, 1, (, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
parseMethod({, null, null, null, null, null, null, null, {, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleNoType({)
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
@ -136,8 +93,364 @@ parseUnit(class)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
parseFormalParameters(C, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, {, false)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, null, 1, true)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(this, null, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
parseFormalParameters(C, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
listener: beginFormalParameter(required, MemberKind.NonStaticMethod, required, null, null)
parseRecordType((, required, false)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, null, 1, true)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
parseFormalParameters(C, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
parseMetadataStar(()
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, (, true)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, ?, 1, true)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
parseFormalParameters(C, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, {, true)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, ?, 1, true)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(this, null, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, C)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, C)
parseMetadataStar(;)
listener: beginMetadataStar(C)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, C, DeclarationKind.Class, C, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, C)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(C, methodDeclaration)
parseQualifiedRestOpt(C, methodDeclarationContinuation)
parseMethodTypeVar(C)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(C, C, false, MemberKind.NonStaticMethod)
parseFormalParameters(C, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
listener: beginFormalParameter(required, MemberKind.NonStaticMethod, required, null, null)
parseRecordType((, required, true)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(n)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(n, recordFieldDeclaration)
listener: endRecordTypeEntry()
parseRecordTypeField(,, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar(,)
listener: beginMetadataStar(String)
listener: endMetadataStar(0)
listener: handleIdentifier(String, typeReference)
listener: handleNoTypeArguments(s)
listener: handleType(String, null)
ensureIdentifier(String, recordFieldDeclaration)
listener: handleIdentifier(s, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(2, {)
ensureCloseParen(}, ()
listener: endRecordType((, ?, 1, true)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(this, null, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, C, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 2, {, })
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 6, {, })
listener: endClassDeclaration(class, })
listener: endTopLevelDeclaration()
reportAllErrorTokens(class)

View file

@ -1,13 +1,19 @@
class C {
({num n, String s}) x;
C(({int n, String s}) this.x);
C({({int n, String s}) this.x});
C({required ({int n, String s}) this.x});
C(({int n, String s})? this.x);
C({({int n, String s})? this.x});
C({required ({int n, String s})? this.x});
}
class[KeywordToken] C[StringToken] {[BeginToken]
([BeginToken]{[BeginToken]num[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] x[StringToken];[SimpleToken]
C[StringToken]([BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -1,13 +1,19 @@
class C {
({num n, String s}) x;
C(({int n, String s}) this.x);
C({({int n, String s}) this.x});
C({required ({int n, String s}) this.x});
C(({int n, String s})? this.x);
C({({int n, String s})? this.x});
C({required ({int n, String s})? this.x});
}
class[KeywordToken] C[StringToken] {[BeginToken]
([BeginToken]{[BeginToken]num[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] x[StringToken];[SimpleToken]
C[StringToken]([BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
C[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] n[StringToken],[SimpleToken] String[StringToken] s[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] this[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -1,39 +1,95 @@
// Not getter, but method called 'get'.
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
// Getter called get.
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
// The below is commented out for now --- probably that's a general
// parser bug that should be fixed.
// (int a, String b) get get async => throw "hello";
// (int a, String b) get get async { throw "hello"; }
// (int a, String b) get get async* => throw "hello";
// (int a, String b) get get async* { throw "hello"; }
// (int a, String b) get get sync* => throw "hello";
// (int a, String b) get get sync* { throw "hello"; }
// Getter called something else.
(int a, String b) get topLevelGetter => (42, "fortytwo");
(int a, String b) get topLevelGetter { return (42, "fortytwo"); }
(int a, String b) get topLevelGetter async => throw "hello";
(int a, String b) get topLevelGetter async { throw "hello"; }
(int a, String b) get topLevelGetter async* => throw "hello";
(int a, String b) get topLevelGetter async* { throw "hello"; }
(int a, String b) get topLevelGetter sync* => throw "hello";
(int a, String b) get topLevelGetter sync* { throw "hello"; }
class Foo {
// Not getter, but method called 'get'.
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
// Getter called get.
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
(int a, String b) get get async => throw "hello";
(int a, String b) get get async { throw "hello"; }
(int a, String b) get get async* => throw "hello";
(int a, String b) get get async* { throw "hello"; }
(int a, String b) get get sync* => throw "hello";
(int a, String b) get get sync* { throw "hello"; }
// Getter called something else.
(int a, String b) get instanceGetter => (42, "fortytwo");
(int a, String b) get instanceGetter { return (42, "fortytwo"); }
(int a, String b) get instanceGetter async => throw "hello";
(int a, String b) get instanceGetter async { return throw "hello"; }
(int a, String b) get instanceGetter async* => throw "hello";
(int a, String b) get instanceGetter async* { return throw "hello"; }
(int a, String b) get instanceGetter sync* => throw "hello";
(int a, String b) get instanceGetter sync* { return throw "hello"; }
}
class Bar {
// Not getter, but method called 'get'.
static (int a, String b) get(int x) => (42, "fortytwo");
static (int a, String b) get(int x) { return (42, "fortytwo"); }
static (int a, String b) get(int x) async => throw "hello";
static (int a, String b) get(int x) async { throw "hello"; }
static (int a, String b) get(int x) async* => throw "hello";
static (int a, String b) get(int x) async* { throw "hello"; }
static (int a, String b) get(int x) sync* => throw "hello";
static (int a, String b) get(int x) sync* { throw "hello"; }
// Getter called get.
static (int a, String b) get get => (42, "fortytwo");
static (int a, String b) get get { return (42, "fortytwo"); }
static (int a, String b) get get async => throw "hello";
static (int a, String b) get get async { throw "hello"; }
static (int a, String b) get get async* => throw "hello";
static (int a, String b) get get async* { throw "hello"; }
static (int a, String b) get get sync* => throw "hello";
static (int a, String b) get get sync* { throw "hello"; }
// Getter called something else.
static (int a, String b) get staticGetter => (42, "fortytwo");
static (int a, String b) get staticGetter { return (42, "fortytwo"); }
static (int a, String b) get staticGetter async => throw "hello";
static (int a, String b) get staticGetter async { throw "hello"; }
static (int a, String b) get staticGetter async* => throw "hello";
static (int a, String b) get staticGetter async* { throw "hello"; }
static (int a, String b) get staticGetter sync* => throw "hello";
static (int a, String b) get staticGetter sync* { throw "hello"; }
}

View file

@ -1,79 +1,191 @@
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
(int a, String b) get topLevelGetter => (42, "fortytwo");
(int a, String b) get topLevelGetter { return (42, "fortytwo"); }
(int a, String b) get topLevelGetter async => throw "hello";
(int a, String b) get topLevelGetter async { throw "hello"; }
(int a, String b) get topLevelGetter async* => throw "hello";
(int a, String b) get topLevelGetter async* { throw "hello"; }
(int a, String b) get topLevelGetter sync* => throw "hello";
(int a, String b) get topLevelGetter sync* { throw "hello"; }
class Foo {
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
(int a, String b) get get async => throw "hello";
(int a, String b) get get async { throw "hello"; }
(int a, String b) get get async* => throw "hello";
(int a, String b) get get async* { throw "hello"; }
(int a, String b) get get sync* => throw "hello";
(int a, String b) get get sync* { throw "hello"; }
(int a, String b) get instanceGetter => (42, "fortytwo");
(int a, String b) get instanceGetter { return (42, "fortytwo"); }
(int a, String b) get instanceGetter async => throw "hello";
(int a, String b) get instanceGetter async { return throw "hello"; }
(int a, String b) get instanceGetter async* => throw "hello";
(int a, String b) get instanceGetter async* { return throw "hello"; }
(int a, String b) get instanceGetter sync* => throw "hello";
(int a, String b) get instanceGetter sync* { return throw "hello"; }
}
class Bar {
static (int a, String b) get(int x) => (42, "fortytwo");
static (int a, String b) get(int x) { return (42, "fortytwo"); }
static (int a, String b) get(int x) async => throw "hello";
static (int a, String b) get(int x) async { throw "hello"; }
static (int a, String b) get(int x) async* => throw "hello";
static (int a, String b) get(int x) async* { throw "hello"; }
static (int a, String b) get(int x) sync* => throw "hello";
static (int a, String b) get(int x) sync* { throw "hello"; }
static (int a, String b) get get => (42, "fortytwo");
static (int a, String b) get get { return (42, "fortytwo"); }
static (int a, String b) get get async => throw "hello";
static (int a, String b) get get async { throw "hello"; }
static (int a, String b) get get async* => throw "hello";
static (int a, String b) get get async* { throw "hello"; }
static (int a, String b) get get sync* => throw "hello";
static (int a, String b) get get sync* { throw "hello"; }
static (int a, String b) get staticGetter => (42, "fortytwo");
static (int a, String b) get staticGetter { return (42, "fortytwo"); }
static (int a, String b) get staticGetter async => throw "hello";
static (int a, String b) get staticGetter async { throw "hello"; }
static (int a, String b) get staticGetter async* => throw "hello";
static (int a, String b) get staticGetter async* { throw "hello"; }
static (int a, String b) get staticGetter sync* => throw "hello";
static (int a, String b) get staticGetter sync* { throw "hello"; }
}
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
class[KeywordToken] Foo[StringToken] {[BeginToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
}[SimpleToken]
class[KeywordToken] Bar[StringToken] {[BeginToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -1,79 +1,191 @@
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
(int a, String b) get topLevelGetter => (42, "fortytwo");
(int a, String b) get topLevelGetter { return (42, "fortytwo"); }
(int a, String b) get topLevelGetter async => throw "hello";
(int a, String b) get topLevelGetter async { throw "hello"; }
(int a, String b) get topLevelGetter async* => throw "hello";
(int a, String b) get topLevelGetter async* { throw "hello"; }
(int a, String b) get topLevelGetter sync* => throw "hello";
(int a, String b) get topLevelGetter sync* { throw "hello"; }
class Foo {
(int a, String b) get(int x) => (42, "fortytwo");
(int a, String b) get(int x) { return (42, "fortytwo"); }
(int a, String b) get(int x) async => throw "hello";
(int a, String b) get(int x) async { throw "hello"; }
(int a, String b) get(int x) async* => throw "hello";
(int a, String b) get(int x) async* { throw "hello"; }
(int a, String b) get(int x) sync* => throw "hello";
(int a, String b) get(int x) sync* { throw "hello"; }
(int a, String b) get get => (42, "fortytwo");
(int a, String b) get get { return (42, "fortytwo"); }
(int a, String b) get get async => throw "hello";
(int a, String b) get get async { throw "hello"; }
(int a, String b) get get async* => throw "hello";
(int a, String b) get get async* { throw "hello"; }
(int a, String b) get get sync* => throw "hello";
(int a, String b) get get sync* { throw "hello"; }
(int a, String b) get instanceGetter => (42, "fortytwo");
(int a, String b) get instanceGetter { return (42, "fortytwo"); }
(int a, String b) get instanceGetter async => throw "hello";
(int a, String b) get instanceGetter async { return throw "hello"; }
(int a, String b) get instanceGetter async* => throw "hello";
(int a, String b) get instanceGetter async* { return throw "hello"; }
(int a, String b) get instanceGetter sync* => throw "hello";
(int a, String b) get instanceGetter sync* { return throw "hello"; }
}
class Bar {
static (int a, String b) get(int x) => (42, "fortytwo");
static (int a, String b) get(int x) { return (42, "fortytwo"); }
static (int a, String b) get(int x) async => throw "hello";
static (int a, String b) get(int x) async { throw "hello"; }
static (int a, String b) get(int x) async* => throw "hello";
static (int a, String b) get(int x) async* { throw "hello"; }
static (int a, String b) get(int x) sync* => throw "hello";
static (int a, String b) get(int x) sync* { throw "hello"; }
static (int a, String b) get get => (42, "fortytwo");
static (int a, String b) get get { return (42, "fortytwo"); }
static (int a, String b) get get async => throw "hello";
static (int a, String b) get get async { throw "hello"; }
static (int a, String b) get get async* => throw "hello";
static (int a, String b) get get async* { throw "hello"; }
static (int a, String b) get get sync* => throw "hello";
static (int a, String b) get get sync* { throw "hello"; }
static (int a, String b) get staticGetter => (42, "fortytwo");
static (int a, String b) get staticGetter { return (42, "fortytwo"); }
static (int a, String b) get staticGetter async => throw "hello";
static (int a, String b) get staticGetter async { throw "hello"; }
static (int a, String b) get staticGetter async* => throw "hello";
static (int a, String b) get staticGetter async* { throw "hello"; }
static (int a, String b) get staticGetter sync* => throw "hello";
static (int a, String b) get staticGetter sync* { throw "hello"; }
}
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] topLevelGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
class[KeywordToken] Foo[StringToken] {[BeginToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] instanceGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] return[KeywordToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
}[SimpleToken]
class[KeywordToken] Bar[StringToken] {[BeginToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] get[KeywordToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] =>[SimpleToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] {[BeginToken] return[KeywordToken] ([BeginToken]42[StringToken],[SimpleToken] "fortytwo"[StringToken])[SimpleToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] async[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] sync[KeywordToken]*[SimpleToken] =>[SimpleToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken]
static[KeywordToken] ([BeginToken]int[StringToken] a[StringToken],[SimpleToken] String[StringToken] b[StringToken])[SimpleToken] get[KeywordToken] staticGetter[StringToken] sync[KeywordToken]*[SimpleToken] {[BeginToken] throw[KeywordToken] "hello"[StringToken];[SimpleToken] }[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -1 +1,13 @@
typedef ({int j}) R2();
typedef (int, int) T1();
typedef ({int j}) T2();
typedef (int, int)? T3();
typedef ({int j})? T4();
/// Syntactically tricky coincidences containing >>> and >>>=.
/// DO NOT FORMAT THIS FILE. There should not be a space between >>> and =.
typedef F1<T extends (int, int)>= T Function();
typedef F2<T extends List<(int, int)>>= T Function();
typedef F3<T extends List<List<(int, int)>>>= T Function();
typedef F4<T extends List<List<List<(int, int)>>>>= T Function();
typedef F5<T extends List<List<List<List<(int, int)>>>>>= T Function();
typedef F6<T extends List<List<List<List<List<(int, int)>>>>>>= T Function();

View file

@ -1,4 +1,32 @@
beginCompilationUnit(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
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(T1, typedefDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.FunctionTypeAlias)
endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
endTypedef(typedef, null, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
@ -15,10 +43,366 @@ beginCompilationUnit(typedef)
endRecordTypeEntry()
endRecordTypeNamedFields(1, {)
endRecordType((, null, 1, true)
handleIdentifier(R2, typedefDeclaration)
handleIdentifier(T2, typedefDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.FunctionTypeAlias)
endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
endTypedef(typedef, null, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
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(T3, typedefDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.FunctionTypeAlias)
endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
endTypedef(typedef, null, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
beginRecordType(()
beginRecordTypeNamedFields({)
beginRecordTypeEntry()
beginMetadataStar(int)
endMetadataStar(0)
handleIdentifier(int, typeReference)
handleNoTypeArguments(j)
handleType(int, null)
handleIdentifier(j, recordFieldDeclaration)
endRecordTypeEntry()
endRecordTypeNamedFields(1, {)
endRecordType((, ?, 1, true)
handleIdentifier(T4, typedefDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.FunctionTypeAlias)
endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
endTypedef(typedef, null, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F1, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(), 1)
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)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F2, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(>, 1)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
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)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F3, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(>, 1)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
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)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F4, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(>, 1)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
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)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F5, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(>, 1)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
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)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration(typedef)
beginMetadataStar(typedef)
endMetadataStar(0)
beginUncategorizedTopLevelDeclaration(typedef)
beginTypedef(typedef)
handleIdentifier(F6, typedefDeclaration)
beginTypeVariables(<)
beginMetadataStar(T)
endMetadataStar(0)
handleIdentifier(T, typeVariableDeclaration)
beginTypeVariable(T)
handleTypeVariablesDefined(>, 1)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
handleIdentifier(List, typeReference)
beginTypeArguments(<)
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)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeArguments(1, <, >)
handleType(List, null)
endTypeVariable(>=, 0, extends, null)
endTypeVariables(<, >)
beginFunctionType(T)
handleNoTypeVariables(()
handleIdentifier(T, typeReference)
handleNoTypeArguments(Function)
handleType(T, null)
beginFormalParameters((, MemberKind.GeneralizedFunctionType)
endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
endFunctionType(Function, null)
endTypedef(typedef, =, ;)
endTopLevelDeclaration()
endCompilationUnit(1, )
endCompilationUnit(10, )

View file

@ -7,6 +7,47 @@ parseUnit(typedef)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
parseRecordType((, typedef, false)
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(), typedefDeclaration, false)
listener: handleIdentifier(T1, typedefDeclaration)
listener: handleNoTypeVariables(()
parseFormalParametersRequiredOpt(T1, MemberKind.FunctionTypeAlias)
parseFormalParametersRest((, MemberKind.FunctionTypeAlias)
listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
ensureSemicolon())
listener: endTypedef(typedef, null, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
@ -29,14 +70,508 @@ parseUnit(typedef)
ensureCloseParen(}, ()
listener: endRecordType((, null, 1, true)
ensureIdentifierPotentiallyRecovered(), typedefDeclaration, false)
listener: handleIdentifier(R2, typedefDeclaration)
listener: handleIdentifier(T2, typedefDeclaration)
listener: handleNoTypeVariables(()
parseFormalParametersRequiredOpt(R2, MemberKind.FunctionTypeAlias)
parseFormalParametersRequiredOpt(T2, MemberKind.FunctionTypeAlias)
parseFormalParametersRest((, MemberKind.FunctionTypeAlias)
listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
ensureSemicolon())
listener: endTypedef(typedef, null, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
parseRecordType((, typedef, true)
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(?, typedefDeclaration, false)
listener: handleIdentifier(T3, typedefDeclaration)
listener: handleNoTypeVariables(()
parseFormalParametersRequiredOpt(T3, MemberKind.FunctionTypeAlias)
parseFormalParametersRest((, MemberKind.FunctionTypeAlias)
listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
ensureSemicolon())
listener: endTypedef(typedef, null, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
parseRecordType((, typedef, true)
listener: beginRecordType(()
parseRecordTypeNamedFields(()
listener: beginRecordTypeNamedFields({)
parseRecordTypeField({, identifierIsOptional: false)
listener: beginRecordTypeEntry()
parseMetadataStar({)
listener: beginMetadataStar(int)
listener: endMetadataStar(0)
listener: handleIdentifier(int, typeReference)
listener: handleNoTypeArguments(j)
listener: handleType(int, null)
ensureIdentifier(int, recordFieldDeclaration)
listener: handleIdentifier(j, recordFieldDeclaration)
listener: endRecordTypeEntry()
listener: endRecordTypeNamedFields(1, {)
ensureCloseParen(}, ()
listener: endRecordType((, ?, 1, true)
ensureIdentifierPotentiallyRecovered(?, typedefDeclaration, false)
listener: handleIdentifier(T4, typedefDeclaration)
listener: handleNoTypeVariables(()
parseFormalParametersRequiredOpt(T4, MemberKind.FunctionTypeAlias)
parseFormalParametersRest((, MemberKind.FunctionTypeAlias)
listener: beginFormalParameters((, MemberKind.FunctionTypeAlias)
listener: endFormalParameters(0, (, ), MemberKind.FunctionTypeAlias)
ensureSemicolon())
listener: endTypedef(typedef, null, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F1, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(), 1)
parseRecordType((, extends, false)
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)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F2, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(>, 1)
ensureIdentifier(extends, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
parseRecordType((, <, false)
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)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F3, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(>, 1)
ensureIdentifier(extends, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
parseRecordType((, <, false)
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)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F4, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(>, 1)
ensureIdentifier(extends, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
parseRecordType((, <, false)
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)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F5, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(>, 1)
ensureIdentifier(extends, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
parseRecordType((, <, false)
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)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration(typedef)
parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
parseMetadataStar(;)
listener: beginMetadataStar(typedef)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(;, typedef, null, Instance of 'DirectiveContext')
parseTypedef(typedef)
listener: beginUncategorizedTopLevelDeclaration(typedef)
listener: beginTypedef(typedef)
ensureIdentifierPotentiallyRecovered(typedef, typedefDeclaration, true)
listener: handleIdentifier(F6, typedefDeclaration)
listener: beginTypeVariables(<)
parseMetadataStar(<)
listener: beginMetadataStar(T)
listener: endMetadataStar(0)
ensureIdentifier(<, typeVariableDeclaration)
listener: handleIdentifier(T, typeVariableDeclaration)
listener: beginTypeVariable(T)
listener: handleTypeVariablesDefined(>, 1)
ensureIdentifier(extends, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
ensureIdentifier(<, typeReference)
listener: handleIdentifier(List, typeReference)
listener: beginTypeArguments(<)
parseRecordType((, <, false)
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)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeArguments(1, <, >)
listener: handleType(List, null)
listener: endTypeVariable(>=, 0, extends, null)
listener: endTypeVariables(<, >)
listener: beginFunctionType(T)
listener: handleNoTypeVariables(()
ensureIdentifier(=, typeReference)
listener: handleIdentifier(T, typeReference)
listener: handleNoTypeArguments(Function)
listener: handleType(T, null)
parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
listener: endFormalParameters(0, (, ), MemberKind.GeneralizedFunctionType)
listener: endFunctionType(Function, null)
ensureSemicolon())
listener: endTypedef(typedef, =, ;)
listener: endTopLevelDeclaration()
reportAllErrorTokens(typedef)
listener: endCompilationUnit(1, )
listener: endCompilationUnit(10, )

View file

@ -1,5 +1,31 @@
typedef ({int j}) R2();
NOTICE: Stream was rewritten by parser!
typedef (int, int) T1();
typedef ({int j}) T2();
typedef (int, int)? T3();
typedef ({int j})? T4();
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken] R2[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef F1<T extends (int, int)>= T Function();
typedef F2<T extends List<(int, int)>>= T Function();
typedef F3<T extends List<List<(int, int)>>>= T Function();
typedef F4<T extends List<List<List<(int, int)>>>>= T Function();
typedef F5<T extends List<List<List<List<(int, int)>>>>>= T Function();
typedef F6<T extends List<List<List<List<List<(int, int)>>>>>>= T Function();
typedef[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] T1[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken] T2[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] T3[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] T4[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F1[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F2[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F3[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F4[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F5[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F6[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]>[SimpleToken]=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
[SimpleToken]

View file

@ -1,5 +1,29 @@
typedef ({int j}) R2();
typedef (int, int) T1();
typedef ({int j}) T2();
typedef (int, int)? T3();
typedef ({int j})? T4();
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken] R2[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef F1<T extends (int, int)>= T Function();
typedef F2<T extends List<(int, int)>>= T Function();
typedef F3<T extends List<List<(int, int)>>>= T Function();
typedef F4<T extends List<List<List<(int, int)>>>>= T Function();
typedef F5<T extends List<List<List<List<(int, int)>>>>>= T Function();
typedef F6<T extends List<List<List<List<List<(int, int)>>>>>>= T Function();
typedef[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] T1[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken] T2[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]?[SimpleToken] T3[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] ([BeginToken]{[BeginToken]int[StringToken] j[StringToken]}[SimpleToken])[SimpleToken]?[SimpleToken] T4[StringToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F1[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F2[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F3[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>>>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F4[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>>>[SimpleToken]>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F5[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>>>[SimpleToken]>>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
typedef[KeywordToken] F6[StringToken]<[BeginToken]T[StringToken] extends[KeywordToken] List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]List[StringToken]<[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken]>>>[SimpleToken]>>>=[SimpleToken] T[StringToken] Function[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,6 @@
class Foo extends Bar {
Foo((int, int) super.x);
Foo([(int, int) super.x]);
Foo({(int, int) super.x});
Foo({required (int, int) super.x});
}

View file

@ -0,0 +1,177 @@
beginCompilationUnit(class)
beginMetadataStar(class)
endMetadataStar(0)
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
handleIdentifier(Foo, classOrMixinDeclaration)
handleNoTypeVariables(extends)
beginClassDeclaration(class, null, null, null, Foo)
handleIdentifier(Bar, typeReference)
handleNoTypeArguments({)
handleType(Bar, null)
handleClassExtends(extends, 1)
handleClassNoWithClause()
handleImplements(null, 0)
handleClassHeader(class, class, null)
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
beginMetadataStar(Foo)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
handleNoType({)
handleIdentifier(Foo, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, 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(x, fieldInitializer)
handleFormalParameterWithoutValue())
endFormalParameter(null, super, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, Foo, (, null, ;)
endMember()
beginMetadataStar(Foo)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
handleNoType(;)
handleIdentifier(Foo, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters([)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, 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(x, fieldInitializer)
handleFormalParameterWithoutValue(])
endFormalParameter(null, super, ., x, null, null, FormalParameterKind.optionalPositional, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, [, ])
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, Foo, (, null, ;)
endMember()
beginMetadataStar(Foo)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
handleNoType(;)
handleIdentifier(Foo, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(()
endMetadataStar(0)
beginFormalParameter((, MemberKind.NonStaticMethod, 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(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(null, super, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, Foo, (, null, ;)
endMember()
beginMetadataStar(Foo)
endMetadataStar(0)
beginMember()
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
handleNoType(;)
handleIdentifier(Foo, methodDeclaration)
handleNoTypeVariables(()
beginFormalParameters((, MemberKind.NonStaticMethod)
beginOptionalFormalParameters({)
beginMetadataStar(required)
endMetadataStar(0)
beginFormalParameter(required, MemberKind.NonStaticMethod, required, 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(x, fieldInitializer)
handleFormalParameterWithoutValue(})
endFormalParameter(null, super, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
endOptionalFormalParameters(1, {, })
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
handleNoInitializers()
handleAsyncModifier(null, null)
handleEmptyFunctionBody(;)
endClassConstructor(null, Foo, (, null, ;)
endMember()
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
endClassDeclaration(class, })
endTopLevelDeclaration()
endCompilationUnit(1, )

View file

@ -0,0 +1,296 @@
parseUnit(class)
skipErrorTokens(class)
listener: beginCompilationUnit(class)
syntheticPreviousToken(class)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(class)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, class, null, Instance of 'DirectiveContext')
parseClassOrNamedMixinApplication(null, null, null, class)
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
ensureIdentifier(class, classOrMixinDeclaration)
listener: handleIdentifier(Foo, classOrMixinDeclaration)
listener: handleNoTypeVariables(extends)
listener: beginClassDeclaration(class, null, null, null, Foo)
parseClass(Foo, class, class, Foo)
parseClassHeaderOpt(Foo, class, class)
parseClassExtendsOpt(Foo)
parseClassExtendsSeenExtendsClause(extends, Foo)
listener: handleIdentifier(Bar, typeReference)
listener: handleNoTypeArguments({)
listener: handleType(Bar, null)
listener: handleClassExtends(extends, 1)
parseClassWithClauseOpt(Bar)
listener: handleClassNoWithClause()
parseClassOrMixinOrEnumImplementsOpt(Bar)
listener: handleImplements(null, 0)
listener: handleClassHeader(class, class, null)
parseClassOrMixinOrExtensionBody(Bar, DeclarationKind.Class, Foo)
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
notEofOrValue(}, Foo)
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, Foo)
parseMetadataStar({)
listener: beginMetadataStar(Foo)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod({, null, null, null, null, null, null, null, {, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
listener: handleNoType({)
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
listener: handleIdentifier(Foo, methodDeclaration)
parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
parseMethodTypeVar(Foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(Foo, Foo, false, MemberKind.NonStaticMethod)
parseFormalParameters(Foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
parseMetadataStar(()
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, (, false)
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)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue())
listener: endFormalParameter(null, super, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, Foo, (, null, ;)
listener: endMember()
notEofOrValue(}, Foo)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(Foo)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(Foo, methodDeclaration)
parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
parseMethodTypeVar(Foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(Foo, Foo, false, MemberKind.NonStaticMethod)
parseFormalParameters(Foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalPositionalParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters([)
parseFormalParameter([, FormalParameterKind.optionalPositional, MemberKind.NonStaticMethod)
parseMetadataStar([)
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, [, false)
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)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(])
listener: endFormalParameter(null, super, ., x, null, null, FormalParameterKind.optionalPositional, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, [, ])
ensureCloseParen(], ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, Foo, (, null, ;)
listener: endMember()
notEofOrValue(}, Foo)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(Foo)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(Foo, methodDeclaration)
parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
parseMethodTypeVar(Foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(Foo, Foo, false, MemberKind.NonStaticMethod)
parseFormalParameters(Foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(()
listener: endMetadataStar(0)
listener: beginFormalParameter((, MemberKind.NonStaticMethod, null, null, null)
parseRecordType((, {, false)
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)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(null, super, ., x, null, null, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, Foo, (, null, ;)
listener: endMember()
notEofOrValue(}, Foo)
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Foo)
parseMetadataStar(;)
listener: beginMetadataStar(Foo)
listener: endMetadataStar(0)
listener: beginMember()
isReservedKeyword(()
parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', null, Foo, DeclarationKind.Class, Foo, false)
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, Foo)
listener: handleNoType(;)
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
listener: handleIdentifier(Foo, methodDeclaration)
parseQualifiedRestOpt(Foo, methodDeclarationContinuation)
parseMethodTypeVar(Foo)
listener: handleNoTypeVariables(()
parseGetterOrFormalParameters(Foo, Foo, false, MemberKind.NonStaticMethod)
parseFormalParameters(Foo, MemberKind.NonStaticMethod)
parseFormalParametersRest((, MemberKind.NonStaticMethod)
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
parseOptionalNamedParameters((, MemberKind.NonStaticMethod)
listener: beginOptionalFormalParameters({)
parseFormalParameter({, FormalParameterKind.optionalNamed, MemberKind.NonStaticMethod)
parseMetadataStar({)
listener: beginMetadataStar(required)
listener: endMetadataStar(0)
listener: beginFormalParameter(required, MemberKind.NonStaticMethod, required, null, null)
parseRecordType((, required, false)
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)
ensureIdentifier(., fieldInitializer)
listener: handleIdentifier(x, fieldInitializer)
listener: handleFormalParameterWithoutValue(})
listener: endFormalParameter(null, super, ., x, null, null, FormalParameterKind.requiredNamed, MemberKind.NonStaticMethod)
listener: endOptionalFormalParameters(1, {, })
ensureCloseParen(}, ()
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
parseInitializersOpt())
listener: handleNoInitializers()
parseAsyncModifierOpt())
listener: handleAsyncModifier(null, null)
inPlainSync()
inPlainSync()
parseFunctionBody(), false, true)
listener: handleEmptyFunctionBody(;)
listener: endClassConstructor(null, Foo, (, null, ;)
listener: endMember()
notEofOrValue(}, })
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 4, {, })
listener: endClassDeclaration(class, })
listener: endTopLevelDeclaration()
reportAllErrorTokens(class)
listener: endCompilationUnit(1, )

View file

@ -0,0 +1,15 @@
class Foo extends Bar {
Foo((int, int) super.x);
Foo([(int, int) super.x]);
Foo({(int, int) super.x});
Foo({required (int, int) super.x});
}
class[KeywordToken] Foo[StringToken] extends[KeywordToken] Bar[StringToken] {[BeginToken]
Foo[StringToken]([BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken][[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]][SimpleToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken]{[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -0,0 +1,15 @@
class Foo extends Bar {
Foo((int, int) super.x);
Foo([(int, int) super.x]);
Foo({(int, int) super.x});
Foo({required (int, int) super.x});
}
class[KeywordToken] Foo[StringToken] extends[KeywordToken] Bar[StringToken] {[BeginToken]
Foo[StringToken]([BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken][[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]][SimpleToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken]{[BeginToken]([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
Foo[StringToken]([BeginToken]{[BeginToken]required[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] int[StringToken])[SimpleToken] super[KeywordToken].[SimpleToken]x[StringToken]}[SimpleToken])[SimpleToken];[SimpleToken]
}[SimpleToken]
[SimpleToken]

View file

@ -1220,6 +1220,7 @@ sandboxed
sanitizing
saw
say
saying
sb
sc
scc

View file

@ -125,6 +125,7 @@ cmp
cnn
coded
codepath
coincidences
collisions
columns
commented