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