1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -fcxx-exceptions -fexceptions -verify %s 2 3 void func1(int i) { // expected-note{{previous definition is here}} 4 int i; // expected-error{{redefinition of 'i'}} 5 } 6 7 void func2(int i) try { // expected-note{{previous definition is here}} 8 int i; // expected-error{{redefinition of 'i'}} 9 } catch (...) { 10 } 11 12 void func3(int i) try { // expected-note {{previous definition is here}} 13 } catch (int i) { // expected-error {{redefinition of 'i'}} 14 } 15 16 void func4(int i) try { // expected-note{{previous definition is here}} 17 } catch (...) { 18 int i; // expected-error{{redefinition of 'i'}} 19 } 20 21 void func5() try { 22 int i; 23 } catch (...) { 24 int j = i; // expected-error{{use of undeclared identifier 'i'}} 25 } 26 27 void func6() try { 28 } catch (int i) { // expected-note{{previous definition is here}} 29 int i; // expected-error{{redefinition of 'i'}} 30 } 31 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 39 void func8() { 40 int i; 41 try { 42 int i; 43 } catch (...) { 44 } 45 } 46 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 55 void func10() { 56 if (bool b = true) 57 if (true) { 58 int b; // FIXME: decide whether this is valid 59 } 60 } 61 62 void func11(int a) { 63 try { 64 } catch (int a) { // OK 65 } 66 } 67