www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 12607] New: IUnknown classes cannot define or override a

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.d
 Deprecation: 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.d
 Error: function test.C.toString does not override any function, did you mean
to override 'object.Object.toString'?

--
Apr 21 2014