1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -fcxx-exceptions -fexceptions -verify %s
2
func1(int i)3 void func1(int i) { // expected-note{{previous definition is here}}
4 int i; // expected-error{{redefinition of 'i'}}
5 }
6
func2(int i)7 void func2(int i) try { // expected-note{{previous definition is here}}
8 int i; // expected-error{{redefinition of 'i'}}
9 } catch (...) {
10 }
11
func3(int i)12 void func3(int i) try { // expected-note {{previous definition is here}}
13 } catch (int i) { // expected-error {{redefinition of 'i'}}
14 }
15
func4(int i)16 void func4(int i) try { // expected-note{{previous definition is here}}
17 } catch (...) {
18 int i; // expected-error{{redefinition of 'i'}}
19 }
20
func5()21 void func5() try {
22 int i;
23 } catch (...) {
24 int j = i; // expected-error{{use of undeclared identifier 'i'}}
25 }
26
func6()27 void func6() try {
28 } catch (int i) { // expected-note{{previous definition is here}}
29 int i; // expected-error{{redefinition of 'i'}}
30 }
31
func7()32 void func7() {
33 try {
34 } catch (int i) { // expected-note{{previous definition is here}}
35 int i; // expected-error{{redefinition of 'i'}}
36 }
37 }
38
func8()39 void func8() {
40 int i;
41 try {
42 int i;
43 } catch (...) {
44 }
45 }
46
func9()47 void func9() {
48 if (bool b = true)
49 try {
50 int b; // FIXME: this probably should be invalid, maybe
51 } catch (...) {
52 }
53 }
54
func10()55 void func10() {
56 if (bool b = true)
57 if (true) {
58 int b; // FIXME: decide whether this is valid
59 }
60 }
61
func11(int a)62 void func11(int a) {
63 try {
64 } catch (int a) { // OK
65 }
66 }
67