// 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.

/**
 * @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. It is a compile 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 a switch statement does not have any case
 * clauses, the default clause is executed.
 * @author msyabro
 */
import '../../../Utils/expect.dart';

foo(p) {
  switch (p) {
    default: return 1;
  }
}

main() {
  Expect.equals(1, foo(1));
  Expect.equals(1, foo(null));
  Expect.equals(1, foo(''));
}
