/*
TEST_OUTPUT:
---
fail_compilation/udaparams.d(31): Error: variadic parameter cannot have user-defined attributes
fail_compilation/udaparams.d(32): Error: variadic parameter cannot have user-defined attributes
fail_compilation/udaparams.d(34): Error: user-defined attributes cannot appear as postfixes
fail_compilation/udaparams.d(35): Error: user-defined attributes cannot appear as postfixes
fail_compilation/udaparams.d(36): Error: user-defined attributes cannot appear as postfixes
fail_compilation/udaparams.d(38): Error: `@safe` attribute for function parameter is not supported
fail_compilation/udaparams.d(39): Error: `@safe` attribute for function parameter is not supported
fail_compilation/udaparams.d(40): Error: `@safe` attribute for function parameter is not supported
fail_compilation/udaparams.d(43): Error: `@system` attribute for function parameter is not supported
fail_compilation/udaparams.d(44): Error: `@trusted` attribute for function parameter is not supported
fail_compilation/udaparams.d(45): Error: `@nogc` attribute for function parameter is not supported
fail_compilation/udaparams.d(51): Error: Cannot put a storage-class in an alias declaration.
fail_compilation/udaparams.d(52): Error: Cannot put a storage-class in an alias declaration.
fail_compilation/udaparams.d(53): Error: semicolon expected to close `alias` declaration
fail_compilation/udaparams.d(53): Error: declaration expected, not `=>`
fail_compilation/udaparams.d(54): Error: semicolon expected to close `alias` declaration
fail_compilation/udaparams.d(54): Error: declaration expected, not `=>`
fail_compilation/udaparams.d(57): Error: basic type expected, not `@`
fail_compilation/udaparams.d(57): Error: identifier expected for template value parameter
fail_compilation/udaparams.d(57): Error: found `@` when expecting `)`
fail_compilation/udaparams.d(57): Error: basic type expected, not `3`
fail_compilation/udaparams.d(57): Error: found `3` when expecting `)`
fail_compilation/udaparams.d(57): Error: semicolon expected following function declaration
fail_compilation/udaparams.d(57): Error: declaration expected, not `)`
---
*/

void vararg1(int a, @(10) ...);
extern(C) void vararg2(int a, @(10) ...);

void rhsuda(int a @(10));
void rhsuda2(int @(10));
void rhsuda3(int[] arr @(10) ...);

void wrongAttr1(@safe int);
void wrongAttr2(@safe void function());
void wrongAttr3(@safe void delegate());


void test16(A)(A a @system);
void test16(A)(A a @trusted);
void test16(A)(A a @nogc);

// lambdas without parentheses
alias test19a = @safe b => 1 + 2;
alias test19b = @system b => 1 + 2;
alias test19c = @nogc b => 1 + 2;
alias test19d = @(2) @system b => 1 + 2;
alias test19e = @safe @(2) b => 1 + 2;
alias test19f = extern(C++) b => 1 + 2;
alias test19g = align(2) b => 1 + 2;

// UDAs on Template parameter aren't supported
void test21(@(3) T)(T t) {}
