xref: /llvm-project/clang/test/Sema/switch-default.cpp (revision 033ec098be730bff04bfb929d254ce57e5ec8534)
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