Commit Graph

360 Commits

Author SHA1 Message Date
David Anderson
b491345d78 Fix continue in a loop body leaking heap-allocated variables. (bug 6370, r=fyren) 2015-05-27 10:33:07 -04:00
David Anderson
15b65468ac Fix bug where the compiler could crash trying to dereference a decayed accessor expression used as |this|. 2015-04-18 08:53:13 -04:00
David Anderson
d64bcc763a Fix bug where complex |this| values could be corrupted while evaluating function arguments. (bug 6329) 2015-04-18 08:51:02 -04:00
Peace-Maker
491d24a028 Add missing debug info for multidimensional strings
new String:INVISIBLE[2][8];

Multidimensional arrays like this wouldn't get their debug info added to
the debug symbols table.
Bug: https://bugs.alliedmods.net/show_bug.cgi?id=6324

See Fyren's comment in the bug report.
This patch recursively checks the parent symbol of array dimensions
until it finds the top symbol and uses that to check for the compound
level.
This still allows for early exiting the loop when going out of scope.
2015-04-04 11:05:36 -04:00
Peace-Maker
9a26ae0526 Fix declaring variable on same line after array
int a[5], b;
b would get a size of |0| on the stack instead of a sizeof(cell_t).
Bug: https://bugs.alliedmods.net/show_bug.cgi?id=6335
2015-04-04 11:03:27 -04:00
Ryan Stecker
8f0067b3b4 Improve the diagnostic given when a function prototype doesn't match an existing definition. 2015-04-04 10:51:10 -04:00
David Anderson
c944ef18b3 Remove sizeof() as a special-case default argument value. 2015-02-04 17:18:11 -05:00
David Anderson
79bb037b66 Don't special case hierarchy-free enumeration constants when used as array indices. (bug 6302) 2015-01-31 22:12:59 -08:00
David Anderson
ea3f491a8e Fix chained field expressions losing lvalue-ness. (bug 6298) 2015-01-31 22:12:58 -08:00
Nicholas Hastings
3a499036ac Fix incorrect error line show for incorrect return value on forwards (bug 6226). 2015-01-28 14:46:56 -05:00
David Anderson
bcef7365b0 Fix uninitialized variable in decl_enum(). 2015-01-04 12:17:13 -08:00
David Anderson
9e882783f9 Allow "stock static" in addition to "static stock". 2015-01-04 12:17:00 -08:00
David Anderson
00a663c1a3 Remove some heinous preprocessor directives.
Gone:
 - #emit (bah-roken!)
 - #pragma compress (useless)
 - #pragma library (useless)
2015-01-04 12:16:47 -08:00
Ryan Stecker
154d84668b Old style retagging should emit a compiler warning when newdecls are required. 2014-12-17 16:37:39 -06:00
David Anderson
bab1110bc0 Disallow coercion to/from char[] and any[]. 2014-12-14 02:00:58 -08:00
David Anderson
722a23c818 Redo menu methodmaps. 2014-12-13 12:53:30 -08:00
David Anderson
b607bfeca9 Reserve 'builtin' as a keyword. 2014-12-12 21:29:28 -08:00
David Anderson
5b69efe5d4 Add static method support to methodmaps. 2014-12-12 10:10:46 -08:00
David Anderson
afeae84340 Replace symbol proxies with type symbols.
Proxies were rather hacky and complicated, and only existed as a
workaround for oddities with constructors. This patch replaces them with
actual type symbols, a very tiny step to semantically getting rid of tags.

This greatly simplifies how we implement constructors, and paves the way
for using methodmap symbols in field expressions.

Since non-value symbols are new to spcomp1, we place a rather
pigeonholed check into primary() to make sure non-value symbols don't
escape into expressions.
2014-12-12 10:10:43 -08:00
David Anderson
0295f817b8 Allow int: and void: tags, but warn. 2014-12-10 02:36:30 -08:00
David Anderson
1ee3067575 Gracefully error on newly reserved keywords. 2014-12-09 23:18:11 -08:00
David Anderson
94bed806fe Reserve many keywords. 2014-12-09 23:04:13 -08:00
David Anderson
9c98edd104 Rename "union" semantics to "typeset". 2014-12-09 22:36:42 -08:00
David Anderson
68e0645813 Add a view_as operator. 2014-11-30 19:08:25 -08:00
David Anderson
157549e119 Fix a bug where aliased constructors of nullable methodmaps could not be used. 2014-11-30 18:56:37 -08:00
David Anderson
9f5c8b60ae Add a "new" keyword for constructing nullable methodmaps. 2014-11-30 18:38:26 -08:00
David Anderson
62c243f0a5 Fix reading the wrong symbol name when throw argument errors. 2014-11-22 12:23:57 -08:00
David Anderson
673ff572c5 Disallow retagging enums or using implicit-int as an enum tag. 2014-11-20 19:30:22 -08:00
David Anderson
79143d8b6e Port files.inc to transitional syntax. 2014-11-15 13:42:28 -08:00
David Anderson
cfa0d9341e Remove handling of class pseudokeyword since there is no C++ API to use it. 2014-11-09 18:12:30 -08:00
David Anderson
4bc7b9243a Define 'this' as a keyword. 2014-11-09 13:01:35 -08:00
David Anderson
22df518ab5 Fix a bug where local dynamic array declarations could be mistakenly parsed as old decls (bug 6280). 2014-11-09 00:15:09 -08:00
David Anderson
c228be83d6 Revert "Fix a bug where local dynamic array declarations could be mistakenly parsed as old decls."
This reverts commit 046f167b6e.
2014-11-09 00:15:00 -08:00
David Anderson
046f167b6e Fix a bug where local dynamic array declarations could be mistakenly parsed as old decls (bug 6279). 2014-11-09 00:12:44 -08:00
David Anderson
099f299113 Fix trailing commas in array literals changing the result of sizeof(). 2014-11-08 23:15:23 -08:00
David Anderson
4c377f21f9 Mark symbols as read when using sizeof(). 2014-11-08 20:45:43 -08:00
David Anderson
704e9579f7 Fix comparisons of derived tags (bug 6239). 2014-11-08 20:27:39 -08:00
David Anderson
7609d19e32 Fix bug where bad carriage returns mess up line endings. 2014-11-08 18:04:45 -08:00
David Anderson
3cc5c198b4 Allow dynamic char arrays. 2014-11-08 17:39:43 -08:00
David Anderson
dbee1bcd08 Add an error check after calling doexpr2(). 2014-11-08 03:07:34 -08:00
David Anderson
512cbc73a0 Fix a loophole with static local variables. 2014-11-08 02:54:29 -08:00
David Anderson
039572060e Add new dynamic array syntax. 2014-11-08 02:48:13 -08:00
David Anderson
f08e53f5d2 Make sizeof on indeterminate arrays an error. 2014-11-08 02:07:43 -08:00
David Anderson
6d507ceb27 Add a special case for assigning a string literal to a char array. 2014-11-08 02:04:11 -08:00
David Anderson
70e095f320 Define post-fix arrays as determinate and pre-fix arrays as indeterminate. 2014-11-07 22:39:00 -08:00
David Anderson
a8796543af Use symbols for fatal errors and bump them by 20 slots. 2014-11-07 17:41:33 -08:00
David Anderson
2c31b99ce3 Move is_new and has_postdims bits out of declinfo and into typeinfo. 2014-11-07 17:05:27 -08:00
David Anderson
613b06f6c0 Improve error messages when we can't find a typeexpr on a method. 2014-10-30 21:15:48 -07:00
David Anderson
97c3a2bc6e Fix a crash when we fail to parse a typexpr in a global declaration. 2014-10-30 21:09:10 -07:00
David Anderson
eaff5c9364 Allow any in new-style natives. 2014-10-30 17:19:01 -07:00