// Copyright (c) 2013, 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. // Test reporting a compile-time error if case expressions are of type double. import "package:expect/expect.dart"; void main() { Expect.equals("IV", caesarSays(4)); Expect.equals(null, caesarSays(2)); Expect.equals(null, archimedesSays(3.14)); } /// Before null safety, it was an error if the cases in a switch were not of /// the same type, regardless of the value expression's type. Now it is only an /// error if the cases are not a subtype of the value's type. caesarSays(n) { switch (n) { case 1: return "I"; case 4: return "IV"; case "M": return 1000; } return null; } archimedesSays(n) { switch (n) { case 3.14: // ^^^^ // [analyzer] COMPILE_TIME_ERROR.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS // [cfe] Case expression '3.14' does not have a primitive operator '=='. return "Pi"; case 2.71828: // ^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CASE_EXPRESSION_TYPE_IMPLEMENTS_EQUALS // [cfe] Case expression '2.71828' does not have a primitive operator '=='. return "Huh?"; } return null; }