1 // RUN: %clang_cc1 -std=c++11 %s -verify
2 // expected-no-diagnostics
3 
4 struct Value {
ValueValue5   constexpr Value(int n) : n(n) {}
operator shortValue6   constexpr operator short() const { return n; }
7   int n;
8 };
9 enum E { E0, E1 };
10 struct Alt {
operator EAlt11   constexpr operator E() const { return E0; }
12 };
13 
14 constexpr short s = Alt();
15 
test(Value v)16 void test(Value v) {
17   switch (v) {
18     case Alt():
19     case E1:
20     case Value(2):
21     case 3:
22       break;
23   }
24   switch (Alt a = Alt()) {
25     case Alt():
26     case E1:
27     case Value(2):
28     case 3:
29       break;
30   }
31   switch (E0) {
32     case Alt():
33     case E1:
34     // FIXME: These should produce a warning that 2 and 3 are not values of the
35     // enumeration.
36     case Value(2):
37     case 3:
38       break;
39   }
40 }
41