blob: 4733eac438b089d7f48fa96fc77034db8f9d8b3f [file] [log] [blame]
// Copyright (c) 2011, 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.
// @dart = 2.9
/// @assertion Execution of a switch statement of the form
/// switch (e) {
/// label11 … label1j1 case e1: s1
/// …
/// labeln1 ..labelnjn case en: sn
/// label(n+1)1 ..label(n+1)jn default: sn+1
/// }
/// or the form
/// switch (e) {
/// label11 … label1j1 case e1: s1
/// …
/// labeln1 ..labelnjn case en: sn
/// }
/// proceeds as follows:
/// The statement var id = e; is evaluated, where id is a variable whose name is
/// distinct from any other variable in the program. In checked mode, it is a
/// run time error if the value of e is not an instance of the same type as the
/// constants e1 … en.
/// Next, the case clause case e1: s1 is executed if it exists. If case e1: s1
/// does not exist, then if there is a default clause it is executed by
/// executing sn+1.
/// @description Checks that if the value of expression e is not an instance of
/// the same type as the constants of case clauses, then it is a compile error
/// @author msyabro
/// @reviewer rodionov
main() {
switch (1) {
// ^
// [analyzer] unspecified
case '1': break;
// ^
// [cfe] unspecified
case '2': break;
// ^
// [cfe] unspecified
default:
}
switch ('abc') {
// ^
// [analyzer] unspecified
case 1: break;
// ^
// [cfe] unspecified
}
}