From: Wolfgang (Blub) Bumiller Date: Tue, 21 Aug 2012 08:18:55 +0000 (+0200) Subject: new warning: -Wlocal-constants X-Git-Tag: 0.1-rc1~127 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8fcc528ffa7e17424ae63836f38f626f213b9c1f;p=xonotic%2Fgmqcc.git new warning: -Wlocal-constants --- diff --git a/main.c b/main.c index bccac37..d8d1c2e 100644 --- a/main.c +++ b/main.c @@ -384,6 +384,7 @@ int main(int argc, char **argv) { options_set(opts_warn, WARN_TOO_FEW_PARAMETERS, true); options_set(opts_warn, WARN_MISSING_RETURN_VALUES, true); options_set(opts_warn, WARN_USED_UNINITIALIZED, true); + options_set(opts_warn, WARN_LOCAL_CONSTANTS, true); if (!options_parse(argc, argv)) { return usage(); diff --git a/parser.c b/parser.c index 9d46159..4874f49 100644 --- a/parser.c +++ b/parser.c @@ -2115,6 +2115,16 @@ nextvar: continue; } + if (localblock && opts_standard == COMPILER_QCC) { + if (parsewarning(parser, WARN_LOCAL_CONSTANTS, + "initializing expression turns variable `%s` into a constant in this standard", + var->name) ) + { + ast_value_delete(typevar); + return false; + } + } + if (parser->tok != '=') { ast_value_delete(typevar); parseerror(parser, "expected '=' or ';'"); diff --git a/warns.def b/warns.def index bda1370..92a2f2b 100644 --- a/warns.def +++ b/warns.def @@ -11,3 +11,4 @@ GMQCC_DEFINE_FLAG(FIELD_REDECLARED) GMQCC_DEFINE_FLAG(MISSING_RETURN_VALUES) GMQCC_DEFINE_FLAG(TOO_FEW_PARAMETERS) GMQCC_DEFINE_FLAG(LOCAL_SHADOWS) +GMQCC_DEFINE_FLAG(LOCAL_CONSTANTS)