blob: b85d5a533577b426567a7d527526e759d45d208c [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.
// Verifies that switch statement with non-integer expression and
// int case constants is handled correctly.
// Regression test for https://github.com/dart-lang/sdk/issues/52214.
import 'package:expect/expect.dart';
String test1() {
num switcher = 3.0;
switch (switcher) {
case 3:
return 'in case(3)';
default:
return 'in default';
}
}
String test2(Object switcher) {
switch (switcher) {
case 3:
return 'in case(3)';
default:
return 'in default';
}
}
String test3(dynamic switcher) {
switch (switcher) {
case 3:
return 'in case(3)';
default:
return 'in default';
}
}
String test4(switcher) {
switch (switcher) {
case 1:
return 'in case(1)';
case 2:
return 'in case(2)';
case 3:
return 'in case(3)';
case 4:
return 'in case(4)';
case 5:
return 'in case(5)';
case 6:
return 'in case(6)';
case 7:
return 'in case(7)';
case 8:
return 'in case(8)';
case 9:
return 'in case(9)';
case 10:
return 'in case(10)';
case 11:
return 'in case(11)';
case 12:
return 'in case(12)';
case 13:
return 'in case(13)';
case 14:
return 'in case(14)';
case 15:
return 'in case(15)';
case 16:
return 'in case(16)';
default:
return 'in default';
}
}
void main() {
Expect.equals('in case(3)', test1());
Expect.equals('in case(3)', test2(3.0));
Expect.equals('in case(3)', test3(3.0));
Expect.equals('in case(5)', test4(5.0));
Expect.equals('in case(7)', test4(7.0));
Expect.equals('in default', test4(0.0));
}