/*	$NetBSD: msg_343.c,v 1.11 2024/01/28 08:17:27 rillig Exp $	*/
# 3 "msg_343.c"

/* Test for message: static array size requires C11 or later [343] */

/* lint1-flags: -Sw -X 351 */

void takes_int_pointer(int []);
void takes_int_pointer_with_ignored_size(int [3]);
/* expect+1: error: static array size requires C11 or later [343] */
void takes_int_array(int[static 3]);
/* expect+1: error: syntax error '3' [249] */
void takes_volatile_int_array(int[volatile 3]);

int
returns_int_pointer(int a[])
{
	return a[0];
}

int
returns_int_pointer_with_ignored_size(int a[3])
{
	return a[0];
}

int
/* expect+1: error: static array size requires C11 or later [343] */
returns_int_array(int a[static 3])
{
	return a[0];
}

int
/* expect+1: error: syntax error '3' [249] */
returns_volatile_int_array(int a[volatile 3])
{
	/* expect+2: error: cannot dereference non-pointer type 'int' [96] */
	/* expect+1: error: function 'returns_volatile_int_array' expects to return value [214] */
	return a[0];
}

/*
 * This triggers the "Bad attribute", but for some reason, that custom error
 * message does not make it into the actual diagnostic.
 */
/* expect+2: error: syntax error ']' [249] */
/* expect+1: error: static array size requires C11 or later [343] */
void invalid_storage_class(int a[const typedef 3]);
