From bc2fcd787c7afbbc8c1f1e70cdb1de0155aedaa8 Mon Sep 17 00:00:00 2001 From: rexim Date: Sat, 26 Jun 2021 01:13:18 +0700 Subject: [PATCH 1/3] (#457) Variable shadowing warning --- bang/src/bang_compiler.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/bang/src/bang_compiler.c b/bang/src/bang_compiler.c index c4b7e55..ffddaf8 100644 --- a/bang/src/bang_compiler.c +++ b/bang/src/bang_compiler.c @@ -702,14 +702,32 @@ void compile_var_def_into_basm(Bang *bang, Basm *basm, Bang_Var_Def var_def, Ban exit(1); } - Compiled_Var *existing_var = bang_scope_get_compiled_var_by_name(bang->scope, var_def.name); - if (existing_var) { - fprintf(stderr, Bang_Loc_Fmt": ERROR: variable `"SV_Fmt"` is already defined\n", - Bang_Loc_Arg(var_def.loc), - SV_Arg(var_def.name)); - fprintf(stderr, Bang_Loc_Fmt": NOTE: the first definition is located here\n", - Bang_Loc_Arg(existing_var->def.loc)); - exit(1); + // Existing Var Error + { + Compiled_Var *existing_var = bang_scope_get_compiled_var_by_name(bang->scope, var_def.name); + if (existing_var) { + fprintf(stderr, Bang_Loc_Fmt": ERROR: variable `"SV_Fmt"` is already defined\n", + Bang_Loc_Arg(var_def.loc), + SV_Arg(var_def.name)); + fprintf(stderr, Bang_Loc_Fmt": NOTE: the first definition is located here\n", + Bang_Loc_Arg(existing_var->def.loc)); + exit(1); + } + } + + // TODO: bang does not warn about unused variables + + // Shadowed Var Warning + { + // TODO: bang has no option to treat warnings as errors + Compiled_Var *shadowed_var = bang_get_compiled_var_by_name(bang, var_def.name); + if (shadowed_var) { + fprintf(stderr, Bang_Loc_Fmt": WARNING: variable `"SV_Fmt"` is shadowing another variable with the same name\n", + Bang_Loc_Arg(var_def.loc), + SV_Arg(var_def.name)); + fprintf(stderr, Bang_Loc_Fmt": NOTE: the shadowed variable is located here\n", + Bang_Loc_Arg(shadowed_var->def.loc)); + } } Compiled_Var new_var = {0}; From 89fb924f18303b0bcd499d484d748d4b7c84e9f0 Mon Sep 17 00:00:00 2001 From: rexim Date: Sat, 26 Jun 2021 01:14:29 +0700 Subject: [PATCH 2/3] Add TODO(#480) --- bang/src/bang_compiler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bang/src/bang_compiler.c b/bang/src/bang_compiler.c index ffddaf8..4b33378 100644 --- a/bang/src/bang_compiler.c +++ b/bang/src/bang_compiler.c @@ -715,7 +715,7 @@ void compile_var_def_into_basm(Bang *bang, Basm *basm, Bang_Var_Def var_def, Ban } } - // TODO: bang does not warn about unused variables + // TODO(#480): bang does not warn about unused variables // Shadowed Var Warning { From 8310436b9e8f36f2eebad858f03877490c01ca6d Mon Sep 17 00:00:00 2001 From: rexim Date: Sat, 26 Jun 2021 01:14:29 +0700 Subject: [PATCH 3/3] Add TODO(#481) --- bang/src/bang_compiler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bang/src/bang_compiler.c b/bang/src/bang_compiler.c index 4b33378..d19675b 100644 --- a/bang/src/bang_compiler.c +++ b/bang/src/bang_compiler.c @@ -719,7 +719,7 @@ void compile_var_def_into_basm(Bang *bang, Basm *basm, Bang_Var_Def var_def, Ban // Shadowed Var Warning { - // TODO: bang has no option to treat warnings as errors + // TODO(#481): bang has no option to treat warnings as errors Compiled_Var *shadowed_var = bang_get_compiled_var_by_name(bang, var_def.name); if (shadowed_var) { fprintf(stderr, Bang_Loc_Fmt": WARNING: variable `"SV_Fmt"` is shadowing another variable with the same name\n",