mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
85 lines
2.6 KiB
D
85 lines
2.6 KiB
D
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
fail_compilation/disable.d(56): Error: function `disable.DisabledOpAssign.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(59): Error: function `disable.DisabledPostblit.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(62): Error: function `disable.HasDtor.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(66): Error: generated function `disable.Nested!(DisabledOpAssign).Nested.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(69): Error: generated function `disable.Nested!(DisabledPostblit).Nested.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(72): Error: generated function `disable.Nested!(HasDtor).Nested.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(76): Error: generated function `disable.NestedDtor!(DisabledOpAssign).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(79): Error: generated function `disable.NestedDtor!(DisabledPostblit).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(82): Error: generated function `disable.NestedDtor!(HasDtor).NestedDtor.opAssign` cannot be used because it is annotated with `@disable`
|
|
fail_compilation/disable.d(84): Error: enum member `disable.Enum1.value` cannot be used because it is annotated with `@disable`
|
|
---
|
|
*/
|
|
struct DisabledOpAssign {
|
|
int x;
|
|
@disable void opAssign(const DisabledOpAssign);
|
|
}
|
|
|
|
struct DisabledPostblit {
|
|
int x;
|
|
@disable void opAssign(const DisabledPostblit);
|
|
// Doesn't require opAssign
|
|
@disable this(this);
|
|
}
|
|
|
|
struct HasDtor {
|
|
int x;
|
|
@disable void opAssign(const HasDtor);
|
|
~this() {} // Makes opAssign mandatory
|
|
}
|
|
|
|
|
|
struct Nested (T)
|
|
{
|
|
T b;
|
|
}
|
|
|
|
struct NestedDtor (T)
|
|
{
|
|
T b;
|
|
|
|
// Requires an identity opAssign
|
|
~this() {}
|
|
}
|
|
|
|
enum Enum1
|
|
{
|
|
@disable value
|
|
}
|
|
|
|
void main ()
|
|
{
|
|
DisabledOpAssign o;
|
|
o = DisabledOpAssign();
|
|
|
|
DisabledPostblit p;
|
|
p = DisabledPostblit();
|
|
|
|
HasDtor d;
|
|
d = HasDtor();
|
|
|
|
|
|
Nested!(DisabledOpAssign) no;
|
|
no = Nested!(DisabledOpAssign)();
|
|
|
|
Nested!(DisabledPostblit) np;
|
|
np = Nested!(DisabledPostblit)();
|
|
|
|
Nested!(HasDtor) nd;
|
|
nd = Nested!(HasDtor)();
|
|
|
|
|
|
NestedDtor!(DisabledOpAssign) ndo;
|
|
ndo = NestedDtor!(DisabledOpAssign)();
|
|
|
|
NestedDtor!(DisabledPostblit) ndp;
|
|
ndp = NestedDtor!(DisabledPostblit)();
|
|
|
|
NestedDtor!(HasDtor) ndd;
|
|
ndd = NestedDtor!(HasDtor)();
|
|
|
|
auto v1 = Enum1.value;
|
|
}
|