xref: /netbsd-src/tests/usr.bin/xlint/lint1/msg_306.c (revision e6298b924c5ba98f3a22919b56dab04a87cdbb1c)
1*e6298b92Srillig /*	$NetBSD: msg_306.c,v 1.5 2023/07/07 19:45:22 rillig Exp $	*/
2a0a15c14Srillig # 3 "msg_306.c"
3a0a15c14Srillig 
440a9b8fdSrillig // Test for message: constant truncated by conversion, op '%s' [306]
5a0a15c14Srillig 
6*e6298b92Srillig /* lint1-extra-flags: -X 351 */
7*e6298b92Srillig 
8ec42194bSrillig unsigned char
to_u8(void)9ec42194bSrillig to_u8(void)
10ec42194bSrillig {
11ec42194bSrillig 	/* expect+1: warning: conversion of 'int' to 'unsigned char' is out of range [119] */
12ec42194bSrillig 	return 12345;
13ec42194bSrillig }
14ec42194bSrillig 
15ec42194bSrillig unsigned char
and_u8(unsigned char a)16ec42194bSrillig and_u8(unsigned char a)
17ec42194bSrillig {
18ec42194bSrillig 	/* XXX: unused bits in constant */
19ec42194bSrillig 	return a & 0x1234;
20ec42194bSrillig }
21ec42194bSrillig 
22ec42194bSrillig unsigned char
or_u8(unsigned char a)23ec42194bSrillig or_u8(unsigned char a)
24ec42194bSrillig {
2540a9b8fdSrillig 	/* expect+1: warning: constant truncated by conversion, op '|=' [306] */
26ec42194bSrillig 	a |= 0x1234;
27ec42194bSrillig 
28ec42194bSrillig 	/* XXX: Lint doesn't care about the expanded form of the same code. */
29ec42194bSrillig 	a = a | 0x1234;
30ec42194bSrillig 
31ec42194bSrillig 	return a;
32ec42194bSrillig }
33