Bug 18132 – mixin template methods ignored in inheritance chain

Status
NEW
Severity
normal
Priority
P3
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
All
Creation time
2017-12-27T14:19:07Z
Last change time
2024-12-13T18:55:48Z
Assigned to
No Owner
Creator
RazvanN
Moved to GitHub: dmd#19355 →

Comments

Comment #0 by razvan.nitu1305 — 2017-12-27T14:19:07Z
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
Comment #1 by tim.dlang — 2022-03-12T13:39:34Z
*** Issue 22879 has been marked as a duplicate of this issue. ***
Comment #2 by robert.schadek — 2024-12-13T18:55:48Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19355 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB