1 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wswitch-default %s
2
f1(int a)3 int f1(int a) {
4 switch (a) { // expected-warning {{'switch' missing 'default' label}}
5 case 1: a++; break;
6 case 2: a += 2; break;
7 }
8 return a;
9 }
10
f2(int a)11 int f2(int a) {
12 switch (a) { // no-warning
13 default:
14 ;
15 }
16 return a;
17 }
18
19 // Warn even completely covered Enum cases(GCC compatibility).
20 enum E { A, B };
check_enum(enum E e)21 enum E check_enum(enum E e) {
22 switch (e) { // expected-warning {{'switch' missing 'default' label}}
23 case A: break;
24 case B: break;
25 }
26 return e;
27 }
28
29 template<typename Index>
t1(Index i)30 int t1(Index i)
31 {
32 switch (i) { // expected-warning {{'switch' missing 'default' label}}
33 case 0: return 0;
34 case 1: return 1;
35 }
36 return 0;
37 }
38
39 template<typename Index>
t2(Index i)40 int t2(Index i)
41 {
42 switch (i) { // no-warning
43 case 0: return 0;
44 case 1: return 1;
45 default: return 2;
46 }
47 return 0;
48 }
49
main()50 int main() {
51 return t1(1); // expected-note {{in instantiation of function template specialization 't1<int>' requested here}}
52 }
53
54