digitalmars.D.bugs - [Issue 19232] New: Compiler bug when override function with template
- d-bugmail puremagic.com (57/57) Sep 07 2018 https://issues.dlang.org/show_bug.cgi?id=19232
https://issues.dlang.org/show_bug.cgi?id=19232 Issue ID: 19232 Summary: Compiler bug when override function with template this Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: minor Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: riddlermichael gmail.com Consider this code: --- class Unknown; abstract class Foo(T : Unknown) { Object get(this D)() { return (cast(D) this).get(); } } class Foo(T) : Foo!Unknown { T t; this() { } this(T t) { this.t = t; } override T get() { return t; } void set(T t) { this.t = t; } } void main() { auto foo = new Foo!Object(); Foo!Unknown afoo = foo; auto t = afoo.get(); } --- It crashes: --- DMD v2.082.0-beta.1 predefs DigitalMars Windows LittleEndian D_Version2 all D_InlineAsm D_InlineAsm_X86 X86 Win32 CRuntime_DigitalMars assert D_ModuleInfo D_Exceptions D_TypeInfo D_HardFloat binary C:\D\dmd2\windows\bin\dmd.exe version v2.082.0-beta.1 config C:\D\dmd2\windows\bin\sc.ini DFLAGS -IC:\D\dmd2\windows\bin\..\..\src\phobos -IC:\D\dmd2\windows\bin\..\..\src\druntime\import --- object.Error (0): Access Violation Without `override` in Foo!T.get it works, but leads to infinite recursion calls of Foo!Unknown.get. Is it just a compiler bug, or it shouldn't work in anyway? --
Sep 07 2018