www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - initializing const(Date)

reply "Dan" <dbdavidson yahoo.com> writes:
This used to work but now in 2.062 it causes ctfe error.
Any suggested workaround?

http://dpaste.dzfl.pl/f1a8c2f5
-------------------------------------
import std.datetime;
const(Date) DefaultDate = Date(1929, 10, 29);
void main() {

}
-------------------------------------

Compilation output:
/opt/compilers/dmd2/include/std/datetime.d(13542): Error: 
Internal Compiler Error: CTFE literal cast(short)1
dmd: ctfeexpr.c:353: Expression* copyLiteral(Expression*): 
Assertion `0' failed.

Thanks
Dan
Mar 19 2013
next sibling parent reply "cal" <callumenator gmail.com> writes:
On Tuesday, 19 March 2013 at 16:35:22 UTC, Dan wrote:
 This used to work but now in 2.062 it causes ctfe error.
 Any suggested workaround?
This seems to work: Date defDate() pure { return Date(1929, 10, 29); } const(Date) DefaultDate = defDate(); Assuming you wanted to avoid a initializing inside a static this().
Mar 19 2013
parent "cal" <callumenator gmail.com> writes:
On Tuesday, 19 March 2013 at 17:04:01 UTC, cal wrote:
 On Tuesday, 19 March 2013 at 16:35:22 UTC, Dan wrote:
 This used to work but now in 2.062 it causes ctfe error.
 Any suggested workaround?
This seems to work:
Or: const(Date) DefaultDate = { return Date(1929,10,10); }(); although this is getting cryptic.
Mar 19 2013
prev sibling parent "Jonathan M Davis" <jmdavisProg gmx.com> writes:
On Tuesday, March 19, 2013 17:35:20 Dan wrote:
 This used to work but now in 2.062 it causes ctfe error.
 Any suggested workaround?
 
 http://dpaste.dzfl.pl/f1a8c2f5
 -------------------------------------
 import std.datetime;
 const(Date) DefaultDate = Date(1929, 10, 29);
 void main() {
 
 }
 -------------------------------------
 
 Compilation output:
 /opt/compilers/dmd2/include/std/datetime.d(13542): Error:
 Internal Compiler Error: CTFE literal cast(short)1
 dmd: ctfeexpr.c:353: Expression* copyLiteral(Expression*):
 Assertion `0' failed.
It appears to work if you just do const defaultDate = Date(1929, 10, 29); But please report this as a regression: http://d.puremagic.com/issues - Jonathan M Davis
Mar 19 2013