11c9c9049SDavid Blaikie // RUN: %clang_cc1 -std=c++11 -fsyntax-only -fcxx-exceptions -fexceptions -verify %s 21c9c9049SDavid Blaikie func1(int i)31c9c9049SDavid Blaikievoid func1(int i) { // expected-note{{previous definition is here}} 41c9c9049SDavid Blaikie int i; // expected-error{{redefinition of 'i'}} 51c9c9049SDavid Blaikie } 61c9c9049SDavid Blaikie func2(int i)71c9c9049SDavid Blaikievoid func2(int i) try { // expected-note{{previous definition is here}} 81c9c9049SDavid Blaikie int i; // expected-error{{redefinition of 'i'}} 91c9c9049SDavid Blaikie } catch (...) { 101c9c9049SDavid Blaikie } 111c9c9049SDavid Blaikie func3(int i)12*9ef622e5SAaron Ballmanvoid func3(int i) try { // expected-note {{previous definition is here}} 13*9ef622e5SAaron Ballman } catch (int i) { // expected-error {{redefinition of 'i'}} 141c9c9049SDavid Blaikie } 151c9c9049SDavid Blaikie func4(int i)161c9c9049SDavid Blaikievoid func4(int i) try { // expected-note{{previous definition is here}} 171c9c9049SDavid Blaikie } catch (...) { 181c9c9049SDavid Blaikie int i; // expected-error{{redefinition of 'i'}} 191c9c9049SDavid Blaikie } 201c9c9049SDavid Blaikie func5()211c9c9049SDavid Blaikievoid func5() try { 221c9c9049SDavid Blaikie int i; 231c9c9049SDavid Blaikie } catch (...) { 241c9c9049SDavid Blaikie int j = i; // expected-error{{use of undeclared identifier 'i'}} 251c9c9049SDavid Blaikie } 2643df4cc5SDavid Blaikie func6()2743df4cc5SDavid Blaikievoid func6() try { 2843df4cc5SDavid Blaikie } catch (int i) { // expected-note{{previous definition is here}} 2943df4cc5SDavid Blaikie int i; // expected-error{{redefinition of 'i'}} 3043df4cc5SDavid Blaikie } 3143df4cc5SDavid Blaikie func7()3243df4cc5SDavid Blaikievoid func7() { 3343df4cc5SDavid Blaikie try { 3443df4cc5SDavid Blaikie } catch (int i) { // expected-note{{previous definition is here}} 3543df4cc5SDavid Blaikie int i; // expected-error{{redefinition of 'i'}} 3643df4cc5SDavid Blaikie } 3743df4cc5SDavid Blaikie } 381d617806SDavid Blaikie func8()391d617806SDavid Blaikievoid func8() { 401d617806SDavid Blaikie int i; 411d617806SDavid Blaikie try { 421d617806SDavid Blaikie int i; 431d617806SDavid Blaikie } catch (...) { 441d617806SDavid Blaikie } 451d617806SDavid Blaikie } 461d617806SDavid Blaikie func9()471d617806SDavid Blaikievoid func9() { 481d617806SDavid Blaikie if (bool b = true) 491d617806SDavid Blaikie try { 501d617806SDavid Blaikie int b; // FIXME: this probably should be invalid, maybe 511d617806SDavid Blaikie } catch (...) { 521d617806SDavid Blaikie } 531d617806SDavid Blaikie } 541d617806SDavid Blaikie func10()551d617806SDavid Blaikievoid func10() { 561d617806SDavid Blaikie if (bool b = true) 571d617806SDavid Blaikie if (true) { 581d617806SDavid Blaikie int b; // FIXME: decide whether this is valid 591d617806SDavid Blaikie } 601d617806SDavid Blaikie } 61*9ef622e5SAaron Ballman func11(int a)62*9ef622e5SAaron Ballmanvoid func11(int a) { 63*9ef622e5SAaron Ballman try { 64*9ef622e5SAaron Ballman } catch (int a) { // OK 65*9ef622e5SAaron Ballman } 66*9ef622e5SAaron Ballman } 67