From 58cc32a6d4a179b3005f8e4fecbff932da681fba Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Thu, 24 May 2018 18:37:48 +0300 Subject: Improve lint checking for statement of just a constant. --- ChangeLog | 6 ++++++ awkgram.c | 2 +- awkgram.y | 2 +- test/ChangeLog | 4 ++++ test/noeffect.awk | 4 ++++ test/noeffect.ok | 3 +++ 6 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 451f1c52..cfeb251b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-05-24 Arnold D. Robbins + + * awkgram.y (add_lint): For no-effect case, also check for + Op_push_i. Makes statements consisting of a single constant + trigger the warning. + 2018-05-23 Arnold D. Robbins * config.guess, config.sub: Updated from GNULIB. diff --git a/awkgram.c b/awkgram.c index 13a7be70..493109fe 100644 --- a/awkgram.c +++ b/awkgram.c @@ -8326,7 +8326,7 @@ add_lint(INSTRUCTION *list, LINTTYPE linttype) } } - if (ip->opcode == Op_push) { /* run-time warning */ + if (ip->opcode == Op_push || ip->opcode == Op_push_i) { /* run-time warning */ list_append(list, instruction(Op_lint)); list->lasti->lint_type = linttype; } diff --git a/awkgram.y b/awkgram.y index e1c75e9f..bc8b4a6f 100644 --- a/awkgram.y +++ b/awkgram.y @@ -5906,7 +5906,7 @@ add_lint(INSTRUCTION *list, LINTTYPE linttype) } } - if (ip->opcode == Op_push) { /* run-time warning */ + if (ip->opcode == Op_push || ip->opcode == Op_push_i) { /* run-time warning */ list_append(list, instruction(Op_lint)); list->lasti->lint_type = linttype; } diff --git a/test/ChangeLog b/test/ChangeLog index 3f22e1ce..a2575200 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2018-05-24 Arnold D. Robbins + + * noeffect.awk, noeffect.ok: Updated. + 2018-05-23 Arnold D. Robbins * Makefile.am (EXTRA_DIST): Add files for spacere. diff --git a/test/noeffect.awk b/test/noeffect.awk index 472c408e..4be76b1e 100644 --- a/test/noeffect.awk +++ b/test/noeffect.awk @@ -3,4 +3,8 @@ BEGIN { s + 1 ;; "s" 1 + "a" + 42 + q = 42 + q } diff --git a/test/noeffect.ok b/test/noeffect.ok index 6a0cc752..9778a4bb 100644 --- a/test/noeffect.ok +++ b/test/noeffect.ok @@ -3,3 +3,6 @@ gawk: noeffect.awk:3: warning: statement may have no effect gawk: noeffect.awk:5: warning: statement may have no effect gawk: noeffect.awk:2: warning: reference to uninitialized variable `s' gawk: noeffect.awk:3: warning: reference to uninitialized variable `s' +gawk: noeffect.awk:6: warning: statement has no effect +gawk: noeffect.awk:7: warning: statement has no effect +gawk: noeffect.awk:9: warning: statement has no effect -- cgit v1.2.3