From da33c79d8b68945d5a251038c0af801ecc8fca8c Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 5 Jul 2014 01:08:14 -0700 Subject: [PATCH 1/2] Add #pragma newdecls required|optional. --- plugins/nextmap.sp | 5 +- plugins/sounds.sp | 5 +- sourcepawn/compiler/sc1.c | 15 +- sourcepawn/compiler/sc2.c | 20 +- sourcepawn/compiler/sc5.scp | 406 +++++++++--------- .../compiler/tests/ok-inline-methods.sp | 26 +- sourcepawn/compiler/tests/ok-properties.sp | 58 +-- 7 files changed, 277 insertions(+), 258 deletions(-) diff --git a/plugins/nextmap.sp b/plugins/nextmap.sp index 27c23a73..365545af 100644 --- a/plugins/nextmap.sp +++ b/plugins/nextmap.sp @@ -31,11 +31,12 @@ * Version: $Id$ */ -#pragma semicolon 1 - #include #include "include/nextmap.inc" +#pragma semicolon 1 +#pragma newdecls required + public Plugin myinfo = { name = "Nextmap", diff --git a/plugins/sounds.sp b/plugins/sounds.sp index 2ff2c93d..6838573e 100644 --- a/plugins/sounds.sp +++ b/plugins/sounds.sp @@ -31,10 +31,11 @@ * Version: $Id$ */ -#pragma semicolon 1 - #include +#pragma semicolon 1 +#pragma newdecls required + public Plugin myinfo = { name = "Sound Commands", diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index f12ac7d0..a098ead9 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -200,7 +200,7 @@ int pc_compile(int argc, char *argv[]) char codepage[MAXCODEPAGE+1]; FILE *binf; void *inpfmark; - int lcl_packstr,lcl_needsemicolon,lcl_tabsize; + int lcl_packstr,lcl_needsemicolon,lcl_tabsize,lcl_require_newdecls; #if !defined SC_LIGHT int hdrsize=0; #endif @@ -252,6 +252,7 @@ int pc_compile(int argc, char *argv[]) sc_ctrlchar_org=sc_ctrlchar; lcl_packstr=sc_packstr; lcl_needsemicolon=sc_needsemicolon; + lcl_require_newdecls=sc_require_newdecls; lcl_tabsize=sc_tabsize; #if !defined NO_CODEPAGE if (!cp_set(codepage)) /* set codepage */ @@ -359,6 +360,7 @@ int pc_compile(int argc, char *argv[]) sc_ctrlchar=sc_ctrlchar_org; sc_packstr=lcl_packstr; sc_needsemicolon=lcl_needsemicolon; + sc_require_newdecls=lcl_require_newdecls; sc_tabsize=lcl_tabsize; errorset(sRESET,0); /* reset the source file */ @@ -428,6 +430,7 @@ int pc_compile(int argc, char *argv[]) sc_ctrlchar=sc_ctrlchar_org; sc_packstr=lcl_packstr; sc_needsemicolon=lcl_needsemicolon; + sc_require_newdecls=lcl_require_newdecls; sc_tabsize=lcl_tabsize; errorset(sRESET,0); /* reset the source file */ @@ -772,6 +775,7 @@ static void initglobals(void) sc_packstr=TRUE; /* strings are packed by default */ sc_compress=FALSE; /* always disable compact encoding! */ sc_needsemicolon=FALSE;/* semicolon required to terminate expressions? */ + sc_require_newdecls = FALSE; sc_dataalign=sizeof(cell); pc_stksize=sDEF_AMXSTACK;/* default stack size */ pc_amxlimit=0; /* no limit on size of the abstract machine */ @@ -3317,6 +3321,9 @@ static int parse_old_decl(declinfo_t *decl, int flags) parse_old_array_dims(decl, flags); } + if (sc_require_newdecls) + error(147); + return TRUE; } @@ -3599,7 +3606,11 @@ symbol *parse_inline_function(methodmap_t *map, const typeinfo_t *type, const ch if (is_native) { target = funcstub(tMETHODMAP, &decl, thistag); } else { - if (!newfunc(&decl, thistag, FALSE, FALSE, TRUE, &target)) + sc_require_newdecls++; + int ok = newfunc(&decl, thistag, FALSE, FALSE, TRUE, &target); + sc_require_newdecls--; + + if (!ok) return NULL; if (!target || (target->usage & uFORWARD)) { error(10); diff --git a/sourcepawn/compiler/sc2.c b/sourcepawn/compiler/sc2.c index 33eb0629..d3b42718 100644 --- a/sourcepawn/compiler/sc2.c +++ b/sourcepawn/compiler/sc2.c @@ -1110,12 +1110,6 @@ static int command(void) } } } /* if */ -#if 0 /* more unused */ - } else if (strcmp(str,"pack")==0) { - cell val; - preproc_expr(&val,NULL); /* default = packed/unpacked */ - sc_packstr=(int)val; -#endif } else if (strcmp(str,"rational")==0) { char name[sNAMEMAX+1]; cell digits=0; @@ -1151,10 +1145,16 @@ static int command(void) cell val; preproc_expr(&val,NULL); sc_needsemicolon=(int)val; - } else if (strcmp(str, "require_newdecls")==0) { - cell val; - preproc_expr(&val,NULL); - sc_require_newdecls = (int)val; + } else if (strcmp(str, "newdecls")==0) { + while (*lptr<=' ' && *lptr!='\0') + lptr++; + if (strncmp((char *)lptr, "required", 8) == 0) + sc_require_newdecls = 1; + else if (strncmp((char *)lptr, "optional", 8) == 0) + sc_require_newdecls = 0; + else + error(146); + lptr=(unsigned char*)strchr((char*)lptr,'\0'); /* skip to end (ignore "extra characters on line") */ } else if (strcmp(str,"tabsize")==0) { cell val; preproc_expr(&val,NULL); diff --git a/sourcepawn/compiler/sc5.scp b/sourcepawn/compiler/sc5.scp index 70ea80d7..c2341156 100644 --- a/sourcepawn/compiler/sc5.scp +++ b/sourcepawn/compiler/sc5.scp @@ -31,14 +31,14 @@ SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned ch #define SCPACK_TABLE errstr_table /*-*SCPACK start of pair table, do not change or remove this line */ unsigned char errstr_table [][2] = { - {101,32}, {116,32}, {111,110}, {115,32}, {100,32}, {105,110}, {97,114}, {116,105}, {37,115}, {101,114}, {110,111}, {97,110}, {101,110}, {97,108}, {135,130}, {114,101}, - {34,136}, {144,34}, {111,114}, {117,110}, {121,32}, {138,129}, {115,105}, {115,116}, {97,116}, {100,101}, {101,132}, {109,140}, {32,145}, {41,10}, {109,98}, {116,104}, - {114,97}, {147,99}, {117,115}, {146,32}, {98,108}, {161,142}, {102,165}, {111,108}, {101,120}, {118,141}, {97,32}, {115,121}, {116,121}, {99,139}, {171,158}, {134,160}, - {174,167}, {112,101}, {173,149}, {115,10}, {103,32}, {103,117}, {181,155}, {137,32}, {134,182}, {116,111}, {102,133}, {105,132}, {115,150}, {104,97}, {169,187}, {111,102}, - {99,104}, {105,131}, {162,129}, {44,32}, {166,32}, {97,164}, {133,190}, {109,194}, {109,101}, {99,116}, {175,148}, {109,97}, {101,100}, {117,108}, {99,130}, {37,131}, - {97,142}, {176,156}, {191,32}, {99,111}, {98,128}, {101,131}, {118,134}, {112,143}, {130,32}, {105,197}, {214,217}, {118,128}, {110,32}, {153,186}, {102,105}, {184,129}, - {100,105}, {99,108}, {111,112}, {97,115}, {136,10}, {156,10}, {128,145}, {109,152}, {151,152}, {116,97}, {119,105}, {108,128}, {97,131}, {226,137}, {101,10}, {209,157}, - {34,32}, {189,219}, {40,239}, {172,112}, {150,122}, {206,151}, {139,32}, {141,32}, {172,177}, {110,97}, {101,108}, {243,128}, {139,132}, {102,146}, {133,32} + {101,32}, {116,32}, {111,110}, {115,32}, {100,32}, {97,114}, {105,110}, {116,105}, {37,115}, {101,114}, {110,111}, {97,110}, {101,110}, {97,108}, {135,130}, {114,101}, + {111,114}, {34,136}, {145,34}, {117,110}, {121,32}, {138,129}, {115,105}, {115,116}, {100,101}, {97,116}, {101,132}, {109,140}, {32,146}, {41,10}, {109,98}, {116,104}, + {114,97}, {117,115}, {144,32}, {147,99}, {98,108}, {163,142}, {102,165}, {101,120}, {118,141}, {97,32}, {111,108}, {116,121}, {99,139}, {112,101}, {115,121}, {172,149}, + {174,158}, {133,160}, {176,170}, {115,10}, {103,32}, {105,132}, {103,117}, {115,150}, {182,155}, {137,32}, {133,184}, {116,111}, {102,134}, {97,164}, {168,181}, {99,104}, + {161,129}, {134,190}, {109,192}, {104,97}, {111,102}, {105,131}, {44,32}, {166,32}, {109,101}, {99,116}, {98,128}, {97,142}, {177,148}, {109,97}, {101,100}, {117,108}, + {99,130}, {37,131}, {118,133}, {112,143}, {178,156}, {196,32}, {105,189}, {210,214}, {99,111}, {101,131}, {130,32}, {99,108}, {118,128}, {110,32}, {152,188}, {102,105}, + {111,112}, {186,129}, {100,105}, {97,115}, {108,128}, {112,128}, {97,131}, {136,10}, {156,10}, {109,153}, {151,153}, {116,97}, {171,229}, {119,105}, {215,128}, {224,137}, + {101,10}, {212,157}, {34,32}, {171,173}, {195,220}, {40,241}, {150,122}, {208,151}, {139,32}, {141,32}, {110,97}, {101,108}, {139,132}, {102,144}, {134,32} }; /*-*SCPACK end of pair table, do not change or remove this line */ @@ -189,150 +189,156 @@ static char *errmsg[] = { /*143*/ "new-style declarations should not have \"new\"\n", /*144*/ "void cannot be used as a variable type\n", /*145*/ "invalid type expression\n", +/*146*/ "#pragma newdecls must be required or optional\n", +/*147*/ "new-style declarations are required\n", #else - "\250\261\311\232\271k\214:\234\303bu\201fo\223\204\221\012", - "\202l\224\252s\205g\353\350e\233\201(\243\250\327\274\202) \255 f\247low ea\300 \042c\343e\042\012", - "\231\341\206\320 \322\252loc\367\332\200\307ap\261\206 \376\252\323mpo\223\204\244ock\012", - "\246\234 \301\225imple\233t\314\012", - "\304\313\224\225\361\270t\263", - "\307\324a\274gn\232\271 \366\257y\012", - "\355\230\243\262\324\217\335\314\012", - "\307\324\252\365\213\201\250\327\274\202; \343sum\232z\211o\012", - "\306\312\364\200(nega\207ve\303z\211o \243ou\201\322bo\223ds\235", - "\306\304\243\231\341\206\320\012", - "\306out\226d\200\246\263", - "\306\304c\215l\303\225\252\276add\217s\263", - "\212 \214tr\224po\205\201(\212 pu\244ic \246s\235", - "\306\350e\233t; \225\376s\352t\300\012", - "\042\231fa\315t\360c\343\200\307\324\237\200l\343\201c\343\200\376s\352t\300 \350e\233t\012", - "m\315\207p\353\231fa\315t\203\376\042s\352t\300\042\012", - "\223\335\232\321\012", - "\205i\207\215iz\320 d\230\252\250ce\314\203\231\341\206\232\364\356", - "\225\252lab\372:\345", - "\306\260 \371m\346\012", - "\260 \215\217ad\224\335\314:\345", - "\307\324l\251u\200(n\202-\365\213t\235", - "\312a\274gn\233\201\307\324\226mp\353a\274gn\233t\012", - "\042b\217ak\360\243\042\316t\205ue\360\301ou\201\322\316t\250t\012", - "\304head\205\264\340ff\211\203from pro\271\370\012", - "\212 \347\300\205\264\042#if...\042\012", - "\306\300\206a\311\267\365\213t\012", - "\306subscrip\201(\225\366\312\243\271o m\213\224subscripts):\345", - "\306\250\327\274\202\303\343sum\232z\211o\012", - "\323mpo\223\204\350e\233\201\225\341os\232a\201\237\200\214\204\322\336\353(\227\206t\232a\201l\205\200%d\235", - "\223k\212w\334\340\217c\207v\356", - "\312\205\231x ou\201\322bo\223d\203(\332\346\235", - "\312\307\324\205\231x\232(\332\346\235", - "\337do\325\225\361\252\231fa\315\201\251u\200(\337%d\235", - "\337\373mis\347\300 (\337%d\235", - "empt\224\350e\233t\012", - "\306\227r\205\264(po\274\244\224n\202-t\211m\205\230\232\227r\205g\235", - "\250t\240 \300\206a\311\211\203\330l\205\356", - "\365\213\201\260 \275\203\212 \364\356", - "duplic\230\200\042c\343e\360lab\372 (\251u\200%d\235", - "\306\372lip\226s\303\312\364\200\301\225k\212wn\012", - "\306\323\236\205\320 \322\341\343\203s\261ci\336\211\263", - "\300\206a\311\267\365\213\201\250ce\314\203r\213g\200f\243pack\232\227r\205g\012", - "po\226\216\367p\206a\310t\211\203\307\327c\314\200\215l \371m\232p\206a\310t\211\263", - "\271o m\213\224\304\270t\263", - "\223k\212w\334\312\364\200(\332\346\235", - "\312\364\325do \225\347\300\303\243\231\227\205\320 \312\301\271o sm\215l\012", - "\312(\203do \225\347\300\012", - "\306l\205\200\316t\205u\320\012", - "\306r\213g\356", - "\306subscript\303\242\200\042[ ]\360\355\230\222\203\330\313j\243\340\233\226\202\263", - "m\315\207-\340\233\226\202\367\257y\203\307\324f\315l\224\205i\207\215iz\314\012", - "\250ce\314\205\264\313ximum nu\236\267\322\340\233\226\202\263", - "\223\347\300\232\341os\205\264b\240c\200(\042}\042\235", - "\227\206\201\322\304bod\224\352\237ou\201\304head\211\012", - "\257ys\303loc\367\332\325\374\304\270t\203\262\324pu\244ic (\332\346\235", - "\223\272ish\232\250\327\274\330be\375\200\323mpil\267\340\217c\207v\356", - "duplic\230\200\270t; sam\200\337\301p\343s\232t\352c\356", - "\304\337\313\224\225\361\252\231fa\315\201\251u\200(\332\346\235", - "m\315\207p\353\042#\372se\360\340\217c\207v\325betwe\214 \042#if ... #\214\340f\042\012", - "\042#\372seif\360\340\217c\207\333f\247low\203\366\042#\372se\360\340\217c\207v\356", - "nu\236\267\322\355\213d\203do\325\225\336\201\237\200\355\230\222\012", - "\304\217s\315\201\351\264\322\355\230\222\234 \307\324\221\012", - "\262\300\213g\200\327\335\232\355\230\222\263", - "\304\337\313\224\202l\224\361\252s\205g\353\351\264(\337%d\235", - "\304\337\313\224\225\324\252\217f\211\214c\200\337\243\366\312(\337\221\235", - "\332\200\262\324bo\237 \252\217f\211\214c\200\374\366\312(\332\346\235", - "\306\240\216\367nu\236\267\327ci\226\330\376#p\240g\313\012", - "\240\216\367nu\236\267\375\313\201\215\217ad\224\335\314\012", - "\240\216\367nu\236\267supp\222\201w\354\225\214\305\314\012", - "\242\211-\335\232\355\230\243\307\324\231\341\206\232be\375\200\242\200(\246\234\235", - "\042\364e\277\360\355\230\243\301\306\330\042\246\360\260\263", - "\304\337\307\324\366\312(\337\221\235", - "#\335\200p\230t\211\334\307\227\206\201\352\237 \366\215p\275be\207c \300\206a\311\211\012", - "\205pu\201l\205\200\271o l\202\264(aft\267subs\207tu\216s\235", - "\253n\351x \211r\243\376\237\200\250\327\274\202\303\243\306\304c\215l\012", - "m\215\375m\232UTF-8 \214\323d\205g\303\243c\222rupt\232\336le: \344", - "\304\242\325bo\237 \042\217turn\360\374\042\217tur\334<\251ue>\042\012", - "\205\316\226\227\214\201\217tur\334\370\203(\312& n\202-\257y\235", - "\223k\212w\334\260\303\243\225\252\365\213\201\260 \362", - "\262\351k\200\252\351\264\354\252\231fa\315\201\251u\200f\243\366\205\231x\232\312p\206a\310t\267\362", - "\242\211-\335\232\355\230\222\203\374\371\207\333\246\203\313\224\225\361\350e\263", - "\252\304\243\332\200\313\224\202l\224b\372\202\264\271 \252s\205g\353au\271\347\330\362", - "\350\200\316fli\311: \202\200\322\237\200\350\325\301\215\217ad\224a\274gn\232\271 a\212\237\267imple\233t\320 \362", - "\212 \350\325\206\200\335\232f\243\321\012", - "\223k\212w\334au\271\347\202\345", - "\223k\212w\334\350\346 f\243au\271\347\202\345", - "pu\244ic \332\325\374loc\367\332\325\313\224\225\361\350\325\362", - "\350\200\332\325\313\224\225\324\205i\207\215iz\232\362", - "pu\244ic \246\203\313\224\225\217tur\334\257y\203\362", - "a\236i\265ou\203\365\213t; \351\264ov\211rid\200\301\217qui\217\204\362", - "nu\236\267\322\270t\203do\325\225\347\300 \335i\216\012", - "\250\261\311\232\351\264\371m\200id\214\207\336\211\012", - "\304\214um\211\320 \217qui\217\203\223iqu\200\351g\012", - "\262\361\217qui\217\204p\206a\310t\211\203aft\267\342\216\367p\206a\310t\211\263", - "\323\315\204\225\272\204\310\236\211\234 \376\227ruc\201\221\012", - "\321 do\325\225\361\252\347\300\205\264\370\012", - "\363\346 sho\315\204\324\221 \376new-\227y\353\231\341\206\320\263", - "\317sho\315\204\225\361\366\250plici\201\217tur\334\370\012", - "\304pro\271\370\203do \225\347\300\012", - "s\261cif\224ei\237\267\215l \340\233\226\202\203\243\202l\224\237\200l\343\201\340\233\226\202\012", - "\262\272\204\317\344", - "\317w\354\215\217ad\224\335\232\330\237\301\344", - "\262\272\204\213\224\310\237od\203f\243\344", - "\262\272\204\310\237o\204\243pr\355t\224\210.\344", - "\262c\215l \310\237od\203\330\366\257y\012", - "\262c\215l \310\237od\203\330\252\246\012", - "\310\237o\204\307\361\252\336rs\201\337\323mpa\207\244\200\352\237 \237\200\317\373(\210\235", - "\317\371m\200\307\227\206\201\352\237 \366upp\211c\343\200lett\211\012", - "\317\275\203\215\217ad\224be\214 \335\232(\327vio\242l\224se\214 \354\210\235", - "\250\261\311\232id\214\207\336\267- d\273you \375ge\201\252\370?\012", - "\365ru\311\243\304\307\217tur\334\351\264\344", - "\262\335\200\365ru\311\243\375\234; \215\217ad\224\250i\227\203\354\252\344", - "miss\205\264\370\303\243\317\307\361\237\200sam\200\371m\200\354\317\221\012", - "\262\242\200\231lete\303\317\317\275\203\212 \231\227ru\311\222\012", - "\212 \310\237od\313p \243\341\343\203w\354fo\223\204f\243\344", - "\212 \231\227ru\311\243w\354fo\223\204f\243\317\344", - "\231\227ru\311\222\203\307\324\371\207\333\246\263", - "\231\227ru\311\222\203\262\361\250t\240 \270t\263", - "\310\237od\313p \374\341\343\203\226gn\230u\217\203\307\242\200new-\227y\353\373\231\341\206\320\263", - "\262s\261cif\224\312\340\233\226\202\203\330bo\237 \373\374\371\310\012", - "\250\261\311\232\373\250\327\274\202\012", - "f\315ly-qu\215i\336\232\371m\346 \301\271o l\202g\303wo\315\204\324tr\241\230\232\271\345", - "\223\250\261\311\232\271k\214\303\250\261\311\232\310\237o\204\243pr\355\254\012", - "\250\261\311\232\042\371\207ve\360\243\042get\042\012", - "\317f\243\317\215\217ad\224\250i\227\263", - "pr\355t\224gett\211\203\262accep\201\250t\240 \270t\263", - "\317\307\361\237\200sam\200\217tur\334\373\354pr\355t\224\317(\210\235", - "\262mix \310\237od\313p\203\374\341\343s\325\352\237 \205h\211it\213c\356", - "\262\323\211c\200\246\203\271 \251ue\263", - "\262\323\211c\200objec\201\373\317\271 n\202-objec\201\373\344", - "\262\323\211c\200n\202-objec\201\373\317\271 objec\201\373\344", - "\262\323\211c\200\223\217l\230\232objec\201\370\203\317\374\344", - "\373mis\347\300 (\317\374\210\235", - "\262\242\200\366objec\201\376\252m\315\207-\351\264s\372e\311\222\012", - "\257y\203\206\200\225supp\222t\232\354\217tur\334\370\263", - "\262mix \217f\211\214c\200\374\312\370\263", - "\316s\201w\354s\261ci\336\232t\352c\356", - "\323\315\204\225\272\204\363\346\012", - "new-\227y\353\312\370\203\262s\261cif\224\340\233\226\330\364\325\354p\206\201\322\237eir \370\012", - "\371\207ves\303\375w\206ds\303\374pu\244ic \246\203\262\217tur\334\257y\263", - "\306\373\231\341\206\320\012", - "new-\227y\353\231\341\206\320\203sho\315\204\225\361\042new\042\012" + "\247\255\311\232\273k\214:\234\306bu\201fo\223\204\222\012", + "\202l\224\251s\206g\344\352e\233\201(\242\247\323\267\202) \254 f\252low ea\277 \042c\343e\042\012", + "\230\333\205\313 \325\251loc\371\356\302ap\255\205 \376\251\330mpo\223\204\244ock\012", + "\246\234 \305\225imple\233t\316\012", + "\307\315\224\225\364\272t\263", + "\302\312a\267gn\232\273 \370\261y\012", + "\357\231\242\257\312\217\336\316\012", + "\302\312\251\367\213\201\247\323\267\202; \343sum\232z\211o\012", + "\301\314\366\200(nega\207ve\306z\211o \242ou\201\325bo\223ds\235", + "\301\307\242\230\333\205\313\012", + "\301out\226d\200\246\263", + "\301\307c\215l\306\225\251\276add\217s\263", + "\212 \214tr\224po\206\201(\212 pu\244ic \246s\235", + "\301\352e\233t; \225\376s\355t\277\012", + "\042\230fa\317t\362c\343\200\302\312\237\200l\343\201c\343\200\376s\355t\277 \352e\233t\012", + "m\317\207p\344\230fa\317t\203\376\042s\355t\277\042\012", + "\223\336\232\324\012", + "\206i\207\215iz\313 d\231\251\247ce\316\203\230\333\205\232\366\360", + "\225\251lab\373:\350", + "\301\262 \372m\200\222\012", + "\262 \215\217ad\224\336\316:\350", + "\302\312l\250u\200(n\202-\367\213t\235", + "\314a\267gn\233\201\302\312\226mp\344a\267gn\233t\012", + "\042b\217ak\362\242\042\320t\206ue\362\305ou\201\325\320t\247t\012", + "\307head\206\264\342ff\211\203from pro\273\363\012", + "\212 \351\277\206\264\042#if...\042\012", + "\301\277\205a\311\271\367\213t\012", + "\301subscrip\201(\225\370\314\242\273o m\213\224subscripts):\350", + "\301\247\323\267\202\306\343sum\232z\211o\012", + "\330mpo\223\204\352e\233\201\225\333os\232a\201\237\200\214\204\325\337\344(\227\205t\232a\201l\206\200%d\235", + "\223k\212w\335\342\217c\207v\360", + "\314\206\230x ou\201\325bo\223d\203(\356\222\235", + "\314\302\312\206\230x\232(\356\222\235", + "\341do\331\225\364\251\230fa\317\201\250u\200(\341%d\235", + "\341\354mis\351\277 (\341%d\235", + "empt\224\352e\233t\012", + "\301\227r\206\264(po\267\244\224n\202-t\211m\206\231\232\227r\206g\235", + "\247t\240 \277\205a\311\211\203\332l\206\360", + "\367\213\201\262 \303\203\212 \366\360", + "duplic\231\200\042c\343e\362lab\373 (\250u\200%d\235", + "\301\373lip\226s\306\314\366\200\305\225k\212wn\012", + "\301\330\236\206\313 \325\333\343\203s\255ci\337\211\263", + "\277\205a\311\271\367\213\201\247ce\316\203r\213g\200f\242pack\232\227r\206g\012", + "po\226\216\371p\205a\310t\211\203\302\323c\316\200\215l \372m\232p\205a\310t\211\263", + "\273o m\213\224\307\272t\263", + "\223k\212w\335\314\366\200(\356\222\235", + "\314\366\331do \225\351\277\306\242\230\227\206\313 \314\305\273o sm\215l\012", + "\314(\203do \225\351\277\012", + "\301l\206\200\320t\206u\313\012", + "\301r\213g\360", + "\301subscript\306\241\200\042[ ]\362\357\231\220\203\332\315j\242\342\233\226\202\263", + "m\317\207-\342\233\226\202\371\261y\203\302\312f\317l\224\206i\207\215iz\316\012", + "\247ce\316\206\264\315ximum nu\236\271\325\342\233\226\202\263", + "\223\351\277\232\333os\206\264b\240c\200(\042}\042\235", + "\227\205\201\325\307bod\224\355\237ou\201\307head\211\012", + "\261ys\306loc\371\327\331\374\307\272t\203\257\312pu\244ic (\356\222\235", + "\223\274ish\232\247\323\267\332be\375\200\330mpil\271\342\217c\207v\360", + "duplic\231\200\272t; sam\200\341\305p\343s\232t\355c\360", + "\307\341\315\224\225\364\251\230fa\317\201\250u\200(\356\222\235", + "m\317\207p\344\042#\373se\362\342\217c\207v\331betwe\214 \042#if ... #\214\342f\042\012", + "\042#\373seif\362\342\217c\207\334f\252low\203\370\042#\373se\362\342\217c\207v\360", + "nu\236\271\325\357\213d\203do\331\225\337\201\237\200\357\231\220\012", + "\307\217s\317\201\353\264\325\357\231\220\234 \302\312\222\012", + "\257\277\213g\200\323\336\232\357\231\220\263", + "\307\341\315\224\202l\224\364\251s\206g\344\353\264(\341%d\235", + "\307\341\315\224\225\312\251\217f\211\214c\200\341\242\370\314(\341\222\235", + "\356\257\312bo\237 \251\217f\211\214c\200\374\370\314(\356\222\235", + "\301\240\216\371nu\236\271\323ci\226\332\376#p\240g\315\012", + "\240\216\371nu\236\271\375\315\201\215\217ad\224\336\316\012", + "\240\216\371nu\236\271supp\220\201w\346\225\214\275\316\012", + "\241\211-\336\232\357\231\242\302\312\230\333\205\232be\375\200\241\200(\246\234\235", + "\042\366e\304\362\357\231\242\305\301\332\042\246\362\262\263", + "\307\341\302\312\370\314(\341\222\235", + "#\336\200p\231t\211\335\302\227\205\201\355\237 \370\215p\303be\207c \277\205a\311\211\012", + "\206pu\201l\206\200\273o l\202\264(aft\271subs\207tu\216s\235", + "\256n\353x \211r\242\376\237\200\247\323\267\202\306\242\301\307c\215l\012", + "m\215\375m\232UTF-8 \214\330d\206g\306\242c\220rupt\232\337le: \347", + "\307\241\331bo\237 \042\217turn\362\374\042\217tur\335<\250ue>\042\012", + "\206\320\226\227\214\201\217tur\335\363\203(\314& n\202-\261y\235", + "\223k\212w\335\262\306\242\225\251\367\213\201\262 \365", + "\257\353k\200\251\353\264\346\251\230fa\317\201\250u\200f\242\370\206\230x\232\314p\205a\310t\271\365", + "\241\211-\336\232\357\231\220\203\374\372\207\334\246\203\315\224\225\364\352e\263", + "\251\307\242\356\315\224\202l\224b\373\202\264\273 \251s\206g\344au\273\351\332\365", + "\352\200\320fli\311: \202\200\325\237\200\352\331\305\215\217ad\224a\267gn\232\273 a\212\237\271imple\233t\313 \365", + "\212 \352\331\205\200\336\232f\242\324\012", + "\223k\212w\335au\273\351\202\350", + "\223k\212w\335\352\200\222 f\242au\273\351\202\350", + "pu\244ic \327\331\374loc\371\327\331\315\224\225\364\352\331\365", + "\352\200\327\331\315\224\225\312\206i\207\215iz\232\365", + "pu\244ic \246\203\315\224\225\217tur\335\261y\203\365", + "a\236i\266ou\203\367\213t; \353\264ov\211rid\200\305\217qui\217\204\365", + "nu\236\271\325\272t\203do\331\225\351\277 \336i\216\012", + "\247\255\311\232\353\264\372m\200id\214\207\337\211\012", + "\307\214um\211\313 \217qui\217\203\223iqu\200\353g\012", + "\257\364\217qui\217\204p\205a\310t\211\203aft\271\340\216\371p\205a\310t\211\263", + "\330\317\204\225\274\204\310\236\211\234 \376\227ruc\201\222\012", + "\324 do\331\225\364\251\351\277\206\264\363\012", + "\354\222 sho\317\204\312\222 \376new-\227y\344\230\333\205\313\263", + "\321sho\317\204\225\364\370\247plici\201\217tur\335\363\012", + "\307pro\273\363\203do \225\351\277\012", + "s\255cif\224ei\237\271\215l \342\233\226\202\203\242\202l\224\237\200l\343\201\342\233\226\202\012", + "\257\274\204\321\347", + "\321w\346\215\217ad\224\336\232\332\237\305\347", + "\257\274\204\213\224\310\237od\203f\242\347", + "\257\274\204\310\237o\204\242pr\357t\224\210.\347", + "\257c\215l \310\237od\203\332\370\261y\012", + "\257c\215l \310\237od\203\332\251\246\012", + "\310\237o\204\302\364\251\337rs\201\341\330mpa\207\244\200\355\237 \237\200\321\354(\210\235", + "\321\372m\200\302\227\205\201\355\237 \370upp\211c\343\200lett\211\012", + "\321\303\203\215\217ad\224be\214 \336\232(\323vio\241l\224se\214 \346\210\235", + "\247\255\311\232id\214\207\337\271- d\265you \375ge\201\251\363?\012", + "\367ru\311\242\307\302\217tur\335\353\264\347", + "\257\336\200\367ru\311\242\375\234; \215\217ad\224\247i\227\203\346\251\347", + "miss\206\264\363\306\242\321\302\364\237\200sam\200\372m\200\346\321\222\012", + "\257\241\200\230lete\306\321\321\303\203\212 \230\227ru\311\220\012", + "\212 \310\237od\315p \242\333\343\203w\346fo\223\204f\242\347", + "\212 \230\227ru\311\242w\346fo\223\204f\242\321\347", + "\230\227ru\311\220\203\302\312\372\207\334\246\263", + "\230\227ru\311\220\203\257\364\247t\240 \272t\263", + "\310\237od\315p \374\333\343\203\226gn\231u\217\203\302\241\200new-\227y\344\354\230\333\205\313\263", + "\257s\255cif\224\314\342\233\226\202\203\332bo\237 \354\374\372\310\012", + "\247\255\311\232\354\247\323\267\202\012", + "f\317ly-qu\215i\337\232\372m\200\222 \305\273o l\202g\306wo\317\204\312tr\243\231\232\273\350", + "\223\247\255\311\232\273k\214\306\247\255\311\232\310\237o\204\242pr\357\253\012", + "\247\255\311\232\042\372\207ve\362\242\042get\042\012", + "\321f\242\321\215\217ad\224\247i\227\263", + "pr\357t\224gett\211\203\257accep\201\247t\240 \272t\263", + "\321\302\364\237\200sam\200\217tur\335\354\346pr\357t\224\321(\210\235", + "\257mix \310\237od\315p\203\374\333\343s\331\355\237 \206h\211it\213c\360", + "\257\330\211c\200\246\203\273 \250ue\263", + "\257\330\211c\200objec\201\354\321\273 n\202-objec\201\354\347", + "\257\330\211c\200n\202-objec\201\354\321\273 objec\201\354\347", + "\257\330\211c\200\223\217l\231\232objec\201\363\203\321\374\347", + "\354mis\351\277 (\321\374\210\235", + "\257\241\200\370objec\201\376\251m\317\207-\353\264s\373e\311\220\012", + "\261y\203\205\200\225supp\220t\232\346\217tur\335\363\263", + "\257mix \217f\211\214c\200\374\314\363\263", + "\320s\201w\346s\255ci\337\232t\355c\360", + "\330\317\204\225\274\204\354\222\012", + "new-\227y\344\314\363\203\257s\255cif\224\342\233\226\332\366\331\346p\205\201\325\237eir \363\012", + "\372\207ves\306\375w\205ds\306\374pu\244ic \246\203\257\217tur\335\261y\263", + "\301\354\230\333\205\313\012", + "new-\227y\344\230\333\205\313\203sho\317\204\225\364\042new\042\012", + "vo\265\257\312\241\232\346\251\356\363\012", + "\301\354\247\323\267\202\012", + "#p\240gm\251new\230\333\203\302\312\217qui\217\204\242\340\216\215\012", + "new-\227y\344\230\333\205\313\203\205\200\217qui\217d\012" #endif }; @@ -357,18 +363,18 @@ static char *fatalmsg[] = { /*170*/ "assertion failed: %s\n", /*171*/ "user error: %s\n", #else - "\262\217a\204from \336le:\345", - "\262writ\200\271 \336le:\345", - "t\305\200ov\211flow:\345", - "\205suf\336ci\214\201\310m\222y\012", - "\306\343se\236l\267\205\227ruc\216\345", - "num\211ic ov\211flow\303\250ce\314\205\264capaci\254\012", - "\323mpil\232scrip\201\250ce\314\203\237\200\313ximum \310m\222\224\364\200(%l\204bytes\235", - "\271o m\213\224\211r\243\310ssag\325\330\202\200l\205\356", - "\323\231pag\200\313pp\205\264\336\353\225fo\223d\012", - "\306p\230h:\345", - "\343s\211\216 fail\314: \344", - "\242\267\211r\222: \344" + "\257\217a\204from \337le:\350", + "\257writ\200\273 \337le:\350", + "t\275\200ov\211flow:\350", + "\206suf\337ci\214\201\310m\220y\012", + "\301\343se\236l\271\206\227ruc\216\350", + "num\211ic ov\211flow\306\247ce\316\206\264capaci\253\012", + "\330mpil\232scrip\201\247ce\316\203\237\200\315ximum \310m\220\224\366\200(%l\204bytes\235", + "\273o m\213\224\211r\242\310ssag\331\332\202\200l\206\360", + "\330\230pag\200\315pp\206\264\337\344\225fo\223d\012", + "\301p\231h:\350", + "\343s\211\216 fail\316: \347", + "\241\271\211r\220: \347" #endif }; @@ -412,43 +418,43 @@ static char *warnmsg[] = { /*235*/ "public function lacks forward declaration (symbol \"%s\")\n", /*236*/ "unknown parameter in substitution (incorrect #define pattern)\n" #else - "\321 \301tr\241\230\232\271 %\204\300\206a\311\211\263", - "\217\335i\216 \322\365\213t/\313cro \362", - "nu\236\267\322\270t\203do\325\225\347\300 \335i\216\012", - "\260 \301nev\267\242\314:\345", - "\260 \301a\274gn\232\252\251u\200\237a\201\301nev\267\242\314:\345", - "\217d\223d\213\201\323\231: \365\213\201\250\327\274\330\301z\211o\012", - "\217d\223d\213\201te\227: \365\213\201\250\327\274\330\301n\202-z\211o\012", - "\223k\212w\334#p\240g\313\012", - "\304\352\237 \351\264\217s\315\201\242\232be\375\200\335i\216\303\375c\205\264\217p\206s\356", - "\246\234 sho\315\204\217tur\334\252\251u\356", - "po\274\244\200\242\200\322\260 be\375\200\205i\207\215iz\320:\345", - "po\274\244\224\223\205t\214\231\204a\274gn\233t\012", - "po\274\244\224\223\205t\214\231\204bit\352s\200\355\320\012", - "\351\264mis\347\300\012", - "po\274\244\224\252\042\365\360\312\337w\354\205t\214\231d:\345", - "\250\327\274\330\275\203\212 effe\311\012", - "ne\227\232\323m\233t\012", - "loos\200\205d\214t\320\012", - "\247\204\227y\353pro\271\370\203\242\232\352\237 \342\216\367semic\247umn\263", - "loc\367\332\346 s\275dow\203\252\332\200a\201\252\327c\314\205\264lev\372\012", - "\250\327\274\330\352\237 \351\264ov\211rid\200\307ap\261\206 betwe\214 p\206\214\237ese\263", - "lab\372 \371m\346 s\275dow\203\351\264\371\310\012", - "nu\236\267\322\340git\203\250ce\314\203\240\216\367nu\236\267\327ci\226\202\012", - "\217d\223d\213\201\042\364e\277\042: \337\364\200\301\215way\2031 \362", - "\205\231t\211m\205\230\200\312\364\200\376\042\364e\277\360\250\327\274\330\362", - "\223\217ac\275\244\200\323\231\012", - "\252\332\200\301a\274gn\232\271 its\372f \362", - "m\222\200\205i\207\215iz\211\203\237\366\214um \336\372d\263", - "l\214g\237 \322\205i\207\215iz\267\250ce\314\203\364\200\322\237\200\214um \336\372d\012", - "\205\231x \351\264mis\347\300 \362", - "\212 imple\233t\320 f\243\350\346 \376\246\234\303\212 f\215l-back\012", - "\350\200s\261ci\336c\320 \330\375w\206\204\231\341\206\320 \301ig\212\217d\012", - "outpu\201\336\353\301writt\214\303bu\201\352\237 \323mpac\201\214\323d\205\264\340s\305\314\012", - "\350\200\332\346 s\275dow\203\252glob\367\332\356", - "\321 \301m\206k\232\354\231\327c\230\314: \344", - "pu\244ic \304lack\203\375w\206\204\231\341\206\320 \362", - "\223k\212w\334p\206a\310t\267\376subs\207tu\216 (\205c\222\217c\201#\335\200p\230t\211n\235" + "\324 \305tr\243\231\232\273 %\204\277\205a\311\211\263", + "\217\336i\216 \325\367\213t/\315cro \365", + "nu\236\271\325\272t\203do\331\225\351\277 \336i\216\012", + "\262 \305nev\271\241\316:\350", + "\262 \305a\267gn\232\251\250u\200\237a\201\305nev\271\241\316:\350", + "\217d\223d\213\201\330\230: \367\213\201\247\323\267\332\305z\211o\012", + "\217d\223d\213\201te\227: \367\213\201\247\323\267\332\305n\202-z\211o\012", + "\223k\212w\335#p\240g\315\012", + "\307\355\237 \353\264\217s\317\201\241\232be\375\200\336i\216\306\375c\206\264\217p\205s\360", + "\246\234 sho\317\204\217tur\335\251\250u\360", + "po\267\244\200\241\200\325\262 be\375\200\206i\207\215iz\313:\350", + "po\267\244\224\223\206t\214\230\204a\267gn\233t\012", + "po\267\244\224\223\206t\214\230\204bit\355s\200\357\313\012", + "\353\264mis\351\277\012", + "po\267\244\224\251\042\367\362\314\341w\346\206t\214\230d:\350", + "\247\323\267\332\303\203\212 effe\311\012", + "ne\227\232\330m\233t\012", + "loos\200\206d\214t\313\012", + "\252\204\227y\344pro\273\363\203\241\232\355\237 \340\216\371semic\252umn\263", + "loc\371\356\222 s\303dow\203\251\356a\201\251\323c\316\206\264lev\373\012", + "\247\323\267\332\355\237 \353\264ov\211rid\200\302ap\255\205 betwe\214 p\205\214\237ese\263", + "lab\373 \372m\200\222 s\303dow\203\353\264\372\310\012", + "nu\236\271\325\342git\203\247ce\316\203\240\216\371nu\236\271\323ci\226\202\012", + "\217d\223d\213\201\042\366e\304\042: \341\366\200\305\215way\2031 \365", + "\206\230t\211m\206\231\200\314\366\200\376\042\366e\304\362\247\323\267\332\365", + "\223\217a\277\275\200\330\230\012", + "\251\356\305a\267gn\232\273 its\373f \365", + "m\220\200\206i\207\215iz\211\203\237\370\214um \337\373d\263", + "l\214g\237 \325\206i\207\215iz\271\247ce\316\203\366\200\325\237\200\214um \337\373d\012", + "\206\230x \353\264mis\351\277 \365", + "\212 imple\233t\313 f\242\352\200\222 \376\246\234\306\212 f\215l-back\012", + "\352\200s\255ci\337c\313 \332\375w\205\204\230\333\205\313 \305ig\212\217d\012", + "outpu\201\337\344\305writt\214\306bu\201\355\237 \330mpac\201\214\330d\206\264\342s\275\316\012", + "\352\200\356\222 s\303dow\203\251glob\371\327\360", + "\324 \305m\205k\232\346\230\323c\231\316: \347", + "pu\244ic \307lack\203\375w\205\204\230\333\205\313 \365", + "\223k\212w\335p\205a\310t\271\376subs\207tu\216 (\206c\220\217c\201#\336\200p\231t\211n\235" #endif }; diff --git a/sourcepawn/compiler/tests/ok-inline-methods.sp b/sourcepawn/compiler/tests/ok-inline-methods.sp index bdc12ba2..86945bf0 100644 --- a/sourcepawn/compiler/tests/ok-inline-methods.sp +++ b/sourcepawn/compiler/tests/ok-inline-methods.sp @@ -1,13 +1,13 @@ -methodmap Crab { - public Crab(n) { - return Crab:n; - } - public int Value() { - return _:this; - } -}; - -public main() { - new Crab:crab = Crab(5); - return crab.Value(); -} +methodmap Crab { + public Crab(int n) { + return Crab:n; + } + public int Value() { + return _:this; + } +}; + +public main() { + new Crab:crab = Crab(5); + return crab.Value(); +} diff --git a/sourcepawn/compiler/tests/ok-properties.sp b/sourcepawn/compiler/tests/ok-properties.sp index 80db5e16..52b26b51 100644 --- a/sourcepawn/compiler/tests/ok-properties.sp +++ b/sourcepawn/compiler/tests/ok-properties.sp @@ -1,29 +1,29 @@ -native Float:GetCrabWhat(Crab:crab); - -methodmap Crab { - public Crab(n) { - return Crab:n; - } - property Crab Yams { - public get() { - return Crab:5; - } - } - property int Blah { - public native get(); - } - property float What { - public get() = GetCrabWhat; - } -} - -print(n) { - return n -} - -public main() { - new Crab:crab = Crab(10); - print(_:crab.Yams.Yams.Yams) - print(crab.Blah); - print(_:crab.What); -} +native Float:GetCrabWhat(Crab:crab); + +methodmap Crab { + public Crab(int n) { + return Crab:n; + } + property Crab Yams { + public get() { + return Crab:5; + } + } + property int Blah { + public native get(); + } + property float What { + public get() = GetCrabWhat; + } +} + +print(n) { + return n +} + +public main() { + new Crab:crab = Crab(10); + print(_:crab.Yams.Yams.Yams) + print(crab.Blah); + print(_:crab.What); +} From 96bbd4d7e0f674e215361fdf52388a9c59b9d386 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 5 Jul 2014 01:13:45 -0700 Subject: [PATCH 2/2] Fix potential bugs in restoring newdecl state. --- sourcepawn/compiler/sc1.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index a098ead9..4dfaf515 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -3606,9 +3606,11 @@ symbol *parse_inline_function(methodmap_t *map, const typeinfo_t *type, const ch if (is_native) { target = funcstub(tMETHODMAP, &decl, thistag); } else { - sc_require_newdecls++; + int lcl_require_newdecls = sc_require_newdecls; + + sc_require_newdecls = TRUE; int ok = newfunc(&decl, thistag, FALSE, FALSE, TRUE, &target); - sc_require_newdecls--; + sc_require_newdecls = lcl_require_newdecls; if (!ok) return NULL;