lex_integer.c revision 1.1
11.1Srillig/*	$NetBSD: lex_integer.c,v 1.1 2021/06/19 08:30:08 rillig Exp $	*/
21.1Srillig# 3 "lex_integer.c"
31.1Srillig
41.1Srillig/*
51.1Srillig * Tests for lexical analysis of integer constants.
61.1Srillig *
71.1Srillig * C99 6.4.4.1 "Integer constants"
81.1Srillig */
91.1Srillig
101.1Srilligvoid sinki(int);
111.1Srilligvoid sinku(unsigned int);
121.1Srillig
131.1Srillig/* All platforms supported by lint have 32-bit int in two's complement. */
141.1Srilligvoid
151.1Srilligtest_signed_int(void)
161.1Srillig{
171.1Srillig	sinki(0);
181.1Srillig
191.1Srillig	sinki(-1);
201.1Srillig
211.1Srillig	sinki(2147483647);
221.1Srillig
231.1Srillig	/* expect+2: converted from 'long' to 'int' due to prototype */
241.1Srillig	/* expect+1: conversion of 'long' to 'int' is out of range */
251.1Srillig	sinki(2147483648);
261.1Srillig
271.1Srillig	sinki(-2147483647);
281.1Srillig
291.1Srillig	/* expect+1: converted from 'long' to 'int' due to prototype */
301.1Srillig	sinki(-2147483648);
311.1Srillig}
321.1Srillig
331.1Srilligvoid
341.1Srilligtest_unsigned_int(void)
351.1Srillig{
361.1Srillig	sinku(0);
371.1Srillig
381.1Srillig	sinku(4294967295U);
391.1Srillig
401.1Srillig	/* expect+2: from 'unsigned long' to 'unsigned int' due to prototype */
411.1Srillig	/* expect+1: conversion of 'unsigned long' to 'unsigned int' is out of range */
421.1Srillig	sinku(4294967296U);
431.1Srillig}
44