www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17240] New: mutable/shared property both match in typeof

https://issues.dlang.org/show_bug.cgi?id=17240

          Issue ID: 17240
           Summary: mutable/shared  property both match in typeof
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: john.loughran.colvin gmail.com

struct S
{
    import std.stdio;
    int b()  property        { return 0; }
    int b()  property const  { return 0; }
    int b()  property shared { return 0; }
}

alias T = typeof(S.b);

/d746/f453.d(9): Error: f453.S.b called with argument types () matches both:
/d746/f453.d(4):     f453.S.b()
and:
/d746/f453.d(6):     f453.S.b()

The problem doesn't occur without  property, whether or not () are included in
the typeof expression.

The clash is to do with shared. const/shared clash, as do mutable/shared, but
mutable/const is fine.

In order to add typeof(AggregateType.member) support to std.typecons.Proxy
(with knockon improvements to a few other things in std.typecons), either this
bug or https://issues.dlang.org/show_bug.cgi?id=17239 needs resolving.

--
Mar 02 2017