diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2017-05-20 23:14:58 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2017-05-20 23:14:58 +0300 |
commit | 76dd301e43e1d3bc93652704293dc71879513ce9 (patch) | |
tree | e14ec87377a1f5b54c9bcb0e2e04d17f65937728 /awkgram.c | |
parent | 6514a4510c440d0ae45b8aa58221b229b96a5189 (diff) | |
parent | 0f9d4355a03d000938d87d71ba62f0ac2717334a (diff) | |
download | egawk-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.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -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 */ |