https://issues.dlang.org/show_bug.cgi?id=18132
Issue ID: 18132 Summary: mixin template methods ignored in inheritance chain Product: D Version: D2 Hardware: x86_64 OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: razvan.nitu1...@gmail.com Consider the following example: import core.stdc.stdio; class A { void visit(int a){ printf("A - int\n");} void visit(float b) { printf("A - float\n");} } mixin template Bmix(AST) { // move these 2 methods inside B without any modifications override void visit(int a) {printf("B - int\n");} override void visit(float b) {printf("B - float\n"); super.visit(b);} } class B : A!int { alias visit = A!int.visit; mixin Bmix!int; } class C : B { alias visit = B.visit; override void visit(float b) { printf("C - float\n"); super.visit(b); } } void main() { C vis = new C(); float c = 7.0; vis.visit(c); } Output: C - float A - float Moving the visit methods from Bmix to B results in the following output: C - float B - float A - float I would expect that this is also the result in the first case. Best regards, RazvanN --