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