| /******************************************** |
| 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); |
| } |