digitalmars.D.bugs - [Issue 12607] New: IUnknown classes cannot define or override a
- via Digitalmars-d-bugs (45/47) Apr 21 2014 https://issues.dlang.org/show_bug.cgi?id=12607
https://issues.dlang.org/show_bug.cgi?id=12607 Issue ID: 12607 Summary: IUnknown classes cannot define or override a toString method Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: DMD Assignee: nobody puremagic.com Reporter: andrej.mitrovich gmail.com Test 1: ----- import core.sys.windows.windows; import std.c.windows.com; class C : IUnknown { string toString() { return "E"; } extern(Windows) HRESULT QueryInterface(const(IID)*, void**) { return typeof(return).init; } extern(Windows) uint AddRef() { return 0; } extern(Windows) uint Release() { return 0; } } void main() { } ----- $ dmd test.dDeprecation: class test.C use of object.Object.toString() hidden by C is deprecated. Use 'alias Object.toString toString;' to introduce base class overload set.Test 2: ----- import core.sys.windows.windows; import std.c.windows.com; class C : IUnknown { override string toString() { return "E"; } extern(Windows) HRESULT QueryInterface(const(IID)*, void**) { return typeof(return).init; } extern(Windows) uint AddRef() { return 0; } extern(Windows) uint Release() { return 0; } } void main() { } ----- $ dmd test.dError: function test.C.toString does not override any function, did you mean to override 'object.Object.toString'?--
Apr 21 2014