[Issue 12553] New: compilation fails if a forward referenced symbol represents a value and is first used as template parameter
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Apr 9 11:45:40 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=12553
Issue ID: 12553
Summary: compilation fails if a forward referenced symbol
represents a value and is first used as template
parameter
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: 2krnk at gmx.net
/++
if a forward referenced symbol is first used as template parameter, then
compilation fails for symbols that represent values.
(no problems with symbols representing funcs, structs, classes and empty
enums.)
++/
//any of the following will make the bug(s) disappear:
// enum fix = test;
// enum fix2 = test2;
// pragma(msg, __traits(compiles, test) );
// pragma(msg, __traits(compiles, test2) );
enum buggy = check!(test);
enum buggy2 = check2!(test2);
//Error: variable buggy(2) had semantic errors when compiling
enum test = 13; // fails
enum test2 = 13; // fails
// immutable test = 13;// fails
// const test = 13; // fails
//BUT no problems whatsover with symbols not representing values:
// enum test; // works
// void test(){} // works
// struct test{} // works
// class test{} // works
template check(alias sym){
enum check = true;
} // no difference if this template is declared first
template check2(int sym){
enum check2 = true;
} // no difference if this template is declared first
void main(){}
--
More information about the Digitalmars-d-bugs
mailing list