76e2c48428
When seing a '(' after a var/final in `parseVariablePattern` require a
type --- the only allowed thing is a record type, but we can't
generally allow for instance `() async =>` as a record type as that
normally means something else.
Fixes #51230
Bug: https://github.com/dart-lang/sdk/issues/51230
Change-Id: I2e4797595b545d4cb726e36ce4e70a4d775e7e25
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280720
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
88 lines
6.6 KiB
Plaintext
88 lines
6.6 KiB
Plaintext
method1(o) => switch (o) {
|
|
final int a => 'working',
|
|
final String a => 'working',
|
|
final () a => 'working',
|
|
final (int, String) a => 'working',
|
|
final int a? => 'working',
|
|
final String a? => 'working',
|
|
final () a? => 'working',
|
|
final (int, String) a? => 'working',
|
|
(:final () a) => 'working',
|
|
(:final (int, String) a) => 'working',
|
|
(:final int a?) => 'working',
|
|
(:final String a?) => 'working',
|
|
(:final () a?) => 'working',
|
|
(:final (int, String) a?) => 'working',
|
|
_ => '',
|
|
};
|
|
|
|
method2(o) => switch (o) {
|
|
final int async => 'working',
|
|
final String async => 'working',
|
|
|
|
final () async => 'working',
|
|
final (int, String) async => 'working',
|
|
final int async? => 'working',
|
|
final String async? => 'working',
|
|
final () async? => 'working',
|
|
final (int, String) async? => 'working',
|
|
(:final () async) => 'working',
|
|
(:final (int, String) async) => 'working',
|
|
(:final int async?) => 'working',
|
|
(:final String async?) => 'working',
|
|
(:final () async?) => 'working',
|
|
(:final (int, String) async?) => 'working',
|
|
_ => '',
|
|
};
|
|
|
|
void foo() {
|
|
|
|
() async => print("async unnamed taking 0 parameters");
|
|
(int x) async => print("async unnamed taking 1 parameter");
|
|
(int x, int y) async => print("async unnamed taking 2 parameters");
|
|
}
|
|
|
|
method1[StringToken]([BeginToken]o[StringToken])[SimpleToken] =>[SimpleToken] switch[KeywordToken] ([BeginToken]o[StringToken])[SimpleToken] {[BeginToken]
|
|
final[KeywordToken] int[StringToken] a[StringToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] String[StringToken] a[StringToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken])[SimpleToken] a[StringToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] a[StringToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] int[StringToken] a[StringToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] String[StringToken] a[StringToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken])[SimpleToken] a[StringToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] a[StringToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken])[SimpleToken] a[StringToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] a[StringToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] int[StringToken] a[StringToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] String[StringToken] a[StringToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken])[SimpleToken] a[StringToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] a[StringToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
_[StringToken] =>[SimpleToken] ''[StringToken],[SimpleToken]
|
|
}[SimpleToken];[SimpleToken]
|
|
|
|
method2[StringToken]([BeginToken]o[StringToken])[SimpleToken] =>[SimpleToken] switch[KeywordToken] ([BeginToken]o[StringToken])[SimpleToken] {[BeginToken]
|
|
final[KeywordToken] int[StringToken] async[KeywordToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] String[StringToken] async[KeywordToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
|
|
final[KeywordToken] ([BeginToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] int[StringToken] async[KeywordToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] String[StringToken] async[KeywordToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken])[SimpleToken] async[KeywordToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] async[KeywordToken]?[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken])[SimpleToken] async[KeywordToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] async[KeywordToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] int[StringToken] async[KeywordToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] String[StringToken] async[KeywordToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken])[SimpleToken] async[KeywordToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
([BeginToken]:[SimpleToken]final[KeywordToken] ([BeginToken]int[StringToken],[SimpleToken] String[StringToken])[SimpleToken] async[KeywordToken]?[SimpleToken])[SimpleToken] =>[SimpleToken] 'working'[StringToken],[SimpleToken]
|
|
_[StringToken] =>[SimpleToken] ''[StringToken],[SimpleToken]
|
|
}[SimpleToken];[SimpleToken]
|
|
|
|
void[KeywordToken] foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
|
|
|
([BeginToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] print[StringToken]([BeginToken]"async unnamed taking 0 parameters"[StringToken])[SimpleToken];[SimpleToken]
|
|
([BeginToken]int[StringToken] x[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] print[StringToken]([BeginToken]"async unnamed taking 1 parameter"[StringToken])[SimpleToken];[SimpleToken]
|
|
([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] async[KeywordToken] =>[SimpleToken] print[StringToken]([BeginToken]"async unnamed taking 2 parameters"[StringToken])[SimpleToken];[SimpleToken]
|
|
}[SimpleToken][SimpleToken]
|