blob: 94ff80ad551737c369555084e775883e602f4147 [file] [log] [blame]
/********************************************
TEST_OUTPUT:
---
fail_compilation/traits_initSymbol.d(105): Error: struct / class type expected as argument to __traits(initSymbol) instead of `int`
fail_compilation/traits_initSymbol.d(106): Error: struct / class type expected as argument to __traits(initSymbol) instead of `S[2]`
fail_compilation/traits_initSymbol.d(107): Error: struct / class type expected as argument to __traits(initSymbol) instead of `123`
---
*/
#line 100
struct S { int i = 4; }
void test1()
{
const void[] initInt = __traits(initSymbol, int);
const void[] initArray = __traits(initSymbol, S[2]);
const void[] initValue = __traits(initSymbol, 123);
}
/********************************************
TEST_OUTPUT:
---
fail_compilation/traits_initSymbol.d(203): Error: cannot determine the address of the initializer symbol during CTFE
fail_compilation/traits_initSymbol.d(203): called from here: `(*function () pure nothrow @nogc @safe => S)()`
---
*/
#line 200
void test2()
{
enum initLen = (() => __traits(initSymbol, S))();
}
/********************************************
TEST_OUTPUT:
---
fail_compilation/traits_initSymbol.d(305): Error: struct / class type expected as argument to __traits(initSymbol) instead of `traits_initSymbol.Interface`
---
*/
#line 300
interface Interface {}
void test3()
{
const void[] initInterface = __traits(initSymbol, Interface);
}
/********************************************
TEST_OUTPUT:
---
fail_compilation/traits_initSymbol.d(404): Error: expected 1 arguments for `initSymbol` but had 0
fail_compilation/traits_initSymbol.d(405): Error: expected 1 arguments for `initSymbol` but had 2
---
*/
#line 400
void test4()
{
const void[] tmp = __traits(initSymbol);
const void[] tmo = __traits(initSymbol, Interface, S);
}