Bug 10720 – ICE with is(aaOfNonCopyableStruct.nonExistingField)

Status
RESOLVED
Resolution
FIXED
Severity
minor
Priority
P2
Component
druntime
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-07-27T04:35:00Z
Last change time
2013-09-22T11:03:04Z
Keywords
ice, pull
Assigned to
nobody
Creator
dlang-bugzilla

Comments

Comment #0 by dlang-bugzilla — 2013-07-27T04:35:02Z
struct NC { @disable this(this) {} } void main() { NC[string] aa; is(aa.nonExistingField); }
Comment #1 by henning — 2013-07-29T06:52:24Z
Comment #2 by k.hara.pg — 2013-07-29T19:31:55Z
Comment #3 by github-bugzilla — 2013-08-01T00:49:23Z
Commits pushed to master at https://github.com/D-Programming-Language/druntime https://github.com/D-Programming-Language/druntime/commit/2473c2204180be54d35bcd099b09949f13025199 fix issue 10720 - ICE with is(aaOfNonCopyableStruct.nonExistingField) AA.dup should be disabled if Value type is not copyable. The root cause was the use of Value.init. Built-in `init` property makes rvalue, therefore the 'static if' condition did not properly test 'copyable' trait of Value type. https://github.com/D-Programming-Language/druntime/commit/ee1eb100a7c0c283d798d4e4913d6472f1c50443 Merge pull request #554 from 9rnsr/fix10720 issue 10720 - ICE with is(aaOfNonCopyableStruct.nonExistingField)
Comment #4 by code — 2013-08-01T00:56:48Z
Apparently the ICE happened because the instantiation of AssociativeArray!(Key, Value) failed so that TypeAArray::getImpl returns null.