blob: a69770691cbd7ace4f1cafd36aae35ba98f6dcf2 [file]
/*
TEST_OUTPUT:
---
fail_compilation/pragmamangle1.d(35): Error: `pragma(mangle)` expects string literal argument for mangled name
fail_compilation/pragmamangle1.d(37): Error: `pragma(mangle)` expects string literal argument for mangled name
fail_compilation/pragmamangle1.d(44): Error: `pragma(mangle)` must be attached to a declaration
fail_compilation/pragmamangle1.d(46): Error: `pragma(mangle)` must be attached to a declaration
fail_compilation/pragmamangle1.d(53): Error: `pragma(mangle)` expects string literal argument for mangled name
fail_compilation/pragmamangle1.d(56): Error: `pragma(mangle)` zero-length string not allowed for mangled name
fail_compilation/pragmamangle1.d(59): Error: `pragma(mangle)` expects 1 or 2 arguments
fail_compilation/pragmamangle1.d(62): Error: `pragma(mangle)` cannot apply to a template declaration
fail_compilation/pragmamangle1.d(62): use `template cannot_apply(Args...) { pragma(mangle, "template") ... }`
fail_compilation/pragmamangle1.d(65): Error: `pragma(mangle)` takes a single argument that must be a string literal
fail_compilation/pragmamangle1.d(68): Error: `pragma(mangle)` takes a single argument that must be a string literal
fail_compilation/pragmamangle1.d(71): Error: `string` expected for pragma mangle argument, not `(T)` of type `T`
fail_compilation/pragmamangle1.d(74): Error: `string` expected for pragma mangle argument, not `(T[T])` of type `T[T]`
fail_compilation/pragmamangle1.d(77): Error: `pragma(mangle)` can only apply to a single declaration
fail_compilation/pragmamangle1.d(85): Error: `class` or `struct` type expected for pragma mangle argument, not `"mangle"` of type `string`
fail_compilation/pragmamangle1.d(88): Error: `class` or `struct` type expected for pragma mangle argument, not `F()` of type `T`
fail_compilation/pragmamangle1.d(91): Error: `class` or `struct` type expected for pragma mangle argument, not `F()` of type `T`
fail_compilation/pragmamangle1.d(94): Error: `string` expected for pragma mangle argument, not `(F())` of type `T`
fail_compilation/pragmamangle1.d(97): Error: `string` expected for pragma mangle argument, not `(F())` of type `T`
fail_compilation/pragmamangle1.d(100): Error: `string` expected for pragma mangle argument, not `(V)` of type `T`
fail_compilation/pragmamangle1.d(103): Error: `string` expected for pragma mangle argument, not `(V)` of type `T`
fail_compilation/pragmamangle1.d(106): Error: `string` expected for pragma mangle argument, not `T` of type `T`
fail_compilation/pragmamangle1.d(109): Error: `class` or `struct` type expected for pragma mangle argument, not `int` of type `int`
fail_compilation/pragmamangle1.d(112): Error: `class` or `struct` type expected for pragma mangle argument, not `T[T]` of type `T[T]`
---
*/
struct T { }
T F() { return T(); }
T V;
alias A = T[T];
pragma(mangle);
pragma(mangle)
{
nothrow: pure: @nogc: @property
{
}
}
pragma(mangle, "no_declaration");
pragma(mangle, "no_declaration")
{
nothrow: pure: @nogc: @property
{
}
}
pragma(mangle)
void no_string_literal();
pragma(mangle, "")
void empty_string_mangle();
pragma(mangle, "too", "many", "arguments")
void expects_less_arguments();
pragma(mangle, "template")
template cannot_apply(T) { }
pragma(mangle, "func", "mangle")
void func_too_many_arguments();
pragma(mangle, "var", "mangle")
int var_too_many_arguments;
pragma(mangle, T)
void func_arg1_not_a_string();
pragma(mangle, A)
int var_arg1_not_a_string;
pragma(mangle, "too_many_declarations")
{
nothrow pure:
void func1();
@nogc:
extern(C++) void func2();
}
pragma(mangle, "struct", "mangle")
struct arg2_must_be_symbol { }
pragma(mangle, "struct", F)
struct struct_wrong_symbol { }
pragma(mangle, "class", F)
class class_wrong_symbol { }
pragma(mangle, F(), T)
struct arg1_not_ctfe_string { }
pragma(mangle, T, F())
struct arg2_not_ctfe_string { }
pragma(mangle, V, T)
struct arg1_not_string { }
pragma(mangle, T, V)
struct arg2_not_string { }
pragma(mangle, T, T)
struct arg2_expect_string { }
pragma(mangle, int)
struct arg1_not_class_or_struct { }
pragma(mangle, "struct", A)
struct arg2_not_class_or_struct { }