Files
sdk/pkg/front_end/testcases/nnbd/switch_nullable_enum.dart
T
Johnni Winther f4dd96c6a9 [cfe] Handle nullable enum in switch case
Closes #43348

Change-Id: Id2bb94f2019e85021c43eb7b2a5d12a651159369
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162184
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-09-10 09:42:15 +00:00

69 lines
1.1 KiB
Dart

// Copyright (c) 2020, 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.
enum Enum { e1, e2 }
int method1(Enum? e) {
switch (e) {
case Enum.e1:
case Enum.e2:
return 0;
}
}
int method2(Enum? e) {
switch (e) {
case Enum.e1:
case Enum.e2:
return 0;
case null:
return 1;
}
}
int method3(Enum? e) {
switch (e) {
case Enum.e1:
case Enum.e2:
return 0;
default:
return 1;
}
}
int method4(Enum? e) {
switch (e) {
case Enum.e1:
case Enum.e2:
return 0;
case null:
default:
return 1;
}
}
test() {
method1(Enum.e1);
}
main() {
expect(0, method2(Enum.e1));
expect(0, method2(Enum.e2));
expect(1, method2(null));
expect(0, method3(Enum.e1));
expect(0, method3(Enum.e2));
expect(1, method3(null));
expect(0, method4(Enum.e1));
expect(0, method4(Enum.e2));
expect(1, method4(null));
}
expect(expected, actual) {
if (expected != actual) {
throw 'Expected $expected, actual $actual.';
}
}