Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/xlint/lint1 lint: preserve curr_pos when checking wh...
details: https://anonhg.NetBSD.org/src/rev/19539e101a16
branches: trunk
changeset: 378605:19539e101a16
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Apr 18 09:37:18 2021 +0000
description:
lint: preserve curr_pos when checking whether a symbol is used
At the end of a function definition (funcend), curr_pos was not
restored, probably because the very next action is to read the next
token, which will then set curr_pos.
Again, this may affect the location reported in assertion failures,
everything else is unchanged.
diffstat:
usr.bin/xlint/lint1/decl.c | 45 +++++++++++++++++----------------------------
1 files changed, 17 insertions(+), 28 deletions(-)
diffs (104 lines):
diff -r ab4ff5546bcf -r 19539e101a16 usr.bin/xlint/lint1/decl.c
--- a/usr.bin/xlint/lint1/decl.c Sun Apr 18 09:20:43 2021 +0000
+++ b/usr.bin/xlint/lint1/decl.c Sun Apr 18 09:37:18 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.176 2021/04/18 09:20:43 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.177 2021/04/18 09:37:18 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: decl.c,v 1.176 2021/04/18 09:20:43 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.177 2021/04/18 09:37:18 rillig Exp $");
#endif
#include <sys/param.h>
@@ -3008,26 +3008,18 @@ check_usage(dinfo_t *di)
void
check_usage_sym(bool novar, sym_t *sym)
{
- pos_t cpos;
if (sym->s_block_level == -1)
return;
- cpos = curr_pos;
-
- if (sym->s_kind == FVFT) {
- if (sym->s_arg) {
- check_argument_usage(novar, sym);
- } else {
- check_variable_usage(novar, sym);
- }
- } else if (sym->s_kind == FLABEL) {
+ if (sym->s_kind == FVFT && sym->s_arg)
+ check_argument_usage(novar, sym);
+ else if (sym->s_kind == FVFT)
+ check_variable_usage(novar, sym);
+ else if (sym->s_kind == FLABEL)
check_label_usage(sym);
- } else if (sym->s_kind == FTAG) {
+ else if (sym->s_kind == FTAG)
check_tag_usage(sym);
- }
-
- curr_pos = cpos;
}
static void
@@ -3040,9 +3032,8 @@ check_argument_usage(bool novar, sym_t *
return;
if (!arg->s_used && vflag) {
- curr_pos = arg->s_def_pos;
/* argument '%s' unused in function '%s' */
- warning(231, arg->s_name, funcsym->s_name);
+ warning_at(231, arg->s_def_pos, arg->s_name, funcsym->s_name);
}
}
@@ -3073,19 +3064,19 @@ check_variable_usage(bool novar, sym_t *
if (sc == EXTERN) {
if (!sym->s_used && !sym->s_set) {
- curr_pos = sym->s_def_pos;
/* '%s' unused in function '%s' */
- warning(192, sym->s_name, funcsym->s_name);
+ warning_at(192, sym->s_def_pos,
+ sym->s_name, funcsym->s_name);
}
} else {
if (sym->s_set && !sym->s_used) {
- curr_pos = sym->s_set_pos;
/* '%s' set but not used in function '%s' */
- warning(191, sym->s_name, funcsym->s_name);
+ warning_at(191, sym->s_set_pos,
+ sym->s_name, funcsym->s_name);
} else if (!sym->s_used) {
- curr_pos = sym->s_def_pos;
/* '%s' unused in function '%s' */
- warning(192, sym->s_name, funcsym->s_name);
+ warning_at(192, sym->s_def_pos,
+ sym->s_name, funcsym->s_name);
}
}
@@ -3121,13 +3112,11 @@ check_label_usage(sym_t *lab)
lint_assert(lab->s_block_level == 1);
if (lab->s_set && !lab->s_used) {
- curr_pos = lab->s_set_pos;
/* label %s unused in function %s */
- warning(232, lab->s_name, funcsym->s_name);
+ warning_at(232, lab->s_set_pos, lab->s_name, funcsym->s_name);
} else if (!lab->s_set) {
- curr_pos = lab->s_use_pos;
/* undefined label %s */
- warning(23, lab->s_name);
+ warning_at(23, lab->s_use_pos, lab->s_name);
}
}
Home |
Main Index |
Thread Index |
Old Index