Home | History | Annotate | Line # | Download | only in lint1
      1  1.4  rillig /*	$NetBSD: msg_367.c,v 1.4 2025/08/31 20:43:27 rillig Exp $	*/
      2  1.1  rillig # 3 "msg_367.c"
      3  1.1  rillig 
      4  1.1  rillig // Test for message: empty description in '%.*s' [367]
      5  1.1  rillig 
      6  1.1  rillig /*
      7  1.1  rillig  * Each bit or field or comparison value gets a description.  If such a
      8  1.1  rillig  * description is empty, the generated output will contain empty angle
      9  1.1  rillig  * brackets or multiple adjacent commas or commas adjacent to an angle
     10  1.1  rillig  * bracket, such as '<,,,,>'.
     11  1.1  rillig  */
     12  1.1  rillig 
     13  1.1  rillig /* lint1-extra-flags: -X 351 */
     14  1.1  rillig 
     15  1.1  rillig typedef typeof(sizeof(0)) size_t;
     16  1.1  rillig typedef unsigned long long uint64_t;
     17  1.1  rillig 
     18  1.3  rillig int snprintb(char *, size_t, const char *, uint64_t);
     19  1.1  rillig 
     20  1.1  rillig void
     21  1.2  rillig old_style(unsigned u32)
     22  1.2  rillig {
     23  1.2  rillig 	char buf[64];
     24  1.2  rillig 
     25  1.2  rillig 	/* expect+10: warning: empty description in '\001' [367] */
     26  1.2  rillig 	/* expect+9: warning: empty description in '\002' [367] */
     27  1.2  rillig 	/* expect+8: warning: empty description in '\003' [367] */
     28  1.2  rillig 	/* expect+7: warning: empty description in '\004' [367] */
     29  1.2  rillig 	snprintb(buf, sizeof(buf),
     30  1.2  rillig 	    "\020"
     31  1.2  rillig 	    "\001"
     32  1.2  rillig 	    "\002"
     33  1.2  rillig 	    "\003"
     34  1.2  rillig 	    "\004",
     35  1.2  rillig 	    u32);
     36  1.2  rillig 
     37  1.2  rillig 	/* expect+10: warning: empty description in '\001' [367] */
     38  1.2  rillig 	/* expect+9: warning: empty description in '\002' [367] */
     39  1.2  rillig 	/* expect+8: warning: empty description in '\003' [367] */
     40  1.2  rillig 	/* expect+7: warning: empty description in '\004' [367] */
     41  1.2  rillig 	snprintb(buf, sizeof(buf),
     42  1.2  rillig 	    "\020"
     43  1.2  rillig 	    "\001" "" ""
     44  1.2  rillig 	    "\002" "" ""
     45  1.2  rillig 	    "\003" "" ""
     46  1.2  rillig 	    "\004" "" "",
     47  1.2  rillig 	    u32);
     48  1.2  rillig 
     49  1.2  rillig 	// Single-letter descriptions are not empty.
     50  1.2  rillig 	snprintb(buf, sizeof(buf),
     51  1.2  rillig 	    "\020"
     52  1.2  rillig 	    "\001a"
     53  1.2  rillig 	    "\002b"
     54  1.2  rillig 	    "\003c"
     55  1.2  rillig 	    "\004d",
     56  1.2  rillig 	    u32);
     57  1.2  rillig }
     58  1.2  rillig 
     59  1.2  rillig void
     60  1.2  rillig new_style(uint64_t u64)
     61  1.1  rillig {
     62  1.1  rillig 	char buf[64];
     63  1.1  rillig 
     64  1.1  rillig 	/* expect+4: warning: empty description in 'b\000\0' [367] */
     65  1.1  rillig 	snprintb(buf, sizeof(buf),
     66  1.1  rillig 	    "\177\020"
     67  1.1  rillig 	    "b\000\0",
     68  1.2  rillig 	    u64);
     69  1.1  rillig 
     70  1.1  rillig 	/* expect+4: warning: empty description in 'f\000\010\0' [367] */
     71  1.1  rillig 	snprintb(buf, sizeof(buf),
     72  1.1  rillig 	    "\177\020"
     73  1.1  rillig 	    "f\000\010\0",
     74  1.2  rillig 	    u64);
     75  1.1  rillig 
     76  1.1  rillig 	// No warning, as 'F' does not take a description.
     77  1.1  rillig 	// If there were a description, it would simply be skipped.
     78  1.1  rillig 	snprintb(buf, sizeof(buf),
     79  1.1  rillig 	    "\177\020"
     80  1.1  rillig 	    "F\000\010\0",
     81  1.2  rillig 	    u64);
     82  1.1  rillig 
     83  1.1  rillig 	/* expect+4: warning: empty description in '=\000\0' [367] */
     84  1.1  rillig 	snprintb(buf, sizeof(buf),
     85  1.1  rillig 	    "\177\020"
     86  1.1  rillig 	    "=\000\0",
     87  1.2  rillig 	    u64);
     88  1.1  rillig 
     89  1.1  rillig 	/* expect+4: warning: empty description in ':\000\0' [367] */
     90  1.1  rillig 	snprintb(buf, sizeof(buf),
     91  1.1  rillig 	    "\177\020"
     92  1.1  rillig 	    ":\000\0",
     93  1.2  rillig 	    u64);
     94  1.1  rillig 
     95  1.1  rillig 	/* expect+4: warning: empty description in '*\0' [367] */
     96  1.1  rillig 	snprintb(buf, sizeof(buf),
     97  1.1  rillig 	    "\177\020"
     98  1.1  rillig 	    "*\0",
     99  1.2  rillig 	    u64);
    100  1.2  rillig 
    101  1.2  rillig 	// Single-letter descriptions are not empty.
    102  1.2  rillig 	snprintb(buf, sizeof(buf),
    103  1.2  rillig 	    "\177\020"
    104  1.2  rillig 	    "b\000b\0"
    105  1.2  rillig 	    "f\001\001f\0"
    106  1.2  rillig 	    "F\002\002F\0"
    107  1.2  rillig 		"=\000z\0"
    108  1.2  rillig 		":\001o\0"
    109  1.2  rillig 		"*d\0",
    110  1.4  rillig 	    /* expect+1: warning: conversion '=' does not mix with 'F' [386] */
    111  1.2  rillig 	    u64 >> 1);
    112  1.1  rillig 
    113  1.2  rillig 	/* expect+6: warning: empty description in 'b\001""""""\0' [367] */
    114  1.2  rillig 	/* expect+5: warning: empty description in 'b\003""""""\0' [367] */
    115  1.2  rillig 	snprintb(buf, sizeof(buf),
    116  1.2  rillig 	    "\177\020"
    117  1.2  rillig 	    "b\001" "" "" "\0"
    118  1.2  rillig 	    "b\003" "" "" "\0",
    119  1.2  rillig 	    u64);
    120  1.1  rillig }
    121