The following code accesses the deprecated members of the class in different ways. The body of the function test thus contains no legal statement (if compiling without -d) but nonetheless compiles without error.
----------
import std.stdio;
class ClassWithDeps {
deprecated int value;
deprecated static int staticValue;
void test(ClassWithDeps obj) {
obj.value = 666;
obj.staticValue = 102;
this.value = 666;
this.staticValue = 103;
ClassWithDeps.staticValue = 104;
writefln(obj.value);
writefln(obj.staticValue);
writefln(this.value);
writefln(this.staticValue);
writefln(ClassWithDeps.staticValue);
}
}
----------
The same happens if a struct or union is used instead of a class.