blob: 98a7532f0c5579d217b3a376d7000b1a4e8f8897 [file] [log] [blame]
Francois Pichet8b3c99e2011-09-18 21:48:27 +00001// RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions
Francois Pichet1c98d622011-09-18 21:37:37 +00002
3
4
5namespace ms_conversion_rules {
6
7void f(float a);
8void f(int a);
9
10void test()
11{
12 long a = 0;
13 f((long)0);
14 f(a);
15}
16
17}
18
Francois Pichet8b3c99e2011-09-18 21:48:27 +000019
20
21namespace ms_protected_scope {
22 struct C { C(); };
23
24 int jump_over_variable_init(bool b) {
25 if (b)
26 goto foo; // expected-warning {{illegal goto into protected scope}}
27 C c; // expected-note {{jump bypasses variable initialization}}
28 foo:
29 return 1;
30 }
31
32struct Y {
33 ~Y();
34};
35
36void jump_over_var_with_dtor() {
37 goto end; // expected-warning{{goto into protected scope}}
38 Y y; // expected-note {{jump bypasses variable initialization}}
39 end:
40 ;
41}
42
43 void jump_over_variable_case(int c) {
44 switch (c) {
45 case 0:
46 int x = 56; // expected-note {{jump bypasses variable initialization}}
47 case 1: // expected-error {{switch case is in protected scope}}
48 x = 10;
49 }
50 }
51
52
53void exception_jump() {
54 goto l2; // expected-error {{illegal goto into protected scope}}
55 try { // expected-note {{jump bypasses initialization of try block}}
56 l2: ;
57 } catch(int) {
58 }
59}
60
61int jump_over_indirect_goto() {
62 static void *ps[] = { &&a0 };
63 goto *&&a0; // expected-warning {{goto into protected scope}}
64 int a = 3; // expected-note {{jump bypasses variable initialization}}
65 a0:
66 return 0;
67}
68
69}
70
71
72