www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7365] New: AAs broken for Object keys and values with opEquals

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365

           Summary: AAs broken for Object keys and values with opEquals
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: critical
          Priority: P2
         Component: druntime
        AssignedTo: nobody puremagic.com
        ReportedBy: code klickverbot.at


--- Comment #0 from klickverbot <code klickverbot.at> 2012-01-24 17:59:56 PST
---
Didn't fully track it down yet, but the following program asserts in getImpl
(mtype.c, line 4371) because AssociativeArray!(Object, TickDuration) can't be
instantiated (DMD 2.058 Git):

---
struct TickDuration {
  bool opEquals(ref const TickDuration rhs) const {
    return true;
  }
}

void main() {
  TickDuration[Object] aa;
  aa.keys;
}
---

Having a look at the gagged errors, it seems like the cause is related to the
opEquals const correctness issue:
---
Error: function object.opEquals (Object lhs, Object rhs) is not callable using
argument types (const(Object),const(Object))
Error: cannot implicitly convert expression (this.key) of type const(Object) to
object.Object
Error: cannot implicitly convert expression (p.key) of type const(Object) to
object.Object
---

The error is encountered while generating the default opEquals for the Slot
type added in
https://github.com/D-Programming-Language/druntime/commit/cd7b477b83cc8a75a90258bd2ab63fa8c92ba10b.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 24 2012
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365


klickverbot <code klickverbot.at> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|critical                    |regression


--- Comment #1 from klickverbot <code klickverbot.at> 2012-01-25 10:53:38 PST
---
Forgot to mark as regression.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 25 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365



--- Comment #2 from github-bugzilla puremagic.com 2012-01-30 12:35:44 PST ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/ba943d54d4f97ec98261d5d00631aecbea7cdbea
add test case for issue 7365

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 30 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |WORKSFORME


--- Comment #3 from Walter Bright <bugzilla digitalmars.com> 2012-01-30
12:36:36 PST ---
It works for me, but I added a test case for it anyway to the test suite.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 30 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365



--- Comment #4 from klickverbot <code klickverbot.at> 2012-01-30 12:48:27 PST
---
Seems to WORKSFORME now as well, not sure when it was fixed or what the problem
was beforeā€¦

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 30 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365


klickverbot <code klickverbot.at> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|WORKSFORME                  |


--- Comment #5 from klickverbot <code klickverbot.at> 2012-01-30 12:51:10 PST
---
Ah, screw it, now the auto-tester fails because of it as well:
http://d.puremagic.com/test-results/test_data.ghtml?dataid=146136. Must have
inadvertently introduced a workaround in my original client code, sorry for the
noise.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 30 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365



--- Comment #6 from github-bugzilla puremagic.com 2012-01-30 16:31:00 PST ---
Commit pushed to master at https://github.com/D-Programming-Language/druntime

https://github.com/D-Programming-Language/druntime/commit/048caceac7c678b16ccd0f6555502a6a622a5ba3
fix Issue 7365 - [Regression after 2.057] AAs broken for Object keys and values
with opEquals

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 30 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7365


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|                            |FIXED


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