@@ -37,5 +37,33 @@ main()
37
37
38
38
// NakedFunc() and NakedFunc2() are marked as "naked", so there should be
39
39
// no warnings about them having to return a value.
40
- return NakedFunc (), NakedFunc2 ();
40
+ new __pragma (" unused" ) retval = (NakedFunc (), NakedFunc2 ());
41
+
42
+ // Make sure the compiler doesn't crash on an empty `__pragma`.
43
+ __pragma (" " ); // warning 207: unknown #pragma
44
+ __pragma (" " ); // warning 207: unknown #pragma
45
+
46
+ // `#pragma` warns about extra characters after the option name,
47
+ // so `__pragma` should do the same.
48
+ __pragma (" unused b" ); // warning 207: unknown #pragma
49
+ // But it shouldn't warn if there are only trailing whitespaces after the name.
50
+ __pragma (" naked " );
51
+
52
+ // Warning 200 is going to be temporarily disabled, so the compiler
53
+ // shouldn't warn about the first variable having too long name.
54
+ // Also the parameter strings contain excess whitespaces, the compiler
55
+ // should ignore them.
56
+ __pragma (" warning push " , " warning disable 200 " );
57
+ new
58
+ long_name_zzzzzzzzz_zzzzzzzzz_zzzzzzzzz_ __pragma (" unused" ),
59
+ // `__pragma("warning")` takes effect immediately, so the compiler
60
+ // should warn that the name of the next variable is too long.
61
+ // warning 200: symbol "long_name2_zzzzzzzz_zzzzzzzzz_z" is truncated to 31 characters
62
+ __pragma (" warning enable 200 " , " unused" ) long_name2_zzzzzzzz_zzzzzzzzz_zzzzzzzzz_ __pragma (" unused" );
63
+ __pragma (" warning pop " );
64
+
65
+ // Warn if the parameter of "warning disable" is not a number.
66
+ __pragma (" warning enable " ); // warning 207: unknown #pragma
67
+ __pragma (" warning enable a " ); // warning 207: unknown #pragma
68
+ __pragma (" warning enable - " ); // warning 207: unknown #pragma
41
69
}
0 commit comments