diff --git a/sourcepawn/compiler/sc1.c b/sourcepawn/compiler/sc1.c index abe822c2..1ad1f8aa 100644 --- a/sourcepawn/compiler/sc1.c +++ b/sourcepawn/compiler/sc1.c @@ -3434,7 +3434,7 @@ methodmap_method_t *parse_method(methodmap_t *map) if (is_bind) { target = findglb(bindname, sGLOBAL); if (!target) - error(17, ident); + error(17, bindname); else if (target->ident != iFUNCTN) error(10); } else { @@ -3645,7 +3645,18 @@ static void dodelete() return; } - if (!map->dtor) { + { + methodmap_t *iter = map; + while (iter) { + if (iter->dtor) { + map = iter; + break; + } + iter = iter->parent; + } + } + + if (!map || !map->dtor) { error(115, layout_spec_name(map->spec), map->name); return; } diff --git a/sourcepawn/compiler/sc5.scp b/sourcepawn/compiler/sc5.scp index 68437f28..977f1367 100644 --- a/sourcepawn/compiler/sc5.scp +++ b/sourcepawn/compiler/sc5.scp @@ -1,407 +1,407 @@ -/* Pawn compiler - Error message strings (plain and compressed formats) - * - * Copyright (c) ITB CompuPhase, 2000-2006 - * - * This software is provided "as-is", without any express or implied warranty. - * In no event will the authors be held liable for any damages arising from - * the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software in - * a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - * - * Version: $Id$ - */ - -SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]); - -#ifndef SCPACK -# define SCPACK -# define SCPACK_PUSH -#endif - -#define SCPACK_TABLE errstr_table +/* Pawn compiler - Error message strings (plain and compressed formats) + * + * Copyright (c) ITB CompuPhase, 2000-2006 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ + +SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]); + +#ifndef SCPACK +# define SCPACK +# define SCPACK_PUSH +#endif + +#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}, {105,110}, {115,32}, {97,114}, {100,32}, {116,105}, {37,115}, {101,114}, {101,110}, {97,108}, {135,130}, {110,111}, {34,136}, {142,34}, - {117,110}, {114,101}, {111,114}, {97,110}, {121,32}, {115,116}, {100,101}, {115,105}, {97,116}, {141,129}, {32,143}, {109,98}, {109,138}, {41,10}, {101,134}, {140,32}, - {116,104}, {98,108}, {144,99}, {102,162}, {114,97}, {111,108}, {117,115}, {146,32}, {118,139}, {97,32}, {115,121}, {170,155}, {171,165}, {103,32}, {137,32}, {103,117}, - {101,120}, {175,156}, {133,164}, {133,177}, {102,131}, {105,134}, {115,151}, {97,161}, {99,104}, {163,159}, {168,181}, {111,102}, {105,132}, {115,10}, {131,186}, {101,100}, - {166,129}, {101,132}, {172,154}, {109,192}, {98,128}, {99,130}, {118,133}, {99,147}, {187,32}, {105,183}, {198,201}, {104,97}, {109,97}, {116,111}, {112,145}, {178,148}, - {199,153}, {150,180}, {116,97}, {109,101}, {99,116}, {179,129}, {130,32}, {133,97}, {149,152}, {44,32}, {102,105}, {118,128}, {154,10}, {101,10}, {109,152}, {194,157}, - {110,32}, {40,223}, {100,105}, {119,105}, {117,108}, {99,111}, {97,115}, {202,128}, {136,10}, {197,149}, {34,32}, {139,32}, {151,122}, {98,101}, {108,111}, {111,112}, - {108,128}, {163,140}, {102,146}, {131,32}, {147,32}, {160,32}, {210,173}, {131,173}, {222,184}, {195,196}, {203,219}, {58,220}, {100,111}, {109,112}, {160,128} +unsigned char errstr_table [][2] = { + {101,32}, {116,32}, {111,110}, {115,32}, {105,110}, {97,114}, {100,32}, {116,105}, {37,115}, {101,114}, {101,110}, {97,108}, {110,111}, {135,130}, {34,136}, {142,34}, + {117,110}, {111,114}, {114,101}, {97,110}, {121,32}, {115,116}, {100,101}, {115,105}, {97,116}, {140,129}, {32,143}, {109,98}, {109,138}, {41,10}, {101,134}, {141,32}, + {98,108}, {144,99}, {116,104}, {102,161}, {114,97}, {111,108}, {117,115}, {145,32}, {118,139}, {97,32}, {115,121}, {170,155}, {171,165}, {103,32}, {137,32}, {103,117}, + {101,120}, {175,156}, {133,164}, {133,177}, {102,132}, {105,134}, {115,151}, {97,160}, {99,104}, {163,159}, {168,181}, {111,102}, {105,131}, {115,10}, {132,186}, {101,100}, + {101,131}, {166,129}, {172,154}, {109,193}, {104,97}, {99,130}, {118,133}, {99,147}, {187,32}, {105,183}, {198,201}, {109,97}, {116,111}, {99,116}, {98,128}, {112,146}, + {178,148}, {199,153}, {150,180}, {116,97}, {109,101}, {179,129}, {44,32}, {130,32}, {133,97}, {149,152}, {102,105}, {118,128}, {154,10}, {101,10}, {109,152}, {194,157}, + {110,32}, {40,223}, {100,105}, {117,108}, {99,111}, {97,115}, {202,128}, {197,149}, {34,32}, {139,32}, {119,105}, {151,122}, {136,10}, {98,101}, {108,111}, {111,112}, + {108,128}, {163,141}, {102,145}, {132,32}, {140,32}, {147,32}, {211,173}, {132,173}, {222,184}, {195,206}, {196,219}, {58,220}, {100,111}, {149,114}, {109,112} }; /*-*SCPACK end of pair table, do not change or remove this line */ - -static char *errmsg[] = { -#ifdef SCPACK -/*001*/ "expected token: \"%s\", but found \"%s\"\n", -/*002*/ "only a single statement (or expression) can follow each \"case\"\n", -/*003*/ "declaration of a local variable must appear in a compound block\n", -/*004*/ "function \"%s\" is not implemented\n", -/*005*/ "function may not have arguments\n", -/*006*/ "must be assigned to an array\n", -/*007*/ "operator cannot be redefined\n", -/*008*/ "must be a constant expression; assumed zero\n", -/*009*/ "invalid array size (negative, zero or out of bounds)\n", -/*010*/ "invalid function or declaration\n", -/*011*/ "invalid outside functions\n", -/*012*/ "invalid function call, not a valid address\n", -/*013*/ "no entry point (no public functions)\n", -/*014*/ "invalid statement; not in switch\n", -/*015*/ "\"default\" case must be the last case in switch statement\n", -/*016*/ "multiple defaults in \"switch\"\n", -/*017*/ "undefined symbol \"%s\"\n", -/*018*/ "initialization data exceeds declared size\n", -/*019*/ "not a label: \"%s\"\n", -/*020*/ "invalid symbol name \"%s\"\n", -/*021*/ "symbol already defined: \"%s\"\n", -/*022*/ "must be lvalue (non-constant)\n", -/*023*/ "array assignment must be simple assignment\n", -/*024*/ "\"break\" or \"continue\" is out of context\n", -/*025*/ "function heading differs from prototype\n", -/*026*/ "no matching \"#if...\"\n", -/*027*/ "invalid character constant\n", -/*028*/ "invalid subscript (not an array or too many subscripts): \"%s\"\n", -/*029*/ "invalid expression, assumed zero\n", -/*030*/ "compound statement not closed at the end of file (started at line %d)\n", -/*031*/ "unknown directive\n", -/*032*/ "array index out of bounds (variable \"%s\")\n", -/*033*/ "array must be indexed (variable \"%s\")\n", -/*034*/ "argument does not have a default value (argument %d)\n", -/*035*/ "argument type mismatch (argument %d)\n", -/*036*/ "empty statement\n", -/*037*/ "invalid string (possibly non-terminated string)\n", -/*038*/ "extra characters on line\n", -/*039*/ "constant symbol has no size\n", -/*040*/ "duplicate \"case\" label (value %d)\n", -/*041*/ "invalid ellipsis, array size is not known\n", -/*042*/ "invalid combination of class specifiers\n", -/*043*/ "character constant exceeds range for packed string\n", -/*044*/ "positional parameters must precede all named parameters\n", -/*045*/ "too many function arguments\n", -/*046*/ "unknown array size (variable \"%s\")\n", -/*047*/ "array sizes do not match, or destination array is too small\n", -/*048*/ "array (s do not match\n", -/*049*/ "invalid line continuation\n", -/*050*/ "invalid range\n", -/*051*/ "invalid subscript, use \"[ ]\" operators on major dimensions\n", -/*052*/ "multi-dimensional arrays must be fully initialized\n", -/*053*/ "exceeding maximum number of dimensions\n", -/*054*/ "unmatched closing brace (\"}\")\n", -/*055*/ "start of function body without function header\n", -/*056*/ "arrays, local variables and function arguments cannot be public (variable \"%s\")\n", -/*057*/ "unfinished expression before compiler directive\n", -/*058*/ "duplicate argument; same argument is passed twice\n", -/*059*/ "function argument may not have a default value (variable \"%s\")\n", -/*060*/ "multiple \"#else\" directives between \"#if ... #endif\"\n", -/*061*/ "\"#elseif\" directive follows an \"#else\" directive\n", -/*062*/ "number of operands does not fit the operator\n", -/*063*/ "function result tag of operator \"%s\" must be \"%s\"\n", -/*064*/ "cannot change predefined operators\n", -/*065*/ "function argument may only have a single tag (argument %d)\n", -/*066*/ "function argument may not be a reference argument or an array (argument \"%s\")\n", -/*067*/ "variable cannot be both a reference and an array (variable \"%s\")\n", -/*068*/ "invalid rational number precision in #pragma\n", -/*069*/ "rational number format already defined\n", -/*070*/ "rational number support was not enabled\n", -/*071*/ "user-defined operator must be declared before use (function \"%s\")\n", -/*072*/ "\"sizeof\" operator is invalid on \"function\" symbols\n", -/*073*/ "function argument must be an array (argument \"%s\")\n", -/*074*/ "#define pattern must start with an alphabetic character\n", -/*075*/ "input line too long (after substitutions)\n", -/*076*/ "syntax error in the expression, or invalid function call\n", -/*077*/ "malformed UTF-8 encoding, or corrupted file: %s\n", -/*078*/ "function uses both \"return\" and \"return \"\n", -/*079*/ "inconsistent return types (array & non-array)\n", -/*080*/ "unknown symbol, or not a constant symbol (symbol \"%s\")\n", -/*081*/ "cannot take a tag as a default value for an indexed array parameter (symbol \"%s\")\n", -/*082*/ "user-defined operators and native functions may not have states\n", -/*083*/ "a function or variable may only belong to a single automaton (symbol \"%s\")\n", -/*084*/ "state conflict: one of the states is already assigned to another implementation (symbol \"%s\")\n", -/*085*/ "no states are defined for symbol \"%s\"\n", -/*086*/ "unknown automaton \"%s\"\n", -/*087*/ "unknown state \"%s\" for automaton \"%s\"\n", -/*088*/ "public variables and local variables may not have states (symbol \"%s\")\n", -/*089*/ "state variables may not be initialized (symbol \"%s\")\n", -/*090*/ "public functions may not return arrays (symbol \"%s\")\n", -/*091*/ "ambiguous constant; tag override is required (symbol \"%s\")\n", -/*092*/ "number of arguments does not match definition\n", -/*093*/ "expected tag name identifier\n", -/*094*/ "function enumeration requires unique tag\n", -/*095*/ "cannot have required parameters after optional parameters\n", -/*096*/ "could not find member \"%s\" in struct \"%s\"\n", -/*097*/ "symbol \"%s\" does not have a matching type\n", -/*098*/ "type \"%s\" should be \"%s\" in new-style declarations\n", -/*099*/ "destructors cannot return values\n", -/*100*/ "function prototypes do not match\n", -/*101*/ "specify either all dimensions or only the last dimension\n", -/*102*/ "cannot find %s %s\n", -/*103*/ "%s was already defined on this %s\n", -/*104*/ "cannot find any methods for %s\n", -/*105*/ "cannot find method %s.%s\n", -/*106*/ "cannot call methods on an array\n", -/*107*/ "cannot call methods on a function\n", -/*108*/ "method must have a first argument compatible with the %s type (%s)\n", -/*109*/ "%s name must start with an uppercase letter\n", -/*110*/ "%s has already been defined (previously seen as %s)\n", -/*111*/ "expected identifier - did you forget a type?\n", -/*112*/ "constructor function must return tag %s\n", -/*113*/ "cannot define constructor for \"%s\"; already exists as a %s\n", -/*114*/ "destructor must have the same name as %s \"%s\"\n", -/*115*/ "delete cannot be used with %s\n", -/*116*/ "no methodmap or class was found for %s\n", -/*117*/ "no destructor was found for %s %s\n", -/*118*/ "destructors must be native functions\n", -/*119*/ "destructors cannot have extra arguments\n", -#else - "\260pe\324\236\315k\212:\232\331bu\201fo\220\206\217\012", - "\202l\224\251s\203g\360\330e\234\201(\247\260\316\266\202) \307 f\245\356w ea\270 \042c\346e\042\012", - "\226cl\327\237\310\251\356c\353\347\303appe\205 \363\251\345\375o\220\206\241ock\012", - "\361\232 \274\231i\375le\234t\277\012", - "\271\314\224\231\372\263t\275", - "\371a\266gn\236\315 \364\262y\012", - "\357\211\230\247\320\304\221\321\277\012", - "\371\251\351\223\201\260\316\266\202; \346sum\236z\211o\012", - "\276\317\354\200(nega\207ve\331z\211o \247ou\201\310bo\220ds\235", - "\276\271\247\226cl\327\214\012", + +static char *errmsg[] = { +#ifdef SCPACK +/*001*/ "expected token: \"%s\", but found \"%s\"\n", +/*002*/ "only a single statement (or expression) can follow each \"case\"\n", +/*003*/ "declaration of a local variable must appear in a compound block\n", +/*004*/ "function \"%s\" is not implemented\n", +/*005*/ "function may not have arguments\n", +/*006*/ "must be assigned to an array\n", +/*007*/ "operator cannot be redefined\n", +/*008*/ "must be a constant expression; assumed zero\n", +/*009*/ "invalid array size (negative, zero or out of bounds)\n", +/*010*/ "invalid function or declaration\n", +/*011*/ "invalid outside functions\n", +/*012*/ "invalid function call, not a valid address\n", +/*013*/ "no entry point (no public functions)\n", +/*014*/ "invalid statement; not in switch\n", +/*015*/ "\"default\" case must be the last case in switch statement\n", +/*016*/ "multiple defaults in \"switch\"\n", +/*017*/ "undefined symbol \"%s\"\n", +/*018*/ "initialization data exceeds declared size\n", +/*019*/ "not a label: \"%s\"\n", +/*020*/ "invalid symbol name \"%s\"\n", +/*021*/ "symbol already defined: \"%s\"\n", +/*022*/ "must be lvalue (non-constant)\n", +/*023*/ "array assignment must be simple assignment\n", +/*024*/ "\"break\" or \"continue\" is out of context\n", +/*025*/ "function heading differs from prototype\n", +/*026*/ "no matching \"#if...\"\n", +/*027*/ "invalid character constant\n", +/*028*/ "invalid subscript (not an array or too many subscripts): \"%s\"\n", +/*029*/ "invalid expression, assumed zero\n", +/*030*/ "compound statement not closed at the end of file (started at line %d)\n", +/*031*/ "unknown directive\n", +/*032*/ "array index out of bounds (variable \"%s\")\n", +/*033*/ "array must be indexed (variable \"%s\")\n", +/*034*/ "argument does not have a default value (argument %d)\n", +/*035*/ "argument type mismatch (argument %d)\n", +/*036*/ "empty statement\n", +/*037*/ "invalid string (possibly non-terminated string)\n", +/*038*/ "extra characters on line\n", +/*039*/ "constant symbol has no size\n", +/*040*/ "duplicate \"case\" label (value %d)\n", +/*041*/ "invalid ellipsis, array size is not known\n", +/*042*/ "invalid combination of class specifiers\n", +/*043*/ "character constant exceeds range for packed string\n", +/*044*/ "positional parameters must precede all named parameters\n", +/*045*/ "too many function arguments\n", +/*046*/ "unknown array size (variable \"%s\")\n", +/*047*/ "array sizes do not match, or destination array is too small\n", +/*048*/ "array (s do not match\n", +/*049*/ "invalid line continuation\n", +/*050*/ "invalid range\n", +/*051*/ "invalid subscript, use \"[ ]\" operators on major dimensions\n", +/*052*/ "multi-dimensional arrays must be fully initialized\n", +/*053*/ "exceeding maximum number of dimensions\n", +/*054*/ "unmatched closing brace (\"}\")\n", +/*055*/ "start of function body without function header\n", +/*056*/ "arrays, local variables and function arguments cannot be public (variable \"%s\")\n", +/*057*/ "unfinished expression before compiler directive\n", +/*058*/ "duplicate argument; same argument is passed twice\n", +/*059*/ "function argument may not have a default value (variable \"%s\")\n", +/*060*/ "multiple \"#else\" directives between \"#if ... #endif\"\n", +/*061*/ "\"#elseif\" directive follows an \"#else\" directive\n", +/*062*/ "number of operands does not fit the operator\n", +/*063*/ "function result tag of operator \"%s\" must be \"%s\"\n", +/*064*/ "cannot change predefined operators\n", +/*065*/ "function argument may only have a single tag (argument %d)\n", +/*066*/ "function argument may not be a reference argument or an array (argument \"%s\")\n", +/*067*/ "variable cannot be both a reference and an array (variable \"%s\")\n", +/*068*/ "invalid rational number precision in #pragma\n", +/*069*/ "rational number format already defined\n", +/*070*/ "rational number support was not enabled\n", +/*071*/ "user-defined operator must be declared before use (function \"%s\")\n", +/*072*/ "\"sizeof\" operator is invalid on \"function\" symbols\n", +/*073*/ "function argument must be an array (argument \"%s\")\n", +/*074*/ "#define pattern must start with an alphabetic character\n", +/*075*/ "input line too long (after substitutions)\n", +/*076*/ "syntax error in the expression, or invalid function call\n", +/*077*/ "malformed UTF-8 encoding, or corrupted file: %s\n", +/*078*/ "function uses both \"return\" and \"return \"\n", +/*079*/ "inconsistent return types (array & non-array)\n", +/*080*/ "unknown symbol, or not a constant symbol (symbol \"%s\")\n", +/*081*/ "cannot take a tag as a default value for an indexed array parameter (symbol \"%s\")\n", +/*082*/ "user-defined operators and native functions may not have states\n", +/*083*/ "a function or variable may only belong to a single automaton (symbol \"%s\")\n", +/*084*/ "state conflict: one of the states is already assigned to another implementation (symbol \"%s\")\n", +/*085*/ "no states are defined for symbol \"%s\"\n", +/*086*/ "unknown automaton \"%s\"\n", +/*087*/ "unknown state \"%s\" for automaton \"%s\"\n", +/*088*/ "public variables and local variables may not have states (symbol \"%s\")\n", +/*089*/ "state variables may not be initialized (symbol \"%s\")\n", +/*090*/ "public functions may not return arrays (symbol \"%s\")\n", +/*091*/ "ambiguous constant; tag override is required (symbol \"%s\")\n", +/*092*/ "number of arguments does not match definition\n", +/*093*/ "expected tag name identifier\n", +/*094*/ "function enumeration requires unique tag\n", +/*095*/ "cannot have required parameters after optional parameters\n", +/*096*/ "could not find member \"%s\" in struct \"%s\"\n", +/*097*/ "symbol \"%s\" does not have a matching type\n", +/*098*/ "type \"%s\" should be \"%s\" in new-style declarations\n", +/*099*/ "destructors cannot return values\n", +/*100*/ "function prototypes do not match\n", +/*101*/ "specify either all dimensions or only the last dimension\n", +/*102*/ "cannot find %s %s\n", +/*103*/ "%s was already defined on this %s\n", +/*104*/ "cannot find any methods for %s\n", +/*105*/ "cannot find method %s.%s\n", +/*106*/ "cannot call methods on an array\n", +/*107*/ "cannot call methods on a function\n", +/*108*/ "method must have a first argument compatible with the %s type (%s)\n", +/*109*/ "%s name must start with an uppercase letter\n", +/*110*/ "%s has already been defined (previously seen as %s)\n", +/*111*/ "expected identifier - did you forget a type?\n", +/*112*/ "constructor function must return tag %s\n", +/*113*/ "cannot define constructor for \"%s\"; already exists as a %s\n", +/*114*/ "destructor must have the same name as %s \"%s\"\n", +/*115*/ "cannot use delete, %s %s has no destructor\n", +/*116*/ "no methodmap or class was found for %s\n", +/*117*/ "no destructor was found for %s %s\n", +/*118*/ "destructors must be native functions\n", +/*119*/ "destructors cannot have extra arguments\n", +#else + "\260pe\315\236\314k\212:\232\326bu\201fo\220\206\217\012", + "\202l\224\251s\204g\360\331e\234\201(\247\260\317\266\202) \307 f\245\356w ea\270 \042c\345e\042\012", + "\226cl\330\237\310\251\356c\351\346\303appe\205 \363\251\344\376o\220\206\240ock\012", + "\361\232 \274\231i\376le\234t\277\012", + "\271\313\224\231\372\263t\275", + "\371a\266gn\236\314 \365\262y\012", + "\357\211\230\247\321\316\222\322\277\012", + "\371\251\347\223\201\260\317\266\202; \345sum\236z\211o\012", + "\276\320\353\200(nega\207ve\326z\211o \247ou\201\310bo\220ds\235", + "\276\271\247\226cl\330\215\012", "\276out\227d\200\361\275", - "\276\271c\213l\331\231\251\272add\221s\275", - "\215 \212tr\224po\203\201(\215 pu\241ic \361s\235", - "\276\330e\234t; \231\363s\343t\270\012", - "\042\226fa\344t\352c\346\200\371\376l\346\201c\346\200\363s\343t\270 \330e\234t\012", - "m\344\207p\360\226fa\344t\204\363\042s\343t\270\042\012", - "\220\321\236\302\012", - "\203i\207\213iza\237d\230\251\260ce\277\204\226cl\205\236\354\335", + "\276\271c\213l\326\231\251\272add\222s\275", + "\364\212tr\224po\204\201(\364pu\240ic \361s\235", + "\276\331e\234t; \231\363s\352t\270\012", + "\042\226fa\343t\350c\345\200\371\242\200l\345\201c\345\200\363s\352t\270 \331e\234t\012", + "m\343\207p\360\226fa\343t\203\363\042s\352t\270\042\012", + "\220\322\236\302\012", + "\204i\207\213iza\237d\230\251\260ce\277\203\226cl\205\236\353\335", "\231\251la\355l\373", "\276\254 nam\200\217\012", - "\254 \213\221ad\224\321\277\373", - "\371l\250u\200(n\202-\351\223t\235", - "\317a\266gn\234\201\371\227\375\360a\266gn\234t\012", - "\042b\221ak\352\247\042\305t\203ue\352\274ou\201\310\305t\260t\012", - "\271head\367\342ff\211\204from pro\315typ\335", - "\215 \370\367\042#if...\042\012", - "\276\270\327\324\256\351\223t\012", - "\276subscrip\201(\231\364\317\247\315o m\223\224subscripts)\373", - "\276\260\316\266\202\331\346sum\236z\211o\012", - "\345\375o\220\206\330e\234\201\231c\356s\236a\201\376\212\206\310\332\360(\225\205t\236a\201l\203\200%d\235", - "\220k\215w\340\342\221c\207v\335", - "\317\203\226x ou\201\310bo\220d\204(\347\217\235", - "\317\371\203\226x\236(\347\217\235", - "\325\374\301\231\372\251\226fa\344\201\250u\200(\325%d\235", + "\254 \213\222ad\224\322\277\373", + "\371l\250u\200(n\202-\347\223t\235", + "\320a\266gn\234\201\371\227\376\360a\266gn\234t\012", + "\042b\222ak\350\247\042\305t\204ue\350\274ou\201\310\305t\260t\012", + "\271head\367\342ff\211\203from pro\314typ\335", + "\364\370\367\042#if...\042\012", + "\276\270\330\315\256\347\223t\012", + "\276subscrip\201(\231\365\320\247\314o m\223\224subscripts)\373", + "\276\260\317\266\202\326\345sum\236z\211o\012", + "\344\376o\220\206\331e\234\201\231c\356s\236a\201\242\200\212\206\310\332\360(\225\205t\236a\201l\204\200%d\235", + "\220k\214w\340\342\222c\207v\335", + "\320\204\226x ou\201\310bo\220d\203(\346\217\235", + "\320\371\204\226x\236(\346\217\235", + "\325\374\300\231\372\251\226fa\343\201\250u\200(\325%d\235", "\325typ\200mis\370 (\325%d\235", - "e\375t\224\330e\234t\012", - "\276\225r\367(po\266\241\224n\202-t\211m\203\230\236\225r\203g\235", - "\260t\244 \270\327\324\211\204\326l\203\335", - "\351\223\201\254 \313\204\215 \354\335", - "duplic\230\200\042c\346e\352la\355l (\250u\200%d\235", - "\276ellip\227s\331\317\354\200\274\231k\215wn\012", - "\276\345\233\203a\237\310cl\346\204speci\332\211\275", - "\270\327\324\256\351\223\201\260ce\277\204r\223g\200f\247pack\236\225r\203g\012", - "po\227\214\353p\327\323t\211\204\303\316c\277\200\213l nam\236p\327\323t\211\275", - "\315o m\223\224\271\263t\275", - "\220k\215w\340\317\354\200(\347\217\235", - "\317\354\301\374 \231\370\331\247\226\225\203a\237\317\274\315o sm\213l\012", - "\317(\204\374 \231\370\012", - "\276l\203\200\305t\203ua\214\012", + "e\376t\224\331e\234t\012", + "\276\375\367(po\266\240\224n\202-t\211m\204\230\236\375\204g\235", + "\260t\244 \270\330\315\211\203\327l\204\335", + "\347\223\201\254 \304\203\364\353\335", + "duplic\230\200\042c\345e\350la\355l (\250u\200%d\235", + "\276ellip\227s\326\320\353\200\274\231k\214wn\012", + "\276\344\233\204a\237\310cl\345\203speci\332\211\275", + "\270\330\315\256\347\223\201\260ce\277\203r\223g\200f\247pack\236\375\204g\012", + "po\227\215\351p\330\324t\211\203\303\317c\277\200\213l nam\236p\330\324t\211\275", + "\314o m\223\224\271\263t\275", + "\220k\214w\340\320\353\200(\346\217\235", + "\320\353\300\374 \231\370\326\247\226\225\204a\237\320\274\314o sm\213l\012", + "\320(\203\374 \231\370\012", + "\276l\204\200\305t\204ua\215\012", "\276r\223g\335", - "\276subscript\331\246\200\042[ ]\352\357\211\230\222\204\326\314j\247\342\234\227\202\275", - "m\344\207-\342\234\227\202\353\262y\204\371f\344l\224\203i\207\213iz\277\012", - "\260ce\277\367\314ximum nu\233\256\310\342\234\227\202\275", + "\276subscript\326\246\200\042[ ]\350\357\211\230\221\203\327\313j\247\342\234\227\202\275", + "m\343\207-\342\234\227\202\351\262y\203\371f\343l\224\204i\207\213iz\277\012", + "\260ce\277\367\313ximum nu\233\256\310\342\234\227\202\275", "\220\370\236c\356s\367b\244c\200(\042}\042\235", - "\225\205\201\310\271bod\224\343\240ou\201\271head\211\012", - "\262ys\331\356c\353\312\301\223\206\271\263t\204\320\304pu\241ic (\347\217\235", - "\220\264ish\236\260\316\266\326\355\362\200\345\375il\256\342\221c\207v\335", - "duplic\230\200\263t; sam\200\325\274p\346s\236t\343c\335", - "\271\325\314\224\231\372\251\226fa\344\201\250u\200(\347\217\235", - "m\344\207p\360\042#else\352\342\221c\207v\301\355twe\212 \042#if ... #\212\342f\042\012", - "\042#elseif\352\342\221c\207\333f\245\356w\204\364\042#else\352\342\221c\207v\335", - "nu\233\256\310\357\211\223d\204\374\301\231\332\201\376\357\211\230\222\012", - "\271\221s\344\201\366\310\357\211\230\222\232 \371\217\012", - "\320\270\223g\200\316\321\236\357\211\230\222\275", - "\271\325\314\224\202l\224\372\251s\203g\360\366(\325%d\235", - "\271\325\314\224\231\304\251\221f\211\212c\200\325\247\364\317(\325\217\235", - "\347\320\304bo\365\251\221f\211\212c\200\223\206\364\317(\347\217\235", - "\276\244\214\353nu\233\256\316ci\227\326\363#p\244g\314\012", - "\244\214\353nu\233\256\362\314\201\213\221ad\224\321\277\012", - "\244\214\353nu\233\256supp\222\201wa\204\231\212\267\277\012", - "\246\211-\321\236\357\211\230\247\371\226cl\205\236\355\362\200\246\200(\361\232\235", - "\042\354e\273\352\357\211\230\247\274\276\326\042\361\352\254\275", - "\271\325\371\364\317(\325\217\235", - "#\321\200p\230t\211\340\303\225\205\201\343\365\364\213p\313\355\207c \270\327\324\211\012", - "\203pu\201l\203\200\315o l\202\255(aft\256subs\207tu\214s\235", - "\252n\322x \211r\247\363\376\260\316\266\202\331\247\276\271c\213l\012", - "m\213\362m\236UTF-8 \212\345d\203g\331\247c\222rupt\236\332le: \350", - "\271\246\301bo\365\042\221turn\352\223\206\042\221tur\340<\250ue>\042\012", - "\203\305\227\225\212\201\221tur\340typ\301(\317& n\202-\262y\235", - "\220k\215w\340\254\331\247\231\251\351\223\201\254 \341", - "\320\322k\200\251\366a\204\251\226fa\344\201\250u\200f\247\364\203\226x\236\317p\327\323t\256\341", - "\246\211-\321\236\357\211\230\222\204\223\206na\207\333\361\204\314\224\231\372\330e\275", - "\251\271\247\347\314\224\202l\224\355l\202\255\315 \251s\203g\360au\315\336\326\341", - "\330\200\305fli\324: \202\200\310\376\330\301\274\213\221ad\224a\266gn\236\315 a\215\240\256i\375le\234\322\237\341", - "\215 \330\301\205\200\321\236f\247\302\012", - "\220k\215w\340au\315\336\202\334", - "\220k\215w\340\330\200\217 f\247au\315\336\202\334", - "pu\241ic \312\301\223\206\356c\353\312\301\314\224\231\372\330\301\341", - "\330\200\312\301\314\224\231\304\203i\207\213iz\236\341", - "pu\241ic \361\204\314\224\231\221tur\340\262y\204\341", - "a\233i\257ou\204\351\223t; \366ov\211rid\200\274\221qui\221\206\341", - "nu\233\256\310\263t\204\374\301\231\370 \321i\214\012", - "\260pe\324\236\366nam\200id\212\207\332\211\012", - "\271\212um\211a\237\221qui\221\204\220iqu\200\322g\012", - "\320\372\221qui\221\206p\327\323t\211\204aft\256\357\214\353p\327\323t\211\275", - "\345\344\206\231\264\206\323\233\211\232 \363\225ruc\201\217\012", - "\302 \374\301\231\372\251\370\367typ\335", - "typ\200\217 sho\344\206\304\217 \363new-\225y\360\226cl\327\214\275", - "\226\225ru\324\222\204\320\221tur\340\250ue\275", - "\271pro\315typ\301\374 \231\370\012", - "specif\224ei\240\256\213l \342\234\227\202\204\247\202l\224\376l\346\201\342\234\227\202\012", - "\320\264\206%\204\350", - "%\204wa\204\213\221ad\224\321\236\326\240\274\350", - "\320\264\206\223\224\323\240od\204f\247\350", - "\320\264\206\323\240o\206\210.\350", - "\320c\213l \323\240od\204\326\364\262y\012", - "\320c\213l \323\240od\204\326\251\361\012", - "\323\240o\206\303\372\251\332rs\201\325\345\375a\207\241\200\343\365\376%\204typ\200(\210\235", - "%\204nam\200\303\225\205\201\343\365\364upp\211c\346\200lett\211\012", - "%\204\313\204\213\221ad\224\355\212 \321\236(\316vio\246l\224se\212 a\204\210\235", - "\260pe\324\236id\212\207\332\256- d\265you \362ge\201\251type?\012", - "\351ru\324\247\271\303\221tur\340\366\350", - "\320\321\200\351ru\324\247\362\232; \213\221ad\224\260i\225\204a\204\251\350", - "\226\225ru\324\247\303\372\376sam\200nam\200a\204%\204\217\012", - "\226let\200\320\304\246\236\343\365\350", - "\215 \323\240od\314p \247cl\346\204wa\204fo\220\206f\247\350", - "\215 \226\225ru\324\247wa\204fo\220\206f\247%\204\350", - "\226\225ru\324\222\204\371na\207\333\361\275", - "\226\225ru\324\222\204\320\372\260t\244 \263t\275" -#endif - }; - -static char *fatalmsg[] = { -#ifdef SCPACK -/*120*/ "cannot read from file: \"%s\"\n", -/*121*/ "cannot write to file: \"%s\"\n", -/*122*/ "table overflow: \"%s\"\n", - /* table can be: loop table - * literal table - * staging buffer - * option table (response file) - * peephole optimizer table - */ -/*123*/ "insufficient memory\n", -/*124*/ "invalid assembler instruction \"%s\"\n", -/*125*/ "numeric overflow, exceeding capacity\n", -/*126*/ "compiled script exceeds the maximum memory size (%ld bytes)\n", -/*127*/ "too many error messages on one line\n", -/*128*/ "codepage mapping file not found\n", -/*129*/ "invalid path: \"%s\"\n", -/*130*/ "assertion failed: %s\n", -/*131*/ "user error: %s\n", -#else - "\320\221a\206from \332le\373", - "\320writ\200\315 \332le\373", + "\225\205\201\310\271bod\224\352\242ou\201\271head\211\012", + "\262ys\326\356c\351\312\300\223\206\271\263t\203\321\316pu\240ic (\346\217\235", + "\220\264ish\236\260\317\266\327\355\362\200\344\376il\256\342\222c\207v\335", + "duplic\230\200\263t; sam\200\325\274p\345s\236t\352c\335", + "\271\325\313\224\231\372\251\226fa\343\201\250u\200(\346\217\235", + "m\343\207p\360\042#else\350\342\222c\207v\300\355twe\212 \042#if ... #\212\342f\042\012", + "\042#elseif\350\342\222c\207\333f\245\356w\203\365\042#else\350\342\222c\207v\335", + "nu\233\256\310\357\211\223d\203\374\300\231\332\201\242\200\357\211\230\221\012", + "\271\222s\343\201\366\310\357\211\230\221\232 \371\217\012", + "\321\270\223g\200\317\322\236\357\211\230\221\275", + "\271\325\313\224\202l\224\372\251s\204g\360\366(\325%d\235", + "\271\325\313\224\231\316\251\222f\211\212c\200\325\247\365\320(\325\217\235", + "\346\321\316bo\242 \251\222f\211\212c\200\223\206\365\320(\346\217\235", + "\276\244\215\351nu\233\256\317ci\227\327\363#p\244g\313\012", + "\244\215\351nu\233\256\362\313\201\213\222ad\224\322\277\012", + "\244\215\351nu\233\256supp\221\201wa\203\231\212\267\277\012", + "\246\211-\322\236\357\211\230\247\371\226cl\205\236\355\362\200\246\200(\361\232\235", + "\042\353e\273\350\357\211\230\247\274\276\327\042\361\350\254\275", + "\271\325\371\365\320(\325\217\235", + "#\322\200p\230t\211\340\303\225\205\201\352\242 \365\213p\304\355\207c \270\330\315\211\012", + "\204pu\201l\204\200\314o l\202\255(aft\256subs\207tu\215s\235", + "\252n\323x \211r\247\363\242\200\260\317\266\202\326\247\276\271c\213l\012", + "m\213\362m\236UTF-8 \212\344d\204g\326\247c\221rupt\236\332le: \354", + "\271\246\300bo\242 \042\222turn\350\223\206\042\222tur\340<\250ue>\042\012", + "\204\305\227\225\212\201\222tur\340typ\300(\320& n\202-\262y\235", + "\220k\214w\340\254\326\247\231\251\347\223\201\254 \341", + "\321\323k\200\251\366a\203\251\226fa\343\201\250u\200f\247\365\204\226x\236\320p\330\324t\256\341", + "\246\211-\322\236\357\211\230\221\203\223\206na\207\333\361\203\313\224\231\372\331e\275", + "\251\271\247\346\313\224\202l\224\355l\202\255\314 \251s\204g\360au\314\336\327\341", + "\331\200\305fli\315: \202\200\310\242\200\331\300\274\213\222ad\224a\266gn\236\314 a\214\242\256i\376le\234\323\237\341", + "\364\331\300\205\200\322\236f\247\302\012", + "\220k\214w\340au\314\336\202\334", + "\220k\214w\340\331\200\217 f\247au\314\336\202\334", + "pu\240ic \312\300\223\206\356c\351\312\300\313\224\231\372\331\300\341", + "\331\200\312\300\313\224\231\316\204i\207\213iz\236\341", + "pu\240ic \361\203\313\224\231\222tur\340\262y\203\341", + "a\233i\257ou\203\347\223t; \366ov\211rid\200\274\222qui\222\206\341", + "nu\233\256\310\263t\203\374\300\231\370 \322i\215\012", + "\260pe\315\236\366nam\200id\212\207\332\211\012", + "\271\212um\211a\237\222qui\222\203\220iqu\200\323g\012", + "\321\372\222qui\222\206p\330\324t\211\203aft\256\357\215\351p\330\324t\211\275", + "\344\343\206\231\264\206\324\233\211\232 \363\375uc\201\217\012", + "\302 \374\300\231\372\251\370\367typ\335", + "typ\200\217 sho\343\206\316\217 \363new-\225y\360\226cl\330\215\275", + "\226\375u\315\221\203\321\222tur\340\250ue\275", + "\271pro\314typ\300\374 \231\370\012", + "specif\224ei\242\256\213l \342\234\227\202\203\247\202l\224\242\200l\345\201\342\234\227\202\012", + "\321\264\206%\203\354", + "%\203wa\203\213\222ad\224\322\236\327\242\274\354", + "\321\264\206\223\224\324\242od\203f\247\354", + "\321\264\206\324\242o\206\210.\354", + "\321c\213l \324\242od\203\327\365\262y\012", + "\321c\213l \324\242od\203\327\251\361\012", + "\324\242o\206\303\372\251\332rs\201\325\344\376a\207\240\200\352\242 \242\200%\203typ\200(\210\235", + "%\203nam\200\303\225\205\201\352\242 \365upp\211c\345\200lett\211\012", + "%\203\304\203\213\222ad\224\355\212 \322\236(\317vio\246l\224se\212 a\203\210\235", + "\260pe\315\236id\212\207\332\256- d\265you \362ge\201\251type?\012", + "\347ru\315\247\271\303\222tur\340\366\354", + "\321\322\200\347ru\315\247\362\232; \213\222ad\224\260i\225\203a\203\251\354", + "\226\375u\315\247\303\372\242\200sam\200nam\200a\203%\203\217\012", + "\321\246\200\226lete\326%\203%\203\304\203\364\226\375u\315\221\012", + "\364\324\242od\313p \247cl\345\203wa\203fo\220\206f\247\354", + "\364\226\375u\315\247wa\203fo\220\206f\247%\203\354", + "\226\375u\315\221\203\371na\207\333\361\275", + "\226\375u\315\221\203\321\372\260t\244 \263t\275" +#endif + }; + +static char *fatalmsg[] = { +#ifdef SCPACK +/*120*/ "cannot read from file: \"%s\"\n", +/*121*/ "cannot write to file: \"%s\"\n", +/*122*/ "table overflow: \"%s\"\n", + /* table can be: loop table + * literal table + * staging buffer + * option table (response file) + * peephole optimizer table + */ +/*123*/ "insufficient memory\n", +/*124*/ "invalid assembler instruction \"%s\"\n", +/*125*/ "numeric overflow, exceeding capacity\n", +/*126*/ "compiled script exceeds the maximum memory size (%ld bytes)\n", +/*127*/ "too many error messages on one line\n", +/*128*/ "codepage mapping file not found\n", +/*129*/ "invalid path: \"%s\"\n", +/*130*/ "assertion failed: %s\n", +/*131*/ "user error: %s\n", +#else + "\321\222a\206from \332le\373", + "\321writ\200\314 \332le\373", "t\267\200ov\211f\356w\373", - "\203suf\332ci\212\201\323m\222y\012", - "\276\346se\233l\256\203\225ruc\214\334", - "num\211ic ov\211f\356w\331\260ce\277\367capacity\012", - "\345\375il\236scrip\201\260ce\277\204\376\314ximum \323m\222\224\354\200(%l\206bytes\235", - "\315o m\223\224\211r\247\323ssag\301\326\202\200l\203\335", - "\345\226pag\200\314pp\367\332\360\231fo\220d\012", + "\204suf\332ci\212\201\324m\221y\012", + "\276\345se\233l\256\204\375uc\215\334", + "num\211ic ov\211f\356w\326\260ce\277\367capacity\012", + "\344\376il\236scrip\201\260ce\277\203\242\200\313ximum \324m\221\224\353\200(%l\206bytes\235", + "\314o m\223\224\211r\247\324ssag\300\327\202\200l\204\335", + "\344\226pag\200\313pp\367\332\360\231fo\220d\012", "\276p\230h\373", - "\346s\211\237fail\277: \350", - "\246\256\211r\222: \350" -#endif - }; - -static char *warnmsg[] = { -#ifdef SCPACK -/*200*/ "symbol \"%s\" is truncated to %d characters\n", -/*201*/ "redefinition of constant/macro (symbol \"%s\")\n", -/*202*/ "number of arguments does not match definition\n", -/*203*/ "symbol is never used: \"%s\"\n", -/*204*/ "symbol is assigned a value that is never used: \"%s\"\n", -/*205*/ "redundant code: constant expression is zero\n", -/*206*/ "redundant test: constant expression is non-zero\n", -/*207*/ "unknown #pragma\n", -/*208*/ "function with tag result used before definition, forcing reparse\n", -/*209*/ "function \"%s\" should return a value\n", -/*210*/ "possible use of symbol before initialization: \"%s\"\n", -/*211*/ "possibly unintended assignment\n", -/*212*/ "possibly unintended bitwise operation\n", -/*213*/ "tag mismatch\n", -/*214*/ "possibly a \"const\" array argument was intended: \"%s\"\n", -/*215*/ "expression has no effect\n", -/*216*/ "nested comment\n", -/*217*/ "loose indentation\n", -/*218*/ "old style prototypes used with optional semicolumns\n", -/*219*/ "local variable \"%s\" shadows a variable at a preceding level\n", -/*220*/ "expression with tag override must appear between parentheses\n", -/*221*/ "label name \"%s\" shadows tag name\n", -/*222*/ "number of digits exceeds rational number precision\n", -/*223*/ "redundant \"sizeof\": argument size is always 1 (symbol \"%s\")\n", -/*224*/ "indeterminate array size in \"sizeof\" expression (symbol \"%s\")\n", -/*225*/ "unreachable code\n", -/*226*/ "a variable is assigned to itself (symbol \"%s\")\n", -/*227*/ "more initializers than enum fields\n", -/*228*/ "length of initializer exceeds size of the enum field\n", -/*229*/ "index tag mismatch (symbol \"%s\")\n", -/*230*/ "no implementation for state \"%s\" in function \"%s\", no fall-back\n", -/*231*/ "state specification on forward declaration is ignored\n", -/*232*/ "output file is written, but with compact encoding disabled\n", -/*233*/ "state variable \"%s\" shadows a global variable\n", -/*234*/ "symbol \"%s\" is marked as deprecated: %s\n", -/*235*/ "public function lacks forward declaration (symbol \"%s\")\n", -/*236*/ "unknown parameter in substitution (incorrect #define pattern)\n" -#else - "\302 \274tr\242\230\236\315 %\206\270\327\324\211\275", - "\221\321i\237\310\351\223t/\314cro \341", - "nu\233\256\310\263t\204\374\301\231\370 \321i\214\012", + "\345s\211\237fail\277: \354", + "\246\256\211r\221: \354" +#endif + }; + +static char *warnmsg[] = { +#ifdef SCPACK +/*200*/ "symbol \"%s\" is truncated to %d characters\n", +/*201*/ "redefinition of constant/macro (symbol \"%s\")\n", +/*202*/ "number of arguments does not match definition\n", +/*203*/ "symbol is never used: \"%s\"\n", +/*204*/ "symbol is assigned a value that is never used: \"%s\"\n", +/*205*/ "redundant code: constant expression is zero\n", +/*206*/ "redundant test: constant expression is non-zero\n", +/*207*/ "unknown #pragma\n", +/*208*/ "function with tag result used before definition, forcing reparse\n", +/*209*/ "function \"%s\" should return a value\n", +/*210*/ "possible use of symbol before initialization: \"%s\"\n", +/*211*/ "possibly unintended assignment\n", +/*212*/ "possibly unintended bitwise operation\n", +/*213*/ "tag mismatch\n", +/*214*/ "possibly a \"const\" array argument was intended: \"%s\"\n", +/*215*/ "expression has no effect\n", +/*216*/ "nested comment\n", +/*217*/ "loose indentation\n", +/*218*/ "old style prototypes used with optional semicolumns\n", +/*219*/ "local variable \"%s\" shadows a variable at a preceding level\n", +/*220*/ "expression with tag override must appear between parentheses\n", +/*221*/ "label name \"%s\" shadows tag name\n", +/*222*/ "number of digits exceeds rational number precision\n", +/*223*/ "redundant \"sizeof\": argument size is always 1 (symbol \"%s\")\n", +/*224*/ "indeterminate array size in \"sizeof\" expression (symbol \"%s\")\n", +/*225*/ "unreachable code\n", +/*226*/ "a variable is assigned to itself (symbol \"%s\")\n", +/*227*/ "more initializers than enum fields\n", +/*228*/ "length of initializer exceeds size of the enum field\n", +/*229*/ "index tag mismatch (symbol \"%s\")\n", +/*230*/ "no implementation for state \"%s\" in function \"%s\", no fall-back\n", +/*231*/ "state specification on forward declaration is ignored\n", +/*232*/ "output file is written, but with compact encoding disabled\n", +/*233*/ "state variable \"%s\" shadows a global variable\n", +/*234*/ "symbol \"%s\" is marked as deprecated: %s\n", +/*235*/ "public function lacks forward declaration (symbol \"%s\")\n", +/*236*/ "unknown parameter in substitution (incorrect #define pattern)\n" +#else + "\302 \274tr\241\230\236\314 %\206\270\330\315\211\275", + "\222\322i\237\310\347\223t/\313cro \341", + "nu\233\256\310\263t\203\374\300\231\370 \322i\215\012", "\254 \274nev\256\246\277\373", - "\254 \274a\266gn\236\251\250u\200\240a\201\274nev\256\246\277\373", - "\221d\220d\223\201\345\226: \351\223\201\260\316\266\326\274z\211o\012", - "\221d\220d\223\201te\225: \351\223\201\260\316\266\326\274n\202-z\211o\012", - "\220k\215w\340#p\244g\314\012", - "\271\343\365\366\221s\344\201\246\236\355\362\200\321i\214\331\362c\367\221p\205s\335", - "\361\232 sho\344\206\221tur\340\251\250u\335", - "po\266\241\200\246\200\310\254 \355\362\200\203i\207\213iza\214\373", - "po\266\241\224\220\203t\212\226\206a\266gn\234t\012", - "po\266\241\224\220\203t\212\226\206bit\343s\200\357\211a\214\012", + "\254 \274a\266gn\236\251\250u\200\242a\201\274nev\256\246\277\373", + "\222d\220d\223\201\344\226: \347\223\201\260\317\266\327\274z\211o\012", + "\222d\220d\223\201te\225: \347\223\201\260\317\266\327\274n\202-z\211o\012", + "\220k\214w\340#p\244g\313\012", + "\271\352\242 \366\222s\343\201\246\236\355\362\200\322i\215\326\362c\367\222p\205s\335", + "\361\232 sho\343\206\222tur\340\251\250u\335", + "po\266\240\200\246\200\310\254 \355\362\200\204i\207\213iza\215\373", + "po\266\240\224\220\204t\212\226\206a\266gn\234t\012", + "po\266\240\224\220\204t\212\226\206bit\352s\200\357\211a\215\012", "\366mis\370\012", - "po\266\241\224\251\042\351\352\317\325wa\204\203t\212\226d\373", - "\260\316\266\326\313\204\215 effe\324\012", - "ne\225\236\345m\234t\012", - "\356os\200\203d\212\322\214\012", - "\245\206\225y\360pro\315typ\301\246\236\343\365\357\214\353semic\245umn\275", - "\356c\353\347\217 s\313\374w\204\251\347a\201\251\316c\277\367level\012", - "\260\316\266\326\343\365\366ov\211rid\200\303appe\205 \355twe\212 p\205\212\240ese\275", - "la\355l nam\200\217 s\313\374w\204\366na\323\012", - "nu\233\256\310\342git\204\260ce\277\204\244\214\353nu\233\256\316ci\227\202\012", - "\221d\220d\223\201\042\354e\273\042: \325\354\200\274\213way\2041 \341", - "\203\226t\211m\203\230\200\317\354\200\363\042\354e\273\352\260\316\266\326\341", - "\220\221a\270\267\200\345\226\012", - "\251\347\274a\266gn\236\315 itself \341", - "m\222\200\203i\207\213iz\211\204\240\364\212um \332eld\275", - "l\212g\365\310\203i\207\213iz\256\260ce\277\204\354\200\310\376\212um \332eld\012", - "\203\226x \366mis\370 \341", - "\215 i\375le\234\322\237f\247\330\200\217 \363\361\232\331\215 f\213l-back\012", - "\330\200speci\332ca\237\326\362w\205\206\226cl\327\237\274ig\215\221d\012", - "outpu\201\332\360\274writt\212\331bu\201\343\365\345\375ac\201\212\345d\367\342s\267\277\012", - "\330\200\347\217 s\313\374w\204\251g\356b\353\312\335", - "\302 \274m\205k\236a\204\226\316c\230\277: \350", - "pu\241ic \271lack\204\362w\205\206\226cl\327\237\341", - "\220k\215w\340p\327\323t\256\363subs\207tu\237(\203c\222\221c\201#\321\200p\230t\211n\235" -#endif - }; - -#ifdef SCPACK_PUSH -# undef SCPACK -#endif + "po\266\240\224\251\042\347\350\320\325wa\203\204t\212\226d\373", + "\260\317\266\327\304\203\364effe\315\012", + "ne\225\236\344m\234t\012", + "\356os\200\204d\212\323\215\012", + "\245\206\225y\360pro\314typ\300\246\236\352\242 \357\215\351semic\245umn\275", + "\356c\351\346\217 s\304\374w\203\251\346a\201\251\317c\277\367level\012", + "\260\317\266\327\352\242 \366ov\211rid\200\303appe\205 \355twe\212 p\205\212\242ese\275", + "la\355l nam\200\217 s\304\374w\203\366na\324\012", + "nu\233\256\310\342git\203\260ce\277\203\244\215\351nu\233\256\317ci\227\202\012", + "\222d\220d\223\201\042\353e\273\042: \325\353\200\274\213way\2031 \341", + "\204\226t\211m\204\230\200\320\353\200\363\042\353e\273\350\260\317\266\327\341", + "\220\222a\270\267\200\344\226\012", + "\251\346\274a\266gn\236\314 itself \341", + "m\221\200\204i\207\213iz\211\203\242\365\212um \332eld\275", + "l\212g\242 \310\204i\207\213iz\256\260ce\277\203\353\200\310\242\200\212um \332eld\012", + "\204\226x \366mis\370 \341", + "\364i\376le\234\323\237f\247\331\200\217 \363\361\232\326\364f\213l-back\012", + "\331\200speci\332ca\237\327\362w\205\206\226cl\330\237\274ig\214\222d\012", + "outpu\201\332\360\274writt\212\326bu\201\352\242 \344\376ac\201\212\344d\367\342s\267\277\012", + "\331\200\346\217 s\304\374w\203\251g\356b\351\312\335", + "\302 \274m\205k\236a\203\226\317c\230\277: \354", + "pu\240ic \271lack\203\362w\205\206\226cl\330\237\341", + "\220k\214w\340p\330\324t\256\363subs\207tu\237(\204c\221\222c\201#\322\200p\230t\211n\235" +#endif + }; + +#ifdef SCPACK_PUSH +# undef SCPACK +#endif diff --git a/sourcepawn/compiler/tests/fail-delete-no-dtor.sp b/sourcepawn/compiler/tests/fail-delete-no-dtor.sp new file mode 100644 index 00000000..73b405b7 --- /dev/null +++ b/sourcepawn/compiler/tests/fail-delete-no-dtor.sp @@ -0,0 +1,10 @@ +native Handle:CreateHandle(); + +methodmap Handle { + public Handle() = CreateHandle; +}; + +public main() { + new Handle:handle = Handle(); + delete handle; +} diff --git a/sourcepawn/compiler/tests/fail-delete-no-dtor.txt b/sourcepawn/compiler/tests/fail-delete-no-dtor.txt new file mode 100644 index 00000000..d04d6699 --- /dev/null +++ b/sourcepawn/compiler/tests/fail-delete-no-dtor.txt @@ -0,0 +1 @@ +methodmap Handle has no destructor; delete cannot be used diff --git a/sourcepawn/compiler/tests/ok-base-dtor.sp b/sourcepawn/compiler/tests/ok-base-dtor.sp new file mode 100644 index 00000000..aab98556 --- /dev/null +++ b/sourcepawn/compiler/tests/ok-base-dtor.sp @@ -0,0 +1,15 @@ +native Handle:CreateHandle(count); +native CloseHandle(Handle:handle); + +methodmap Handle { + public Handle() = CreateHandle; + public ~Handle() = CloseHandle; +}; + +methodmap Crab < Handle { +}; + +public main() { + new Crab:crab; + delete crab; +} diff --git a/sourcepawn/compiler/tests/runtests.py b/sourcepawn/compiler/tests/runtests.py index 58e12fe8..23f1d836 100644 --- a/sourcepawn/compiler/tests/runtests.py +++ b/sourcepawn/compiler/tests/runtests.py @@ -42,7 +42,7 @@ def run_tests(args): if status == 'ok' and kind != 'pass': with open(os.path.join(testdir, test + '.txt')) as fp: - text = fp.read() + text = fp.read().strip() if text not in stdout: print('Expected to find text in stdout: >>>') print(text)