dmd/compiler/test/fail_compilation/traits_initSymbol.d
2022-07-09 18:53:07 +02:00

63 lines
1.8 KiB
D

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