aboutsummaryrefslogtreecommitdiffstats
path: root/awkgram.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2017-05-20 23:14:58 +0300
committerArnold D. Robbins <arnold@skeeve.com>2017-05-20 23:14:58 +0300
commit76dd301e43e1d3bc93652704293dc71879513ce9 (patch)
treee14ec87377a1f5b54c9bcb0e2e04d17f65937728 /awkgram.c
parent6514a4510c440d0ae45b8aa58221b229b96a5189 (diff)
parent0f9d4355a03d000938d87d71ba62f0ac2717334a (diff)
downloadegawk-76dd301e43e1d3bc93652704293dc71879513ce9.tar.gz
egawk-76dd301e43e1d3bc93652704293dc71879513ce9.tar.bz2
egawk-76dd301e43e1d3bc93652704293dc71879513ce9.zip
Merge branch 'master' into feature/api-mpfr
Diffstat (limited to 'awkgram.c')
-rw-r--r--awkgram.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/awkgram.c b/awkgram.c
index 112a5376..a2471b39 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -8328,12 +8328,22 @@ add_lint(INSTRUCTION *list, LINTTYPE linttype)
case LINT_no_effect:
if (list->lasti->opcode == Op_pop && list->nexti != list->lasti) {
- for (ip = list->nexti; ip->nexti != list->lasti; ip = ip->nexti)
- ;
+ int line = 0;
+
+ // Get down to the last instruction (FIXME: why?)
+ for (ip = list->nexti; ip->nexti != list->lasti; ip = ip->nexti) {
+ // along the way track line numbers, we will use the line
+ // closest to the opcode if that opcode doesn't have one
+ if (ip->source_line != 0)
+ line = ip->source_line;
+ }
if (do_lint) { /* compile-time warning */
- if (isnoeffect(ip->opcode))
- lintwarn_ln(ip->source_line, ("statement may have no effect"));
+ if (isnoeffect(ip->opcode)) {
+ if (ip->source_line != 0)
+ line = ip->source_line;
+ lintwarn_ln(line, ("statement may have no effect"));
+ }
}
if (ip->opcode == Op_push) { /* run-time warning */