blob: 964dcf913c2af3d6a0b0044c8df23113f3eac213 [file] [log] [blame]
/*
TEST_OUTPUT:
---
fail_compilation/fail15044.d(30): Error: generated function `fail15044.V.opAssign` cannot be used because it is annotated with `@disable`
---
*/
struct S
{
void opAssign(S) {}
}
struct V
{
// `s` has opAssign, so struct V needs to generate member-wise opAssign.
// But S.opAssign is not callable on const object, so V.opAssign should be
// @disable.
const S s;
// Here, the initializer of x is evaluated in V.semantic2. But
// V.opAssign.semantic3 is not yet invoked, so its attribute should be
// lazily inferred in functionSemantic even though it's non-instantiated function.
enum int x = ()
{
// Here, the initializer of x is evaluated in V.semantic2, and
// V.opAssign.semantic3 is not yet invoked in this time.
// Therefore its @disable attribute needs to be inferred by
// functionSemantic, even though it's non-instantiated function.
V v;
v = v;
}();
}