Up to [cvs.NetBSD.org] / src / tests / usr.bin / xlint / lint1
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
lint: warn about extern declarations outside headers https://mail-index.netbsd.org/tech-userlevel/2023/03/15/msg013727.html
tests/lint: make 'expect+-' comments stricter Previously, the expectations from these comments were already satisfied if the expectation occurred somewhere in the actual message from lint. This meant that the prefix 'error:' or 'warning:' could be omitted from the 'expect' comment. These omissions were hard to see in a manual review. Now any omissions must be visually marked with '...'. The test msg_342 now reports its messages properly as being in the file msg_342.c, rather than msg_341.c. This had been a copy-and-paste mistake.
tests/lint: test parsing of octal integer constants
tests/lint: test parsing of integer constants The previous version of this test did not focus on the integer constants but instead on conversions of function arguments. The current test covers several corner cases, such as non-decimal bases and all combinations of suffixes. This test does not cover lex_integer_constant completely since several code paths are only reachable on 32-bit target platforms.
tests/lint: guard against typos in test environment configuration Some tests had "lint1-only-if" without a trailing colon, others included the trailing colon. The tests that included the trailing colon were run even though they were supposed to be skipped, and they failed, as could be expected. To prevent further typos, always require the trailing colon, just as in "lint1-flags" and fail fast on unknown "lint1" comments.
tests/lint: test binary integer literals and underscores
tests/lint: test lexing of integer suffixes
tests/lint: add test that only runs where char == unsigned char There a 4 regular NetBSD builds where lint is activated. All these builds run on platforms where char == signed char. The official test runs from https://releng.netbsd.org/test-results.html mostly have char == signed char as well. However, lint behaves differently on platforms with char == unsigned char. On these platforms, a simple "char ch = '\xff'" leads to the bogus warning that "conversion of 'int' to 'char' is out of range".
tests/lint: allow tests to be skipped depending on platform properties
tests/lint: allow skipping individual tests Depending on the platform, some tests do not make sense or produce platform-dependent results. Allow these tests to be marked as such. For example, the test lex_integer.c only works on 64-bit platforms. Therefore it is disabled on i386 for now since it prints different warnings there. Even better would be a "lint1-only-on-lpi32" toggle, but that would need detection of 'sizeof(int)' at runtime.
tests/lint: add test cases for lexical analysis