diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/SemaCXX/MicrosoftCompatibility.cpp | 56 | ||||
-rw-r--r-- | clang/test/SemaCXX/MicrosoftExtensions.cpp | 53 |
2 files changed, 55 insertions, 54 deletions
diff --git a/clang/test/SemaCXX/MicrosoftCompatibility.cpp b/clang/test/SemaCXX/MicrosoftCompatibility.cpp index fa4ed3ebeff..98a7532f0c5 100644 --- a/clang/test/SemaCXX/MicrosoftCompatibility.cpp +++ b/clang/test/SemaCXX/MicrosoftCompatibility.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wmicrosoft -verify -fms-compatibility +// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions @@ -16,3 +16,57 @@ void test() } + + +namespace ms_protected_scope { + struct C { C(); }; + + int jump_over_variable_init(bool b) { + if (b) + goto foo; // expected-warning {{illegal goto into protected scope}} + C c; // expected-note {{jump bypasses variable initialization}} + foo: + return 1; + } + +struct Y { + ~Y(); +}; + +void jump_over_var_with_dtor() { + goto end; // expected-warning{{goto into protected scope}} + Y y; // expected-note {{jump bypasses variable initialization}} + end: + ; +} + + void jump_over_variable_case(int c) { + switch (c) { + case 0: + int x = 56; // expected-note {{jump bypasses variable initialization}} + case 1: // expected-error {{switch case is in protected scope}} + x = 10; + } + } + + +void exception_jump() { + goto l2; // expected-error {{illegal goto into protected scope}} + try { // expected-note {{jump bypasses initialization of try block}} + l2: ; + } catch(int) { + } +} + +int jump_over_indirect_goto() { + static void *ps[] = { &&a0 }; + goto *&&a0; // expected-warning {{goto into protected scope}} + int a = 3; // expected-note {{jump bypasses variable initialization}} + a0: + return 0; +} + +} + + + diff --git a/clang/test/SemaCXX/MicrosoftExtensions.cpp b/clang/test/SemaCXX/MicrosoftExtensions.cpp index 396ee13f66a..e5e5752dba8 100644 --- a/clang/test/SemaCXX/MicrosoftExtensions.cpp +++ b/clang/test/SemaCXX/MicrosoftExtensions.cpp @@ -257,56 +257,3 @@ void f() } - -namespace ms_protected_scope { - struct C { C(); }; - - int jump_over_variable_init(bool b) { - if (b) - goto foo; // expected-warning {{illegal goto into protected scope}} - C c; // expected-note {{jump bypasses variable initialization}} - foo: - return 1; - } - -struct Y { - ~Y(); -}; - -void jump_over_var_with_dtor() { - goto end; // expected-warning{{goto into protected scope}} - Y y; // expected-note {{jump bypasses variable initialization}} - end: - ; -} - - void jump_over_variable_case(int c) { - switch (c) { - case 0: - int x = 56; // expected-note {{jump bypasses variable initialization}} - case 1: // expected-error {{switch case is in protected scope}} - x = 10; - } - } - - -void exception_jump() { - goto l2; // expected-error {{illegal goto into protected scope}} - try { // expected-note {{jump bypasses initialization of try block}} - l2: ; - } catch(int) { - } -} - -int jump_over_indirect_goto() { - static void *ps[] = { &&a0 }; - goto *&&a0; // expected-warning {{goto into protected scope}} - int a = 3; // expected-note {{jump bypasses variable initialization}} - a0: - return 0; -} - -} - - - |