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>
43 lines
1.4 KiB
Dart
43 lines
1.4 KiB
Dart
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',
|
|
// Notice how `() async => ` means something here...
|
|
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() {
|
|
// ...and the same thing something different here!
|
|
() 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");
|
|
} |