11.4Srillig/* $NetBSD: msg_383.c,v 1.4 2025/05/04 09:40:03 rillig Exp $ */ 21.1Srillig# 3 "msg_383.c" 31.1Srillig 41.2Srillig// Test for message: passing '%s' as argument %d to '%s' discards '%s' [383] 51.1Srillig 61.1Srillig/* lint1-extra-flags: -X 351 */ 71.1Srillig 81.1Srilligvoid sink_char(char *, const char *, volatile char *, const volatile char *); 91.1Srilligvoid sink_int(int *, const int *, volatile int *, const volatile int *); 101.1Srillig 111.2Srilligvoid (*indirect_char)(char *, const char *, volatile char *, const volatile char *); 121.2Srillig 131.2Srilligstruct { 141.2Srillig void (*member_char)(char *, const char *, volatile char *, const volatile char *); 151.2Srillig} doubly_indirect; 161.2Srillig 171.1Srilligvoid 181.1Srilligcaller(const volatile char *cvcp, const volatile int *cvip, int (*fn)(void)) 191.1Srillig{ 201.2Srillig /* expect+3: warning: passing 'pointer to const volatile char' as argument 1 to 'sink_char' discards 'const volatile' [383] */ 211.2Srillig /* expect+2: warning: passing 'pointer to const volatile char' as argument 2 to 'sink_char' discards 'volatile' [383] */ 221.2Srillig /* expect+1: warning: passing 'pointer to const volatile char' as argument 3 to 'sink_char' discards 'const' [383] */ 231.1Srillig sink_char(cvcp, cvcp, cvcp, cvcp); 241.2Srillig /* expect+3: warning: passing 'pointer to const volatile int' as argument 1 to 'sink_int' discards 'const volatile' [383] */ 251.2Srillig /* expect+2: warning: passing 'pointer to const volatile int' as argument 2 to 'sink_int' discards 'volatile' [383] */ 261.2Srillig /* expect+1: warning: passing 'pointer to const volatile int' as argument 3 to 'sink_int' discards 'const' [383] */ 271.1Srillig sink_int(cvip, cvip, cvip, cvip); 281.1Srillig /* expect+4: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to char' for argument 1 [153] */ 291.1Srillig /* expect+3: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to const char' for argument 2 [153] */ 301.1Srillig /* expect+2: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to volatile char' for argument 3 [153] */ 311.1Srillig /* expect+1: warning: converting 'pointer to function(void) returning int' to incompatible 'pointer to const volatile char' for argument 4 [153] */ 321.1Srillig sink_char(fn, fn, fn, fn); 331.2Srillig 341.2Srillig /* expect+3: warning: passing 'pointer to const volatile char' as argument 1 to 'indirect_char' discards 'const volatile' [383] */ 351.2Srillig /* expect+2: warning: passing 'pointer to const volatile char' as argument 2 to 'indirect_char' discards 'volatile' [383] */ 361.2Srillig /* expect+1: warning: passing 'pointer to const volatile char' as argument 3 to 'indirect_char' discards 'const' [383] */ 371.2Srillig indirect_char(cvcp, cvcp, cvcp, cvcp); 381.2Srillig 391.2Srillig /* expect+3: warning: passing 'pointer to const volatile char' as argument 1 to 'function(pointer to char, pointer to const char, pointer to volatile char, pointer to const volatile char) returning void' discards 'const volatile' [383] */ 401.2Srillig /* expect+2: warning: passing 'pointer to const volatile char' as argument 2 to 'function(pointer to char, pointer to const char, pointer to volatile char, pointer to const volatile char) returning void' discards 'volatile' [383] */ 411.2Srillig /* expect+1: warning: passing 'pointer to const volatile char' as argument 3 to 'function(pointer to char, pointer to const char, pointer to volatile char, pointer to const volatile char) returning void' discards 'const' [383] */ 421.2Srillig doubly_indirect.member_char(cvcp, cvcp, cvcp, cvcp); 431.1Srillig} 441.3Srillig 451.3Srillig 461.3Srilligtypedef int array[8]; 471.3Srilligtypedef const int *pointer_to_const_array; 481.3Srillig 491.4Srillig// The 'const' applies to the pointer target, making it 'const int *'. 501.3Srilligint const_array_callee(const array); 511.3Srillig 521.3Srilligstatic inline int 531.3Srilligconst_array_caller(pointer_to_const_array ptr) 541.3Srillig{ 551.3Srillig return const_array_callee(ptr); 561.3Srillig} 57