blob: c90c6b6c12c169984ea062ec230d4e86d8cd316d [file] [log] [blame]
// Copyright (c) 2022, 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.
// SharedOptions=-Da=true -Db=false
import 'package:expect/expect.dart';
class Base {
final int x;
const Base(this.x);
}
class Child extends Base {
static const Child A = Child._(const bool.fromEnvironment('a') ? 0 : 1);
static const Child B = Child._(const bool.fromEnvironment('b') ? 0 : 2);
const Child._(int x) : super(x);
}
int case1() {
switch (null as dynamic) {
case Child.A:
return 1;
default:
return 2;
}
}
class A {
final int x;
const A(this.x);
static const A a1 = A(const bool.fromEnvironment('x') ? 0 : 1);
static const A a2 = A(const bool.fromEnvironment('x') ? 0 : 2);
}
int case2() {
switch (null as dynamic) {
case A.a1:
return 1;
default:
return 2;
}
}
class B {
final int x;
const B(this.x);
}
int case3() {
switch (null as dynamic) {
case B(const bool.fromEnvironment('x') ? 0 : 1):
return 1;
default:
return 2;
}
}
void main() {
Expect.equals(case1(), 2);
Expect.equals(case2(), 2);
Expect.equals(case3(), 2);
}