www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 13271] New: opDispatch fails without warning message if


          Issue ID: 13271
           Summary: opDispatch fails without warning message if  property
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody puremagic.com
          Reporter: vlevenfeld gmail.com

struct Vector (uint length, Element = double)
        ref  property component (string c)()
            enum mat = q{xyzw};
            enum col = q{rgba};
            enum tex = q{uv};

            static if (mat.canFind (c))
                return components[mat.countUntil (c)];
            else static if (col.canFind (c))
                return components[col.countUntil (c)];
            else static if (tex.canFind (c))
                return components[tex.countUntil (c)];
            else static assert (0);

        ref  property opDispatch (string c)()
        if (c.length == 1)
            auto v = component!c;
            pragma(msg, typeof(v)); // this outputs the expected result
            return v; // so everything is fine, right? wrong...

    Element[length] components;

If  property opDispatch is replaced with auto opDispatch then it works.
opDispatch should either work for properties or should give a more meaningful
error message than "Error: No property `x` for Vector" etc.

Aug 08 2014