Skip to content

Commit 1d881b2

Browse files
committed
Update tests
1 parent 24dfcba commit 1d881b2

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

source/compiler/tests/__pragma.meta

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@ __pragma.pwn(6) : error 001: expected token: "-identifier-", but found "const"
55
__pragma.pwn(10) : error 001: expected token: "-identifier-", but found "__pragma"
66
__pragma.pwn(36) : warning 234: function is deprecated (symbol "Func") - use OtherFunc() instead
77
__pragma.pwn(40) : warning 234: function is deprecated (symbol "NakedFunc") - use NakedFunc2() instead
8+
__pragma.pwn(43) : warning 207: unknown #pragma
9+
__pragma.pwn(44) : warning 207: unknown #pragma
10+
__pragma.pwn(48) : warning 207: unknown #pragma
11+
__pragma.pwn(62) : warning 200: symbol "long_name2_zzzzzzzz_zzzzzzzzz_z" is truncated to 31 characters
12+
__pragma.pwn(66) : warning 207: unknown #pragma
13+
__pragma.pwn(67) : warning 207: unknown #pragma
14+
__pragma.pwn(68) : warning 207: unknown #pragma
815
__pragma.pwn(33) : warning 203: symbol is never used: "f"
916
__pragma.pwn(29) : warning 204: symbol is assigned a value that is never used: "e"
10-
__pragma.pwn(29 -- 42) : warning 203: symbol is never used: "operator~(Tag:)"
17+
__pragma.pwn(29 -- 70) : warning 203: symbol is never used: "operator~(Tag:)"
1118
"""
1219
}

source/compiler/tests/__pragma.pwn

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,33 @@ main()
3737

3838
// NakedFunc() and NakedFunc2() are marked as "naked", so there should be
3939
// 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
4169
}

0 commit comments

Comments
 (0)