[parser] Consume (and use) identifier looking like start of next top level declaration as class name

Fixes https://github.com/dart-lang/sdk/issues/46346

Change-Id: Ie688d0838b612c2eda157bbf9e2fa799bae96fb1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/203762
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Jens Johansen
2021-06-18 10:20:32 +00:00
committed by commit-bot@chromium.org
parent d0ef41920a
commit 4a49580e7e
18 changed files with 7656 additions and 215 deletions
@@ -58,9 +58,22 @@ class ClassOrMixinOrExtensionIdentifierContext extends IdentifierContext {
}
// Recovery
if (looksLikeStartOfNextTopLevelDeclaration(identifier) ||
isOneOfOrEof(identifier,
const ['<', '{', 'extends', 'with', 'implements', 'on'])) {
const List<String> afterIdentifier = const [
'<',
'{',
'extends',
'with',
'implements',
'on',
'=',
];
if (identifier.isEof ||
(looksLikeStartOfNextTopLevelDeclaration(identifier) &&
(identifier.next == null ||
!isOneOfOrEof(identifier.next!, afterIdentifier))) ||
(isOneOfOrEof(identifier, afterIdentifier) &&
(identifier.next == null ||
!isOneOfOrEof(identifier.next!, afterIdentifier)))) {
identifier = parser.insertSyntheticIdentifier(token, this,
message: codes.templateExpectedIdentifier.withArguments(identifier));
} else if (identifier.type.isBuiltIn) {
@@ -0,0 +1,69 @@
class abstract {}
class as {}
class assert {}
class async {}
class await {}
class break {}
class case {}
class catch {}
class class {}
class const {}
class continue {}
class covariant {}
class default {}
class deferred {}
class do {}
class dynamic {}
class else {}
class enum {}
class export {}
class extends {}
class extension {}
class external {}
class factory {}
class false {}
class final {}
class finally {}
class for {}
class Function {}
class get {}
class hide {}
class if {}
class implements {}
class import {}
class in {}
class inout {}
class interface {}
class is {}
class late {}
class library {}
class mixin {}
class native {}
class new {}
class null {}
class of {}
class on {}
class operator {}
class out {}
class part {}
class patch {}
class required {}
class rethrow {}
class return {}
class set {}
class show {}
class source {}
class static {}
class super {}
class switch {}
class sync {}
class this {}
class throw {}
class true {}
class try {}
class typedef {}
class var {}
class void {}
class while {}
class with {}
class yield {}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,141 @@
class abstract {}
class as {}
class assert {}
class async {}
class await {}
class break {}
class case {}
class catch {}
class class {}
class const {}
class continue {}
class covariant {}
class default {}
class deferred {}
class do {}
class dynamic {}
class else {}
class enum {}
class export {}
class extends {}
class extension {}
class external {}
class factory {}
class false {}
class final {}
class finally {}
class for {}
class Function {}
class get {}
class hide {}
class if {}
class implements {}
class import {}
class in {}
class inout {}
class interface {}
class is {}
class late {}
class library {}
class mixin {}
class native {}
class new {}
class null {}
class of {}
class on {}
class operator {}
class out {}
class part {}
class patch {}
class required {}
class rethrow {}
class return {}
class set {}
class show {}
class source {}
class static {}
class super {}
class switch {}
class sync {}
class this {}
class throw {}
class true {}
class try {}
class typedef {}
class var {}
class void {}
class while {}
class with {}
class yield {}
class[KeywordToken] abstract[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] as[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] assert[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] async[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] await[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] break[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] case[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] catch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] class[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] const[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] continue[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] covariant[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] default[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] deferred[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] do[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] dynamic[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] else[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] enum[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] export[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] extends[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] extension[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] external[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] factory[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] false[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] final[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] finally[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] for[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] Function[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] get[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] hide[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] if[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] implements[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] import[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] in[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] inout[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] interface[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] is[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] late[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] library[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] mixin[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] native[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] new[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] null[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] of[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] on[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] operator[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] out[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] part[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] patch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] required[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] rethrow[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] return[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] set[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] show[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] source[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] static[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] super[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] switch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] sync[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] this[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] throw[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] true[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] try[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] typedef[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] var[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] void[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] while[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] with[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] yield[KeywordToken] {[BeginToken]}[SimpleToken]
[SimpleToken]
@@ -0,0 +1,141 @@
class abstract {}
class as {}
class assert {}
class async {}
class await {}
class break {}
class case {}
class catch {}
class class {}
class const {}
class continue {}
class covariant {}
class default {}
class deferred {}
class do {}
class dynamic {}
class else {}
class enum {}
class export {}
class extends {}
class extension {}
class external {}
class factory {}
class false {}
class final {}
class finally {}
class for {}
class Function {}
class get {}
class hide {}
class if {}
class implements {}
class import {}
class in {}
class inout {}
class interface {}
class is {}
class late {}
class library {}
class mixin {}
class native {}
class new {}
class null {}
class of {}
class on {}
class operator {}
class out {}
class part {}
class patch {}
class required {}
class rethrow {}
class return {}
class set {}
class show {}
class source {}
class static {}
class super {}
class switch {}
class sync {}
class this {}
class throw {}
class true {}
class try {}
class typedef {}
class var {}
class void {}
class while {}
class with {}
class yield {}
class[KeywordToken] abstract[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] as[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] assert[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] async[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] await[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] break[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] case[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] catch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] class[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] const[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] continue[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] covariant[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] default[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] deferred[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] do[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] dynamic[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] else[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] enum[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] export[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] extends[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] extension[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] external[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] factory[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] false[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] final[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] finally[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] for[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] Function[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] get[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] hide[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] if[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] implements[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] import[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] in[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] inout[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] interface[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] is[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] late[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] library[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] mixin[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] native[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] new[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] null[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] of[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] on[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] operator[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] out[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] part[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] patch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] required[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] rethrow[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] return[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] set[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] show[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] source[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] static[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] super[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] switch[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] sync[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] this[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] throw[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] true[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] try[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] typedef[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] var[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] void[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] while[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] with[KeywordToken] {[BeginToken]}[SimpleToken]
class[KeywordToken] yield[KeywordToken] {[BeginToken]}[SimpleToken]
[SimpleToken]
@@ -0,0 +1,69 @@
class abstract = A with B;
class as = A with B;
class assert = A with B;
class async = A with B;
class await = A with B;
class break = A with B;
class case = A with B;
class catch = A with B;
class class = A with B;
class const = A with B;
class continue = A with B;
class covariant = A with B;
class default = A with B;
class deferred = A with B;
class do = A with B;
class dynamic = A with B;
class else = A with B;
class enum = A with B;
class export = A with B;
class extends = A with B;
class extension = A with B;
class external = A with B;
class factory = A with B;
class false = A with B;
class final = A with B;
class finally = A with B;
class for = A with B;
class Function = A with B;
class get = A with B;
class hide = A with B;
class if = A with B;
class implements = A with B;
class import = A with B;
class in = A with B;
class inout = A with B;
class interface = A with B;
class is = A with B;
class late = A with B;
class library = A with B;
class mixin = A with B;
class native = A with B;
class new = A with B;
class null = A with B;
class of = A with B;
class on = A with B;
class operator = A with B;
class out = A with B;
class part = A with B;
class patch = A with B;
class required = A with B;
class rethrow = A with B;
class return = A with B;
class set = A with B;
class show = A with B;
class source = A with B;
class static = A with B;
class super = A with B;
class switch = A with B;
class sync = A with B;
class this = A with B;
class throw = A with B;
class true = A with B;
class try = A with B;
class typedef = A with B;
class var = A with B;
class void = A with B;
class while = A with B;
class with = A with B;
class yield = A with B;
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,141 @@
class abstract = A with B;
class as = A with B;
class assert = A with B;
class async = A with B;
class await = A with B;
class break = A with B;
class case = A with B;
class catch = A with B;
class class = A with B;
class const = A with B;
class continue = A with B;
class covariant = A with B;
class default = A with B;
class deferred = A with B;
class do = A with B;
class dynamic = A with B;
class else = A with B;
class enum = A with B;
class export = A with B;
class extends = A with B;
class extension = A with B;
class external = A with B;
class factory = A with B;
class false = A with B;
class final = A with B;
class finally = A with B;
class for = A with B;
class Function = A with B;
class get = A with B;
class hide = A with B;
class if = A with B;
class implements = A with B;
class import = A with B;
class in = A with B;
class inout = A with B;
class interface = A with B;
class is = A with B;
class late = A with B;
class library = A with B;
class mixin = A with B;
class native = A with B;
class new = A with B;
class null = A with B;
class of = A with B;
class on = A with B;
class operator = A with B;
class out = A with B;
class part = A with B;
class patch = A with B;
class required = A with B;
class rethrow = A with B;
class return = A with B;
class set = A with B;
class show = A with B;
class source = A with B;
class static = A with B;
class super = A with B;
class switch = A with B;
class sync = A with B;
class this = A with B;
class throw = A with B;
class true = A with B;
class try = A with B;
class typedef = A with B;
class var = A with B;
class void = A with B;
class while = A with B;
class with = A with B;
class yield = A with B;
class[KeywordToken] abstract[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] as[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] assert[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] async[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] await[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] break[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] case[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] catch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] class[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] const[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] continue[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] covariant[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] default[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] deferred[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] do[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] dynamic[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] else[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] enum[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] export[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] extends[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] extension[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] external[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] factory[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] false[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] final[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] finally[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] for[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] Function[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] get[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] hide[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] if[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] implements[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] import[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] in[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] inout[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] interface[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] is[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] late[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] library[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] mixin[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] native[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] new[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] null[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] of[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] on[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] operator[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] out[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] part[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] patch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] required[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] rethrow[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] return[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] set[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] show[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] source[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] static[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] super[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] switch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] sync[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] this[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] throw[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] true[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] try[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] typedef[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] var[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] void[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] while[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] with[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] yield[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
[SimpleToken]
@@ -0,0 +1,141 @@
class abstract = A with B;
class as = A with B;
class assert = A with B;
class async = A with B;
class await = A with B;
class break = A with B;
class case = A with B;
class catch = A with B;
class class = A with B;
class const = A with B;
class continue = A with B;
class covariant = A with B;
class default = A with B;
class deferred = A with B;
class do = A with B;
class dynamic = A with B;
class else = A with B;
class enum = A with B;
class export = A with B;
class extends = A with B;
class extension = A with B;
class external = A with B;
class factory = A with B;
class false = A with B;
class final = A with B;
class finally = A with B;
class for = A with B;
class Function = A with B;
class get = A with B;
class hide = A with B;
class if = A with B;
class implements = A with B;
class import = A with B;
class in = A with B;
class inout = A with B;
class interface = A with B;
class is = A with B;
class late = A with B;
class library = A with B;
class mixin = A with B;
class native = A with B;
class new = A with B;
class null = A with B;
class of = A with B;
class on = A with B;
class operator = A with B;
class out = A with B;
class part = A with B;
class patch = A with B;
class required = A with B;
class rethrow = A with B;
class return = A with B;
class set = A with B;
class show = A with B;
class source = A with B;
class static = A with B;
class super = A with B;
class switch = A with B;
class sync = A with B;
class this = A with B;
class throw = A with B;
class true = A with B;
class try = A with B;
class typedef = A with B;
class var = A with B;
class void = A with B;
class while = A with B;
class with = A with B;
class yield = A with B;
class[KeywordToken] abstract[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] as[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] assert[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] async[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] await[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] break[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] case[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] catch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] class[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] const[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] continue[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] covariant[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] default[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] deferred[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] do[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] dynamic[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] else[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] enum[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] export[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] extends[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] extension[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] external[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] factory[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] false[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] final[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] finally[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] for[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] Function[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] get[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] hide[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] if[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] implements[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] import[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] in[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] inout[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] interface[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] is[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] late[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] library[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] mixin[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] native[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] new[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] null[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] of[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] on[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] operator[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] out[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] part[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] patch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] required[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] rethrow[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] return[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] set[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] show[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] source[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] static[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] super[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] switch[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] sync[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] this[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] throw[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] true[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] try[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] typedef[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] var[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] void[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] while[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] with[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
class[KeywordToken] yield[KeywordToken] =[SimpleToken] A[StringToken] with[KeywordToken] B[StringToken];[SimpleToken]
[SimpleToken]
@@ -0,0 +1 @@
class
@@ -0,0 +1,40 @@
Problems reported:
parser/error_recovery/issue_46346_prime_2:1:6: Expected an identifier, but got ''.
class
^...
WARNING: Reporting at eof --- see below for details.
parser/error_recovery/issue_46346_prime_2:1:6: A class declaration must have a body, even if it is empty.
class
^...
WARNING: Reporting at eof --- see below for details.
beginCompilationUnit(class)
beginMetadataStar(class)
endMetadataStar(0)
beginClassOrNamedMixinApplicationPrelude(class)
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
// WARNING: Reporting at eof for .
handleIdentifier(, classOrMixinDeclaration)
handleNoTypeVariables()
beginClassDeclaration(class, null, )
handleNoType()
handleClassExtends(null, 1)
handleClassNoWithClause()
handleClassOrMixinImplements(null, 0)
handleClassHeader(class, class, null)
handleNoType()
handleClassExtends(null, 1)
handleClassNoWithClause()
handleClassOrMixinImplements(null, 0)
handleRecoverClassHeader()
handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], , )
// WARNING: Reporting at eof for .
beginClassOrMixinBody(DeclarationKind.Class, {)
endClassOrMixinBody(DeclarationKind.Class, 0, {, })
endClassDeclaration(class, })
endTopLevelDeclaration()
endCompilationUnit(1, )
@@ -0,0 +1,60 @@
parseUnit(class)
skipErrorTokens(class)
listener: beginCompilationUnit(class)
syntheticPreviousToken(class)
parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
parseMetadataStar()
listener: beginMetadataStar(class)
listener: endMetadataStar(0)
parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
parseClassDeclarationModifiers(, class)
parseClassOrNamedMixinApplication(null, class)
listener: beginClassOrNamedMixinApplicationPrelude(class)
ensureIdentifier(class, classOrMixinDeclaration)
insertSyntheticIdentifier(class, classOrMixinDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], messageOnToken: null)
reportRecoverableError(, Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }])
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ''., Try inserting an identifier before ''., {lexeme: }], , )
listener: // WARNING: Reporting at eof for .
rewriter()
listener: handleIdentifier(, classOrMixinDeclaration)
listener: handleNoTypeVariables()
listener: beginClassDeclaration(class, null, )
parseClass(, class, class, )
parseClassHeaderOpt(, class, class)
parseClassExtendsOpt()
listener: handleNoType()
listener: handleClassExtends(null, 1)
parseWithClauseOpt()
listener: handleClassNoWithClause()
parseClassOrMixinImplementsOpt()
listener: handleClassOrMixinImplements(null, 0)
listener: handleClassHeader(class, class, null)
parseClassHeaderRecovery(, class, class)
parseClassHeaderOpt(, class, class)
parseClassExtendsOpt()
parseWithClauseOpt()
parseClassOrMixinImplementsOpt()
skipUnexpectedTokenOpt(, [extends, with, implements, {])
parseClassExtendsOpt()
listener: handleNoType()
listener: handleClassExtends(null, 1)
parseWithClauseOpt()
listener: handleClassNoWithClause()
parseClassOrMixinImplementsOpt()
listener: handleClassOrMixinImplements(null, 0)
listener: handleRecoverClassHeader()
ensureBlock(, null, class declaration)
reportRecoverableError(, Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}])
listener: handleRecoverableError(Message[ExpectedClassOrMixinBody, A class declaration must have a body, even if it is empty., Try adding an empty body., {string: class declaration}], , )
listener: // WARNING: Reporting at eof for .
insertBlock()
rewriter()
rewriter()
parseClassOrMixinOrExtensionBody(, DeclarationKind.Class, )
listener: beginClassOrMixinBody(DeclarationKind.Class, {)
notEofOrValue(}, })
listener: endClassOrMixinBody(DeclarationKind.Class, 0, {, })
listener: endClassDeclaration(class, })
listener: endTopLevelDeclaration()
reportAllErrorTokens(class)
listener: endCompilationUnit(1, )
@@ -0,0 +1,5 @@
NOTICE: Stream was rewritten by parser!
class{}
class[KeywordToken][SyntheticStringToken]{[SyntheticBeginToken]}[SyntheticToken][SimpleToken]
@@ -0,0 +1,3 @@
class
class[KeywordToken][SimpleToken]
@@ -18,24 +18,8 @@ class dynamic { }
// [cfe] Can't use 'dynamic' as a name here.
class export { }
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] Directives must appear before any declarations.
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'export'.
// [error line 19, column 14, length 0]
// [cfe] Expected ';' after this.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [cfe] Expected a String, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [cfe] Expected a declaration, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'export' as a name here.
class external { }
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
@@ -46,132 +30,47 @@ class factory { }
// [cfe] Can't use 'factory' as a name here.
class get { }
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
// [cfe] A function declaration needs an explicit list of parameters.
// ^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'get'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'get' as a name here.
class interface { }
// ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'interface' as a name here.
class implements { }
// ^^^^^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'implements'.
// [error line 61, column 18, length 0]
// [analyzer] COMPILE_TIME_ERROR.IMPLEMENTS_NON_CLASS
// [cfe] Expected a type, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TYPE_NAME
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'implements' as a name here.
class import { }
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] Directives must appear before any declarations.
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'import'.
// [error line 70, column 14, length 0]
// [cfe] Expected ';' after this.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [cfe] Expected a String, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [cfe] Expected a declaration, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'import' as a name here.
class mixin { }
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'mixin'.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'mixin' as a name here.
class library { }
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.LIBRARY_DIRECTIVE_NOT_FIRST
// [cfe] Expected an identifier, but got 'library'.
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] The library directive must appear before all other directives.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [cfe] Expected ';' after this.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected a declaration, but got '}'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'library' as a name here.
class operator { }
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'operator' as a name here.
class part { }
// ^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] Directives must appear before any declarations.
// ^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'part'.
// [error line 123, column 12, length 0]
// [cfe] Expected ';' after this.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [cfe] Expected a String, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [cfe] Expected a declaration, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'part' as a name here.
class set { }
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
// [cfe] A function declaration needs an explicit list of parameters.
// ^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'set'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'set' as a name here.
class static { }
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'static' as a name here.
class typedef { }
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [cfe] A class declaration must have a body, even if it is empty.
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'typedef'.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [cfe] A typedef needs an explicit list of parameters.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_TYPEDEF_PARAMETERS
// [cfe] Expected a declaration, but got '}'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'typedef' as a name here.
main() {}
@@ -20,19 +20,8 @@ class dynamic { }
// [cfe] Can't use 'dynamic' as a name here.
class export { }
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Directives must appear before any declarations.
// [cfe] Expected an identifier, but got 'export'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// [cfe] Expected a String, but got '{'.
// [cfe] Expected a declaration, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'export' as a name here.
class external { }
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
@@ -43,111 +32,47 @@ class factory { }
// [cfe] Can't use 'factory' as a name here.
class get { }
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] A function declaration needs an explicit list of parameters.
// [cfe] Expected an identifier, but got 'get'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'get' as a name here.
class interface { }
// ^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'interface' as a name here.
class implements { }
// ^^^^^^^^^^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got 'implements'.
// [error line 56, column 18, length 0]
// [analyzer] COMPILE_TIME_ERROR.IMPLEMENTS_NON_CLASS
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TYPE_NAME
// [cfe] Expected a type, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'implements' as a name here.
class import { }
// ^^^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Directives must appear before any declarations.
// [cfe] Expected an identifier, but got 'import'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// [cfe] Expected a String, but got '{'.
// [cfe] Expected a declaration, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'import' as a name here.
class mixin { }
// ^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Expected an identifier, but got 'mixin'.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'mixin' as a name here.
class library { }
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.LIBRARY_DIRECTIVE_NOT_FIRST
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Expected an identifier, but got 'library'.
// [cfe] The library directive must appear before all other directives.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// [cfe] Expected a declaration, but got '}'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'library' as a name here.
class operator { }
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'operator' as a name here.
class part { }
// ^^^^
// [analyzer] SYNTACTIC_ERROR.DIRECTIVE_AFTER_DECLARATION
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Directives must appear before any declarations.
// [cfe] Expected an identifier, but got 'part'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [analyzer] SYNTACTIC_ERROR.EXPECTED_STRING_LITERAL
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// [cfe] Expected a String, but got '{'.
// [cfe] Expected a declaration, but got '{'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'part' as a name here.
class set { }
// ^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_FUNCTION_PARAMETERS
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] A function declaration needs an explicit list of parameters.
// [cfe] Expected an identifier, but got 'set'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'set' as a name here.
class static { }
// ^^^^^^
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'static' as a name here.
class typedef { }
// ^^^^^^^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_BODY
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] A class declaration must have a body, even if it is empty.
// [cfe] Expected an identifier, but got 'typedef'.
// ^
// [analyzer] SYNTACTIC_ERROR.MISSING_IDENTIFIER
// [cfe] Expected an identifier, but got '{'.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_EXECUTABLE
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [analyzer] SYNTACTIC_ERROR.MISSING_TYPEDEF_PARAMETERS
// [cfe] A typedef needs an explicit list of parameters.
// [cfe] Expected ';' after this.
// [cfe] Expected a declaration, but got '}'.
// [analyzer] COMPILE_TIME_ERROR.BUILT_IN_IDENTIFIER_IN_DECLARATION
// [cfe] Can't use 'typedef' as a name here.
main() {}