Bug 2132 – CTFE: can't evaluate ~= at compile time, D2 only.
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2008-05-27T07:32:00Z
Last change time
2015-06-09T01:21:35Z
Assigned to
bugzilla
Creator
clugdbug
Comments
Comment #0 by clugdbug — 2008-05-27T07:32:54Z
This triggers the behaviour shown in bugzilla #1947; but that's incidental.
Here, it's the error message which is the problem. It works OK on D1, and also works on D2 if you use ~ instead of ~=.
The problem could be related to #1768, but the workaround there (explicitly initialising the variable) doesn't work here.
------
bug.d(10): Error: cannot evaluate func(";") at compile time
bug.d(10): Error: argument to mixin must be a string, not (func(";"))
Statement::blockExit(009989DC)
mixin(func(";"));
Assertion failure: '0' on line 123 in file 'statement.c'
abnormal program termination
-----------
---
char [] func(invariant char [] s)
{
char [] u = "".dup;
u ~= s; // ICE
u = u ~ s; // OK
return u;
}
void main() {
mixin(func(";"));
}