// https://issues.dlang.org/show_bug.cgi?id=18976 class Expression : Statement {} class Statement {} class AssertSemanticVisitor { void visit (const Statement node) { } } class ExpressionVisitor : AssertSemanticVisitor { public void visit (Expression) { } alias visit = typeof(super).visit; } class ExpressionVisitor2 : AssertSemanticVisitor { public void visit (Expression) { } alias visit = AssertSemanticVisitor.visit; } void main () { scope x1 = new ExpressionVisitor; scope x2 = new ExpressionVisitor; scope y = new Statement; x1.visit(y); x2.visit(y); }