blob: 16eb02622d8dc3433f04707dc83689b978c3b833 [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=20998
/*
REQUIRED_ARGS: -verrors=context
TEST_OUTPUT:
---
fail_compilation/test20998.d(76): Error: undefined identifier `invalid`
X x = { invalid, 2, "asd" };
^
fail_compilation/test20998.d(76): Error: too many initializers for `X`
X x = { invalid, 2, "asd" };
^
fail_compilation/test20998.d(83): Error: cannot implicitly convert expression `"a"` of type `string` to `int`
X2 x2 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(83): Error: duplicate initializer for field `ptr`
X2 x2 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(83): Error: too many initializers for `X2`
X2 x2 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(90): Error: overlapping initialization for field `ptr` and `x`
X3 x3 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(90): Error: cannot implicitly convert expression `"a"` of type `string` to `int`
X3 x3 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(90): Error: duplicate initializer for field `ptr`
X3 x3 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(90): Error: too many initializers for `X3`
X3 x3 = { ptr: null, "a", ptr: 2, 444 };
^
fail_compilation/test20998.d(98): Error: field `X4.ptr` cannot assign to misaligned pointers in `@safe` code
X4 x4 = { ptr: null, "a", 444, ptr: 2, true };
^
fail_compilation/test20998.d(98): Error: cannot implicitly convert expression `"a"` of type `string` to `int`
X4 x4 = { ptr: null, "a", 444, ptr: 2, true };
^
fail_compilation/test20998.d(98): Error: too many initializers for `X4`
X4 x4 = { ptr: null, "a", 444, ptr: 2, true };
^
fail_compilation/test20998.d(102): called from here: `test()`
auto e = test();
^
fail_compilation/test20998.d(104): Error: cannot implicitly convert expression `1` of type `int` to `void*`
X2 a5 = { ptr: 1, ptr: 2, ptr: 444, ptr: 555 };
^
fail_compilation/test20998.d(104): Error: duplicate initializer for field `ptr`
X2 a5 = { ptr: 1, ptr: 2, ptr: 444, ptr: 555 };
^
fail_compilation/test20998.d(104): Error: duplicate initializer for field `ptr`
X2 a5 = { ptr: 1, ptr: 2, ptr: 444, ptr: 555 };
^
fail_compilation/test20998.d(104): Error: too many initializers for `X2`
X2 a5 = { ptr: 1, ptr: 2, ptr: 444, ptr: 555 };
^
fail_compilation/test20998.d(107): Error: too many initializers for `X2`
X2 c6 = { null, 2, true, null };
^
fail_compilation/test20998.d(116): Error: cannot implicitly convert expression `1` of type `int` to `immutable(char*)`
immutable Struct iStruct = {1, &ch};
^
fail_compilation/test20998.d(116): Error: too many initializers for `Struct`
immutable Struct iStruct = {1, &ch};
^
fail_compilation/test20998.d(120): called from here: `test2()`
auto t = test2();
^
---
*/
struct X {
void* ptr;
int x;
}
X x = { invalid, 2, "asd" };
struct X2 {
void* ptr;
int x;
bool y;
}
X2 x2 = { ptr: null, "a", ptr: 2, 444 };
union X3 {
void* ptr;
int x;
bool y;
}
X3 x3 = { ptr: null, "a", ptr: 2, 444 };
int test() @safe
{
align (1) struct X4 {
void* ptr;
int x;
}
X4 x4 = { ptr: null, "a", 444, ptr: 2, true };
return 0;
}
auto e = test();
X2 a5 = { ptr: 1, ptr: 2, ptr: 444, ptr: 555 };
X2 b5 = { ptr: null, y: true };
X2 c5 = { x: 2, true, ptr: null };
X2 c6 = { null, 2, true, null };
struct Struct {
char* chptr;
}
int test2()
{
char ch = 'd';
immutable Struct iStruct = {1, &ch};
return 0;
}
auto t = test2();