/* $NetBSD: opt_pcs.c,v 1.18 2023/06/16 23:07:52 rillig Exp $ */

/*
 * Tests for the options '-pcs' and '-npcs'.
 *
 * The option '-pcs' adds a space in a function call expression, between the
 * function name and the opening parenthesis.
 *
 * The option '-npcs' removes any whitespace from a function call expression,
 * between the function name and the opening parenthesis.
 */

//indent input
void
example(void)
{
	function_call();
	function_call (1);
	function_call   (1,2,3);
}
//indent end

//indent run -pcs
void
example(void)
{
	function_call ();
	function_call (1);
	function_call (1, 2, 3);
}
//indent end

//indent run -npcs
void
example(void)
{
	function_call();
	function_call(1);
	function_call(1, 2, 3);
}
//indent end


//indent input
void ( * signal ( void ( * handler ) ( int ) ) ) ( int ) ;
int var = (function)(arg);
//indent end

//indent run -di0 -pcs
void (*signal (void (*handler) (int))) (int);
// $ This may be a function call or a cast, depending on the context.
int var = (function) (arg);
//indent end

//indent run -di0 -npcs
void (*signal(void (*handler)(int)))(int);
int var = (function)(arg);
//indent end


/*
 * The option '-pcs' also applies to 'sizeof' and 'offsetof', even though
 * these are not functions.
 */
//indent input
int sizeof_type = sizeof   (int);
int sizeof_type = sizeof(int);
int sizeof_expr = sizeof   (0);
int sizeof_expr = sizeof(0);
int sizeof_expr = sizeof   0;

int offset = offsetof(struct s, member);
int offset = offsetof   (struct s, member);
//indent end

/* The option '-pcs' overrides '-nbs'. */
//indent run -pcs -di0 -nbs
int sizeof_type = sizeof (int);
int sizeof_type = sizeof (int);
int sizeof_expr = sizeof (0);
int sizeof_expr = sizeof (0);
int sizeof_expr = sizeof 0;

int offset = offsetof (struct s, member);
int offset = offsetof (struct s, member);
//indent end

/*
 * If the option '-npcs' is given, '-bs' can still specialize it. This only
 * applies to 'sizeof', but not 'offsetof'.
 */
//indent run -npcs -di0 -bs
int sizeof_type = sizeof (int);
int sizeof_type = sizeof (int);
int sizeof_expr = sizeof (0);
int sizeof_expr = sizeof (0);
int sizeof_expr = sizeof 0;

int offset = offsetof(struct s, member);
int offset = offsetof(struct s, member);
//indent end

//indent run -npcs -di0
int sizeof_type = sizeof(int);
int sizeof_type = sizeof(int);
int sizeof_expr = sizeof(0);
int sizeof_expr = sizeof(0);
int sizeof_expr = sizeof 0;

int offset = offsetof(struct s, member);
int offset = offsetof(struct s, member);
//indent end


//indent input
int unary = +call();
int postfix = step++();
int binary = 1 + call();
//indent end

//indent run-equals-input -npcs -di0

//indent run -pcs -di0
int unary = +call ();
int postfix = step++ ();
int binary = 1 + call ();
//indent end
