Module Name: src Committed By: rillig Date: Sat Jan 27 20:03:15 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: platform_ilp32_c90.c platform_ilp32_c99.c platform_ilp32_trad.c platform_lp64_c90.c platform_lp64_c99.c platform_lp64_trad.c src/usr.bin/xlint/lint1: lex.c Log Message: lint: fix type of large integer constants To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c \ src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c \ src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c \ src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c \ src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c \ src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c cvs rdiff -u -r1.202 -r1.203 src/usr.bin/xlint/lint1/lex.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c diff -u src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c:1.1 src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_ilp32_c90.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_ilp32_c90.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_ilp32_c90.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_ilp32_c90.c" /* @@ -13,10 +13,12 @@ void *lex_integer[] = { 2147483647, /* expect+1: ... integer 'int' ... */ 0x7fffffff, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 2147483648, /* expect+1: ... integer 'unsigned int' ... */ 0x80000000, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 4294967295, /* expect+1: ... integer 'unsigned int' ... */ @@ -91,10 +93,12 @@ void *lex_integer[] = { 2147483647L, /* expect+1: ... integer 'long' ... */ 0x7fffffffL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 2147483648L, /* expect+1: ... integer 'unsigned long' ... */ 0x80000000L, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 4294967295L, /* expect+1: ... integer 'unsigned long' ... */ @@ -185,10 +189,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'unsigned long long' ... */ Index: src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c diff -u src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c:1.1 src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_ilp32_c99.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_ilp32_c99.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_ilp32_c99.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_ilp32_c99.c" /* @@ -13,38 +13,36 @@ void *lex_integer[] = { 2147483647, /* expect+1: ... integer 'int' ... */ 0x7fffffff, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'long long' ... */ 2147483648, /* expect+1: ... integer 'unsigned int' ... */ 0x80000000, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'long long' ... */ 4294967295, /* expect+1: ... integer 'unsigned int' ... */ 0xffffffff, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 4294967296, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 0x0000000100000000, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 9223372036854775807, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffff, + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 9223372036854775808, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551615, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0xffffffffffffffff, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551616, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 0x00010000000000000000, @@ -60,30 +58,26 @@ void *lex_integer[] = { 4294967295U, /* expect+1: ... integer 'unsigned int' ... */ 0xffffffffU, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 4294967296U, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x0000000100000000U, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775807U, - /* expect+2: warning: integer constant out of range [252] */ - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x7fffffffffffffffU, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808U, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000U, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615U, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0xffffffffffffffffU, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551616U, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 0x00010000000000000000U, @@ -91,38 +85,36 @@ void *lex_integer[] = { 2147483647L, /* expect+1: ... integer 'long' ... */ 0x7fffffffL, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'long long' ... */ 2147483648L, /* expect+1: ... integer 'unsigned long' ... */ 0x80000000L, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'long long' ... */ 4294967295L, /* expect+1: ... integer 'unsigned long' ... */ 0xffffffffL, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 4294967296L, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 0x0000000100000000L, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 9223372036854775807L, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffL, + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 9223372036854775808L, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000L, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551615L, - /* expect+2: warning: integer constant out of range [252] */ - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'unsigned long long' ... */ 0xffffffffffffffffL, /* expect+2: warning: integer constant out of range [252] */ - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551616L, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 0x00010000000000000000L, @@ -138,30 +130,26 @@ void *lex_integer[] = { 4294967295UL, /* expect+1: ... integer 'unsigned long' ... */ 0xffffffffUL, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 4294967296UL, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x0000000100000000UL, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775807UL, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x7fffffffffffffffUL, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808UL, - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000UL, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615UL, - /* expect+2: ... integer 'unsigned long' ... */ - /* expect+1: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 0xffffffffffffffffUL, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551616UL, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 0x00010000000000000000UL, @@ -185,10 +173,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'unsigned long long' ... */ Index: src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c diff -u src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c:1.1 src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_ilp32_trad.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_ilp32_trad.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_ilp32_trad.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_ilp32_trad.c" /* @@ -52,32 +52,34 @@ void *lex_integer[] = { 2147483647L, /* expect+1: ... integer 'long' ... */ 0x7fffffffL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long' ... */ 2147483648L, /* expect+1: ... integer 'long' ... */ 0x80000000L, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long' ... */ 4294967295L, /* expect+1: ... integer 'long' ... */ 0xffffffffL, - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 4294967296L, - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 0x0000000100000000L, /* expect+2: ... integer 'long' ... */ - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 9223372036854775807L, /* expect+2: ... integer 'long' ... */ - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 0x7fffffffffffffffL, - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 9223372036854775808L, - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 0x8000000000000000L, /* expect+2: ... integer 'long' ... */ - /* TODO: warning: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ 18446744073709551615L, - /* TODO: warning: integer constant out of range [252] */ + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long' ... */ 0xffffffffffffffffL, /* expect+2: warning: integer constant out of range [252] */ @@ -107,10 +109,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'long long' ... */ Index: src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c diff -u src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c:1.1 src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_lp64_c90.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_lp64_c90.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_lp64_c90.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_lp64_c90.c" /* @@ -29,10 +29,12 @@ void *lex_integer[] = { 9223372036854775807, /* expect+1: ... integer 'long' ... */ 0x7fffffffffffffff, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 9223372036854775808, /* expect+1: ... integer 'unsigned long' ... */ 0x8000000000000000, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 18446744073709551615, /* expect+1: ... integer 'unsigned long' ... */ @@ -99,10 +101,12 @@ void *lex_integer[] = { 9223372036854775807L, /* expect+1: ... integer 'long' ... */ 0x7fffffffffffffffL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 9223372036854775808L, /* expect+1: ... integer 'unsigned long' ... */ 0x8000000000000000L, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long' ... */ 18446744073709551615L, /* expect+1: ... integer 'unsigned long' ... */ @@ -169,10 +173,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'unsigned long long' ... */ Index: src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c diff -u src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c:1.1 src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_lp64_c99.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_lp64_c99.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_lp64_c99.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_lp64_c99.c" /* @@ -29,15 +29,17 @@ void *lex_integer[] = { 9223372036854775807, /* expect+1: ... integer 'long' ... */ 0x7fffffffffffffff, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+2: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808, /* expect+1: ... integer 'unsigned long' ... */ 0x8000000000000000, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+2: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615, /* expect+1: ... integer 'unsigned long' ... */ 0xffffffffffffffff, - /* expect+2: ... integer 'unsigned long' ... */ + /* expect+2: ... integer 'unsigned long long' ... */ /* expect+1: warning: integer constant out of range [252] */ 18446744073709551616, /* expect+2: ... integer 'unsigned long' ... */ @@ -99,16 +101,18 @@ void *lex_integer[] = { 9223372036854775807L, /* expect+1: ... integer 'long' ... */ 0x7fffffffffffffffL, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+2: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808L, /* expect+1: ... integer 'unsigned long' ... */ 0x8000000000000000L, - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+2: warning: integer constant out of range [252] */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615L, /* expect+1: ... integer 'unsigned long' ... */ 0xffffffffffffffffL, /* expect+2: warning: integer constant out of range [252] */ - /* expect+1: ... integer 'unsigned long' ... */ + /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551616L, /* expect+2: ... integer 'unsigned long' ... */ /* expect+1: warning: integer constant out of range [252] */ @@ -169,10 +173,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'unsigned long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'unsigned long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'unsigned long long' ... */ Index: src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c diff -u src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c:1.1 src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c:1.2 --- src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c:1.1 Sat Jan 27 15:10:57 2024 +++ src/tests/usr.bin/xlint/lint1/platform_lp64_trad.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: platform_lp64_trad.c,v 1.1 2024/01/27 15:10:57 rillig Exp $ */ +/* $NetBSD: platform_lp64_trad.c,v 1.2 2024/01/27 20:03:14 rillig Exp $ */ # 3 "platform_lp64_trad.c" /* @@ -64,10 +64,12 @@ void *lex_integer[] = { 9223372036854775807L, /* expect+1: ... integer 'long' ... */ 0x7fffffffffffffffL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long' ... */ 9223372036854775808L, /* expect+1: ... integer 'long' ... */ 0x8000000000000000L, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long' ... */ 18446744073709551615L, /* expect+1: ... integer 'long' ... */ @@ -99,10 +101,12 @@ void *lex_integer[] = { 9223372036854775807LL, /* expect+1: ... integer 'long long' ... */ 0x7fffffffffffffffLL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long long' ... */ 9223372036854775808LL, /* expect+1: ... integer 'long long' ... */ 0x8000000000000000LL, + /* expect+2: warning: integer constant out of range [252] */ /* expect+1: ... integer 'long long' ... */ 18446744073709551615LL, /* expect+1: ... integer 'long long' ... */ Index: src/usr.bin/xlint/lint1/lex.c diff -u src/usr.bin/xlint/lint1/lex.c:1.202 src/usr.bin/xlint/lint1/lex.c:1.203 --- src/usr.bin/xlint/lint1/lex.c:1.202 Sat Jan 27 15:53:27 2024 +++ src/usr.bin/xlint/lint1/lex.c Sat Jan 27 20:03:14 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lex.c,v 1.202 2024/01/27 15:53:27 rillig Exp $ */ +/* $NetBSD: lex.c,v 1.203 2024/01/27 20:03:14 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: lex.c,v 1.202 2024/01/27 15:53:27 rillig Exp $"); +__RCSID("$NetBSD: lex.c,v 1.203 2024/01/27 20:03:14 rillig Exp $"); #endif #include <ctype.h> @@ -503,64 +503,102 @@ is_unsigned_since_c90(tspec_t typ, uint6 } static tspec_t -integer_constant_type(tspec_t typ, uint64_t ui, int base, bool warned) +integer_constant_type(tspec_t t, uint64_t ui, int base, bool warned) { - switch (typ) { + switch (t) { case INT: - if (ui <= TARG_INT_MAX) { - /* ok */ - } else if (ui <= TARG_UINT_MAX && base != 10) { - typ = UINT; - } else if (ui <= TARG_LONG_MAX) { - typ = LONG; - } else { - typ = ULONG; - if (ui > TARG_ULONG_MAX && !warned) { + if (ui <= TARG_INT_MAX) + return INT; + if (ui <= TARG_UINT_MAX && base != 10 && allow_c90) + return UINT; + if (ui <= TARG_LONG_MAX) + return LONG; + if (ui <= TARG_ULONG_MAX && base != 10 && allow_c90) + return ULONG; + if (ui <= TARG_ULONG_MAX && !allow_c90) + return LONG; + if (!allow_c99) { + if (!warned) /* integer constant out of range */ warning(252); - } + return allow_c90 ? ULONG : LONG; } - if ((typ == UINT || typ == ULONG) && !allow_c90) - typ = LONG; - break; + if (ui <= TARG_LLONG_MAX) + return LLONG; + if (ui <= TARG_ULLONG_MAX && base != 10) + return ULLONG; + if (!warned) + /* integer constant out of range */ + warning(252); + return ULLONG; case UINT: - if (ui > TARG_UINT_MAX) { - typ = ULONG; - if (ui > TARG_ULONG_MAX && !warned) { + if (ui <= TARG_UINT_MAX) + return UINT; + if (ui <= TARG_ULONG_MAX) + return ULONG; + if (!allow_c99) { + if (!warned) /* integer constant out of range */ warning(252); - } + return ULONG; } - break; + if (ui <= TARG_ULLONG_MAX) + return ULLONG; + if (!warned) + /* integer constant out of range */ + warning(252); + return ULLONG; case LONG: - if (ui > TARG_LONG_MAX && allow_c90) { - typ = ULONG; - if (ui > TARG_ULONG_MAX && !warned) { + if (ui <= TARG_LONG_MAX) + return LONG; + if (ui <= TARG_ULONG_MAX && base != 10) + return allow_c90 ? ULONG : LONG; + if (!allow_c99) { + if (!warned) /* integer constant out of range */ warning(252); - } + return allow_c90 ? ULONG : LONG; } - break; - case ULONG: - if (ui > TARG_ULONG_MAX && !warned) { + if (ui <= TARG_LLONG_MAX) + return LLONG; + if (ui <= TARG_ULLONG_MAX && base != 10) + return ULLONG; + if (!warned) /* integer constant out of range */ warning(252); + return ULLONG; + case ULONG: + if (ui <= TARG_ULONG_MAX) + return ULONG; + if (!allow_c99) { + if (!warned) + /* integer constant out of range */ + warning(252); + return ULONG; } - break; + if (ui <= TARG_ULLONG_MAX) + return ULLONG; + if (!warned) + /* integer constant out of range */ + warning(252); + return ULLONG; case LLONG: - if (ui > TARG_LLONG_MAX && allow_c90) - typ = ULLONG; - break; - case ULLONG: - if (ui > TARG_ULLONG_MAX && !warned) { + if (ui <= TARG_LLONG_MAX) + return LLONG; + if (ui <= TARG_ULLONG_MAX && base != 10) + return allow_c90 ? ULLONG : LLONG; + if (!warned) /* integer constant out of range */ warning(252); - } - break; + return allow_c90 ? ULLONG : LLONG; default: - break; + if (ui <= TARG_ULLONG_MAX) + return ULLONG; + if (!warned) + /* integer constant out of range */ + warning(252); + return ULLONG; } - return typ; } int