Bug 7785 – [CTFE] ICE when slicing pointer to variable
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-03-26T20:02:00Z
Last change time
2012-04-03T00:53:48Z
Keywords
CTFE, pull
Assigned to
nobody
Creator
code
Comments
Comment #0 by code — 2012-03-26T20:02:09Z
cat > bug.d << CODE
bool foo()
{
int val;
auto p = &val;
auto ary = p[0 .. 1];
return true;
}
enum res = foo();
CODE
dmd -c bug
--------
Comment #1 by clugdbug — 2012-03-30T06:12:23Z
It also applies to indexing, and assignment to slices and indices:
int val = 7;
auto p = &val;
auto ary = p[0 .. 1]; // ICE 1
auto x = p[0]; // ICE 2
p[0..1] = 1; // ICE 3
p[0] = 6; // ICE 4
This pull request turns ICE 1 and ICE 3 into sensible error messages;
ICE 2 compiles without error (it only generates an error, if index is non-zero)
ICE 4 generates a "not yet implemented" error.
https://github.com/D-Programming-Language/dmd/pull/851
Comment #2 by github-bugzilla — 2012-03-30T21:31:30Z