Bug 10684 – Refused array op with array literal

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-07-20T12:47:00Z
Last change time
2013-10-18T07:19:28Z
Keywords
pull, rejects-valid
Assigned to
nobody
Creator
bearophile_hugs

Comments

Comment #0 by bearophile_hugs — 2013-07-20T12:47:14Z
void main() { int[] a = [0, 0]; a[] += [10, 20][]; } DMD 2.064alpha gives: test.d(3): Error: invalid array operation a[] += [10, 20] (did you forget a [] ?) I think this used to work. Maybe related to Issue 10626
Comment #1 by k.hara.pg — 2013-10-16T01:36:32Z
This is a regression from 2.063. Introduced commit: https://github.com/9rnsr/dmd/commit/f703c5c6551affddd9213f759657a2b3e391b935
Comment #2 by k.hara.pg — 2013-10-16T03:22:18Z
Comment #3 by github-bugzilla — 2013-10-17T23:53:19Z
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/f78a770f469fcc60d450e1b9fcd03fbc9ffb010d fix Issue 10684 - Refused array op with array literal Accept array literals as the operand of array-ops. --- Since, array-ops had required explicit slice to the array literal operands, eg. `a[] = [1,2][] + c[];` By the commit: https://github.com/9rnsr/dmd/commit/f703c5c6551affddd9213f759657a2b3e391b935 now the redundant slice operators at the right side of an array literal is entirely removed - `[1,2,3][][]` is rewritten to `[1,2,3]`. Although it has broke existing code using array-ops, I still cannot think the optimization was incorrect. On the other hand, I could not find the description about the necessity of explicit slice on array literal from the language spec. http://dlang.org/arrays.html#array-operations It looked to me that is just an implementation-specific restriction. So, I implemented this as the easiest way to fix the issue. https://github.com/D-Programming-Language/dmd/commit/f39979fde3b2000047c6aae652a42db5572a2a38 Merge pull request #2672 from 9rnsr/fix10684 [REG2.063][enh] Issue 10684 - Refused array op with array literal
Comment #4 by github-bugzilla — 2013-10-17T23:54:16Z
Commit pushed to 2.064 at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/94dd0598e660d85e72092adb631843ddff1651c0 Merge pull request #2672 from 9rnsr/fix10684 [REG2.063][enh] Issue 10684 - Refused array op with array literal