Up to [cvs.NetBSD.org] / src / tests / usr.bin / xlint / lint1
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.25 / (download) - annotate - [select for diffs], Sun Jan 29 17:02:09 2023 UTC (45 hours, 11 minutes ago) by rillig
Branch: MAIN
CVS Tags: HEAD
Changes since 1.24: +18 -1
lines
Diff to previous 1.24 (colored)
tests/lint: merge tests for '>>'
Revision 1.24 / (download) - annotate - [select for diffs], Thu Jul 7 18:11:29 2022 UTC (6 months, 3 weeks ago) by rillig
Branch: MAIN
CVS Tags: netbsd-10-base,
netbsd-10
Changes since 1.23: +18 -1
lines
Diff to previous 1.23 (colored)
tests/lint: document why in ic_expr, '&' does not need before_conversion
Revision 1.23 / (download) - annotate - [select for diffs], Wed Jul 6 22:26:31 2022 UTC (6 months, 3 weeks ago) by rillig
Branch: MAIN
Changes since 1.22: +21 -6
lines
Diff to previous 1.22 (colored)
lint: do not warn about 'may lose accuracy' in safe cases of '%' The possible values of the expression 'a % b' for unsigned integers lie between 0 and (b - 1). For signed integers, it's more complicated, so ignore them for now.
Revision 1.22 / (download) - annotate - [select for diffs], Wed Jul 6 21:59:06 2022 UTC (6 months, 3 weeks ago) by rillig
Branch: MAIN
Changes since 1.21: +61 -13
lines
Diff to previous 1.21 (colored)
tests/lint: test 'may lose accuracy' for '%' For unsigned integers, the possible range of the result can be narrowed down by looking at the right operand of the '%'. Right now, lint doesn't do this though.
Revision 1.21 / (download) - annotate - [select for diffs], Sun Jul 3 14:35:54 2022 UTC (6 months, 4 weeks ago) by rillig
Branch: MAIN
Changes since 1.20: +3 -3
lines
Diff to previous 1.20 (colored)
lint: include the width of bit-fields in the type name
Revision 1.20 / (download) - annotate - [select for diffs], Sat Jul 2 09:48:18 2022 UTC (7 months ago) by rillig
Branch: MAIN
Changes since 1.19: +43 -15
lines
Diff to previous 1.19 (colored)
tests/lint: test bit shift with large integer types build_bit_shift converts the right-hand operand to INT or UINT, even though C11 6.5.7 doesn't say anything about narrowing conversions. Traditional C says that the operators '<<' and '>>' perform the usual arithmetic conversions. This has been dropped in C90. What lint actually does is something completely different. In the operators table in ops.def, the operators '<<' and '>>' are not marked as performing the usual arithmetic conversions (column 'balance'). This leaves all conversions to 'build_bit_shift', which converts the right-hand side to INT or UINT. There is no obvious reason for this conversion, as the bounds checks need to be performed no matter whether the type is INT or UINT128.
Revision 1.19 / (download) - annotate - [select for diffs], Sun Jun 19 12:14:34 2022 UTC (7 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.18: +2 -2
lines
Diff to previous 1.18 (colored)
lint: add quotes around placeholders in 4 messages
Revision 1.18 / (download) - annotate - [select for diffs], Thu Jun 16 16:58:36 2022 UTC (7 months, 2 weeks ago) by rillig
Branch: MAIN
Changes since 1.17: +49 -25
lines
Diff to previous 1.17 (colored)
tests/lint: make expectation lines in the tests more detailed This commit migrates msg_100 until msg_199.
Revision 1.17 / (download) - annotate - [select for diffs], Fri Jun 10 18:29:01 2022 UTC (7 months, 3 weeks ago) by rillig
Branch: MAIN
Changes since 1.16: +4 -12
lines
Diff to previous 1.16 (colored)
tests/lint: fix test for loss of accuracy on ILP32 platforms The test had been wrong since msg_132.c 1.14 from 2022-05-30. Using 'unsigned long' in a test that was intended to behave the same on ILP32 and LP64 was an accident. Use 'unsigned long long' instead, which is 64-bits wide on all platforms supported by lint. Move the test about conversion from 'long' to 'int' to the platform-specific test files. Noticed by martin@ on powerpc.
Revision 1.16 / (download) - annotate - [select for diffs], Mon May 30 07:19:28 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.15: +9 -1
lines
Diff to previous 1.15 (colored)
lint: fix assertion failure in '(unsigned long)(ptr) >> 12' Since tree.c 1.449 from 2022-05-26.
Revision 1.15 / (download) - annotate - [select for diffs], Sun May 29 23:24:09 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.14: +2 -27
lines
Diff to previous 1.14 (colored)
lint: fix wrong errors about sizeof of a bit-field (since 2022-05-26)
Revision 1.14 / (download) - annotate - [select for diffs], Sun May 29 23:09:43 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.13: +46 -1
lines
Diff to previous 1.13 (colored)
tests/lint: demonstrate wrong errors 'size/alignment of bit-field' Since tree.c 1.444 from 2022-05-26, which added range and bit checks for integer expressions, not taking into account that querying for the size of a bit-field type triggers an error message.
Revision 1.13 / (download) - annotate - [select for diffs], Thu May 26 20:17:40 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.12: +1 -2
lines
Diff to previous 1.12 (colored)
lint: do not warn about 'uint32_t = uint64_t >> 32' If all possible values fit into the destination type, there is no possibility of losing accuracy. Enhances PR 36668.
Revision 1.12 / (download) - annotate - [select for diffs], Thu May 26 19:55:57 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.11: +14 -1
lines
Diff to previous 1.11 (colored)
tests/lint: demonstrate wrong warnings about loss of accuracy
Revision 1.11 / (download) - annotate - [select for diffs], Thu May 26 09:26:00 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.10: +12 -4
lines
Diff to previous 1.10 (colored)
lint: do not warn about loss in accuracy if the actual value fits The expression 'any & 0xff' can always be assigned to 'uint8_t' without loss of any value bits. In the same way, '(any & 0xff) << 8' can always be assigned to 'uint16_t'. Previously, lint warned about these cases. Fix these wrong warnings by tracking the possible values of integer expressions across a single expression. Fixes PR 36668, so that <sys/endian.h> does not need to be cluttered with useless casts anymore.
Revision 1.10 / (download) - annotate - [select for diffs], Thu May 26 07:03:03 2022 UTC (8 months ago) by rillig
Branch: MAIN
Changes since 1.9: +35 -1
lines
Diff to previous 1.9 (colored)
tests/lint: demonstrate wrong 'may lose accuracy' warning Reported in PR 36668, fixed in sys/sys/endian.h 1.26 from 2007-07-20, unfixed in sys/sys/endian.h 1.29 from 2014-03-18.
Revision 1.9 / (download) - annotate - [select for diffs], Thu Apr 21 19:48:18 2022 UTC (9 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.8: +86 -46
lines
Diff to previous 1.8 (colored)
tests/lint: extend test for lossy integer conversion
Revision 1.8 / (download) - annotate - [select for diffs], Wed Apr 20 22:50:56 2022 UTC (9 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.7: +3 -3
lines
Diff to previous 1.7 (colored)
tests/lint: fix test for message 132 to be platform-independent On i386, the test failed because the warning in line 101 was not generated. This was because size_t on i386 is unsigned int (see arch/i386/targparam.h, SIZEOF_TSPEC). The result of the multiplication had type unsigned int, and message 132 does not trigger for a conversion from unsigned int to signed int because both types have the same size (see check_integer_conversion, portable_size_in_bits). Change the involved type from size_t (which the original code used) to unsigned long long (which is uint64_t on all platforms supported by lint), so that the warning is generated on all platforms in the same way.
Revision 1.7 / (download) - annotate - [select for diffs], Tue Apr 19 22:40:13 2022 UTC (9 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.6: +16 -1
lines
Diff to previous 1.6 (colored)
tests/lint: add test case for integer non-constant expression Seen in sqlite3.c.
Revision 1.6 / (download) - annotate - [select for diffs], Wed Aug 25 22:04:52 2021 UTC (17 months ago) by rillig
Branch: MAIN
Changes since 1.5: +12 -1
lines
Diff to previous 1.5 (colored)
tests/lint: test conversion from long long to intptr_t on ilp32 Seen in usr.bin/make/var.c:1608.
Revision 1.5 / (download) - annotate - [select for diffs], Tue Apr 6 21:17:28 2021 UTC (21 months, 3 weeks ago) by rillig
Branch: MAIN
CVS Tags: cjep_sun2x-base1,
cjep_sun2x-base,
cjep_sun2x,
cjep_staticlib_x-base1,
cjep_staticlib_x-base,
cjep_staticlib_x
Changes since 1.4: +7 -2
lines
Diff to previous 1.4 (colored)
lint: fix wrong warning about losing accuracy when converting to _Bool
Revision 1.4 / (download) - annotate - [select for diffs], Tue Apr 6 21:10:37 2021 UTC (21 months, 3 weeks ago) by rillig
Branch: MAIN
Changes since 1.3: +8 -1
lines
Diff to previous 1.3 (colored)
tests/lint: demonstrate wrong warning about losing accuracy
Revision 1.3 / (download) - annotate - [select for diffs], Sun Feb 28 21:39:17 2021 UTC (23 months ago) by rillig
Branch: MAIN
Changes since 1.2: +60 -3
lines
Diff to previous 1.2 (colored)
tests/lint: add test for narrowing conversions Lint can warn about narrowing conversions, it just doesn't do so by default. The option -a (which is included in the default LINTFLAGS in sys.mk) only reports narrowing conversions from 'long' or larger. To get warnings about all possible narrowing conversions, the option -a has to be given more than once. PR bin/14531
Revision 1.2 / (download) - annotate - [select for diffs], Sun Feb 21 09:07:58 2021 UTC (23 months, 1 week ago) by rillig
Branch: MAIN
Changes since 1.1: +2 -2
lines
Diff to previous 1.1 (colored)
lint: force each test to declare the expected diagnostics By listing the expected diagnostics directly at the code that triggers the diagnostics, it is easier to cross-check whether the diagnostics make sense. No functional change to lint itself.
Revision 1.1 / (download) - annotate - [select for diffs], Sat Jan 2 10:22:43 2021 UTC (2 years ago) by rillig
Branch: MAIN
lint: add a test for each message produced by lint1 Having a test for each message ensures that upcoming refactorings don't break the basic functionality. Adding the tests will also discover previously unknown bugs in lint. The tests ensure that every lint message can actually be triggered, and they demonstrate how to do so. Having a separate file for each test leaves enough space for documenting historical anecdotes, rationale or edge cases, keeping them away from the source code. The interesting details of this commit are in Makefile and t_integration.sh. All other files are just auto-generated. When running the tests as part of ATF, they are packed together as a single test case. Conceptually, it would have been better to have each test as a separate test case, but ATF quickly becomes very slow as soon as a test program defines too many test cases, and 50 is already too many. The time complexity is O(n^2), not O(n) as one would expect. It's the same problem as in tests/usr.bin/make, which has over 300 test cases as well.