[Issue 3893] New: opOpAssign and opIndexOpAssign get wrong operator string

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Mar 8 01:52:11 PST 2010


http://d.puremagic.com/issues/show_bug.cgi?id=3893

           Summary: opOpAssign and opIndexOpAssign get wrong operator
                    string
           Product: D
           Version: 2.041
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: bugzilla at kyllingen.net


--- Comment #0 from Lars T. Kyllingstad <bugzilla at kyllingen.net> 2010-03-08 01:52:06 PST ---
The specification says:

    The expression: a op= b
    is rewritten as: a.opOpAssign!("op")(b)

A similar statement is made about opIndexOpAssign. However, what actually
happens is that the template parameter is set to "op=", as this program shows:

    struct S
    {
        void opIndexOpAssign(string op)(int x, int i)
        {
            pragma (msg, op);
        }

        void opOpAssign(string op)(int x)
        {
            pragma(msg, op);
        }
    }

    void main()
    {
        S s;
        s[1] += 2;
        s += 3;
    }

This prints the following on compilation:

  +=
  +=

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list