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

Reply via email to