/* * 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 // Slightly modified copy of // `co19/src/Language/Statements/Switch/execution_case_t02.dart`. /** * @assertion Execution of a case clause case ek: sk of a switch statement * switch (e) {label11 ..label1j1 case e1: s1 … labeln1 ..labelnjn case en: sn default: sn+1} * proceeds as follows: * The expression ek == id is evaluated to an object o which is then * subjected to boolean conversion yielding a value v. * If v is not true, the following case, case ek+1: sk+1 is executed if it exists. * If case ek+1: sk+1 does not exist, then the default clause is executed by executing sn+1. * If v is true, let h be the smallest integer such that h >= k and sh is non-empty. * If no such h exists, let h = n + 1. The sequence of statements sh is then executed. * If execution reaches the point after sh then a runtime error occurs, unless h = n + 1. * @description Checks that falling through produces a runtime error, unless * the current clause is an empty case clause or the default clause. * @static-warning * @author msyabro * @reviewer rodionov * @issue 7537 */ test(value) { var result; switch(value) { case 1: result = 1; break; case 2: result = 2; /// static warning - case fall-through, see "Switch" case 3: result = 3; /// static warning - case fall-through, see "Switch" default: result = 4; } return result; } testEmptyCases(value) { var result; switch(value) { case 1: case 2: result = 1; /// static warning - case fall-through, see "Switch" case 3: case 4: result = 2; break; case 5: case 6: default: } return result; } main() { }