41 lines
702 B
C++
41 lines
702 B
C++
|
// RUN: %clang_cc1 -std=c++11 %s -verify
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
struct Value {
|
||
|
constexpr Value(int n) : n(n) {}
|
||
|
constexpr operator short() const { return n; }
|
||
|
int n;
|
||
|
};
|
||
|
enum E { E0, E1 };
|
||
|
struct Alt {
|
||
|
constexpr operator E() const { return E0; }
|
||
|
};
|
||
|
|
||
|
constexpr short s = Alt();
|
||
|
|
||
|
void test(Value v) {
|
||
|
switch (v) {
|
||
|
case Alt():
|
||
|
case E1:
|
||
|
case Value(2):
|
||
|
case 3:
|
||
|
break;
|
||
|
}
|
||
|
switch (Alt a = Alt()) {
|
||
|
case Alt():
|
||
|
case E1:
|
||
|
case Value(2):
|
||
|
case 3:
|
||
|
break;
|
||
|
}
|
||
|
switch (E0) {
|
||
|
case Alt():
|
||
|
case E1:
|
||
|
// FIXME: These should produce a warning that 2 and 3 are not values of the
|
||
|
// enumeration.
|
||
|
case Value(2):
|
||
|
case 3:
|
||
|
break;
|
||
|
}
|
||
|
}
|