blob: 59c4a20ebf5a25f068d850237d08985f169c7a79 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
abstract class A {
B get b;
int get i;
}
abstract class B {
C get c;
int get i;
}
abstract class C {
int get i;
}
ifCase(o) {
if (o case A a) {
print(a);
}
if (o case A(:var b)) {
print(b);
}
if (o case A(b: B(:var c))) {
print(c);
}
if (o case A(b: B(c: C(:var i)))) {
print(i);
}
if (o case A(:var b, :var i)) {
print(b);
print(i);
}
if (o case A(i: 5, :var b)) {
print(b);
}
if (o case A(:var b, i: 5)) {
print(b);
}
if (o case A(:var b, i: 5) && A(b: B(:var c, i: 7))) {
print(b);
print(c);
}
}
switchExpression(o) => switch (o) {
A a => a,
A(:var b) => b,
A(b: B(:var c)) => c,
A(b: B(c: C(:var i))) => i,
A(:var b, :var i) => '$b$i',
A(i: 5, :var b) => b,
A(:var b, i: 5) => b,
A(:var b, i: 5) && A(b: B(:var c, i: 7)) => '$b$c',
_ => null,
};
switchStatement(o) {
dynamic v;
switch (o) {
case A a:
v = a;
case A(:var b):
v = b;
case A(b: B(:var c)):
v = c;
case A(b: B(c: C(:var i))):
v = i;
case A(:var b, :var i):
v = '$b$i';
case A(i: 5, :var b):
v = b;
case A(:var b, i: 5):
v = b;
case A(:var b, i: 5) && A(b: B(:var c, i: 7)):
v = '$b$c';
}
return v;
}