On 22.2.2014. 23:43, simendsjo wrote: > On 02/22/2014 11:33 PM, Francesco Cattoglio wrote: > The problem isn't about optional parenthesis or properties. It's the > fact that > you can redefine a symbol to be something entierly different, and that this > difference will only be seen if you are looking at the symbol through the > "correct" type.
That is exactly what I wanted to point out! I reduced the example code to make that point more obvious: import std.stdio; class A { string x = "A"; } class B : A { // should it be legal to hide a symbol and redefine it to a new type? int x = 2; } //static assert (is(typeof(A.x) == typeof(B.x))); //Error: static assert (is(string == int)) is false void main () { B o = new B(); writeln((cast (A)o).x); // A writeln((cast (B)o).x); // 2 } http://dpaste.dzfl.pl/6ae4ac5de1bc