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

           Summary: const + alias this = wrong code
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Keywords: wrong-code
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: dsim...@yahoo.com


--- Comment #0 from David Simcha <dsim...@yahoo.com> 2010-12-21 19:30:58 PST ---
Happens on at least 2.050, 2.051.

import core.stdc.stdio;  // Pollutes asm less than std.stdio.

struct Foo {
    uint dummy = 0;
    uint k = 0;

    alias dummy this;  // Yes, this line is necessary for reproducing the bug.

    // This needs to be a function to reproduce the bug.  Setting k directly
    // doesn't cut it.
    void put(uint element) {
        k += element;
    }

    // rhs must be const to reproduce the bug.
    void put(const Foo rhs) {
        k += rhs.k;
    }
}

void main() {
    Foo foo1, foo2;
    foo1.put(10);
    foo2.put(42);
    foo1.put(foo2);

    printf("%d\n", foo1.k);  // 10, should be 52
}

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

Reply via email to