xref: /netbsd-src/tests/usr.bin/xlint/lint1/lex_comment.c (revision 9b46372707250972743e80fb0a3881e3476f441a)
1*9b463727Srillig /*	$NetBSD: lex_comment.c,v 1.3 2024/10/04 11:38:03 rillig Exp $	*/
2c8d33d92Srillig # 3 "lex_comment.c"
3c8d33d92Srillig 
4c8d33d92Srillig /*
531926a71Srillig  * Tests for comments, including lint-style comments that
631926a71Srillig  * suppress a single diagnostic.
731926a71Srillig  */
831926a71Srillig 
931926a71Srillig /* lint1-extra-flags: -X 351 -aa */
1031926a71Srillig 
1131926a71Srillig signed char s8;
1231926a71Srillig signed long long s64;
1331926a71Srillig 
1431926a71Srillig // A "LINTED" comment suppresses a single warning until the end of the next
1531926a71Srillig // statement.
1631926a71Srillig void
1731926a71Srillig lint_comment(void)
1831926a71Srillig {
1931926a71Srillig 	/* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
2031926a71Srillig 	s8 = s64;
2131926a71Srillig 
2231926a71Srillig 	/* LINTED 132 */
2331926a71Srillig 	s8 = s64;
2431926a71Srillig 
2531926a71Srillig 	/* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
2631926a71Srillig 	s8 = s64;
2731926a71Srillig 
2831926a71Srillig 	/* LINTED 132 "comment" */
2931926a71Srillig 	s8 = s64;
3031926a71Srillig 
3131926a71Srillig 	/* LINTED 132 */
3231926a71Srillig 	{
3331926a71Srillig 	}
3431926a71Srillig 	/* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
3531926a71Srillig 	s8 = s64;
3631926a71Srillig 
3731926a71Srillig 	/* LINTED 132 */
3831926a71Srillig 	{
3931926a71Srillig 		s8 = s64;
4031926a71Srillig 	}
4131926a71Srillig 	/* expect+1: warning: conversion from 'long long' to 'signed char' may lose accuracy [132] */
4231926a71Srillig 	s8 = s64;
4331926a71Srillig 
4431926a71Srillig 	if (s8 == 0)
4531926a71Srillig 		;
4631926a71Srillig 	/* LINTED 132 */
4731926a71Srillig 	s8 = s64;
4831926a71Srillig 
4931926a71Srillig 	if (s8 == 0) {
5031926a71Srillig 	}
5131926a71Srillig 	/* LINTED 132 */
5231926a71Srillig 	s8 = s64;
5331926a71Srillig 
5431926a71Srillig 	if (s8 == 0)
5531926a71Srillig 		;
5631926a71Srillig 	else
5731926a71Srillig 		;
5831926a71Srillig 	/* LINTED 132 */
5931926a71Srillig 	s8 = s64;
6031926a71Srillig 
6131926a71Srillig 	if (s8 == 0) {
6231926a71Srillig 	} else {
6331926a71Srillig 	}
6431926a71Srillig 	/* LINTED 132 */
6531926a71Srillig 	s8 = s64;
6631926a71Srillig 
6731926a71Srillig 	if (s8 == 0) {
6831926a71Srillig 	} else if (s8 == 1)
6931926a71Srillig 		;
7031926a71Srillig 	/* LINTED 132 */
7131926a71Srillig 	s8 = s64;
7231926a71Srillig 
7331926a71Srillig 	if (s8 == 0) {
7431926a71Srillig 	} else if (s8 == 1) {
7531926a71Srillig 	}
7631926a71Srillig 	/* LINTED 132 */
7731926a71Srillig 	s8 = s64;
7831926a71Srillig }
7931926a71Srillig 
8031926a71Srillig 
8131926a71Srillig /*
82c8d33d92Srillig  * Before lex.c 1.41 from 2021-06-19, lint ran into an endless loop when it
83c8d33d92Srillig  * saw an unclosed comment at the end of the translation unit.  In practice
84c8d33d92Srillig  * this was not relevant since the translation unit always comes from the C
85c8d33d92Srillig  * preprocessor, which always emits a well-formed token sequence.
86c8d33d92Srillig  */
87c8d33d92Srillig 
8831926a71Srillig /* expect+2: error: unterminated comment [256] */
89c8d33d92Srillig /* unclosed comment
90