From 8fcc528ffa7e17424ae63836f38f626f213b9c1f Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Tue, 21 Aug 2012 10:18:55 +0200 Subject: [PATCH] new warning: -Wlocal-constants --- main.c | 1 + parser.c | 10 ++++++++++ warns.def | 1 + 3 files changed, 12 insertions(+) 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) -- 2.39.2