compile time output
Sergey Gromov
snake.scaly at gmail.com
Tue Jan 20 12:22:46 PST 2009
Tue, 20 Jan 2009 16:36:09 +0100, Trass3r wrote:
> Is there any way to output information at compile time other than
> pragma(msg?
> pragma is driving me crazy, the following doesn't work:
>
> auto members = __traits(allMembers, typeof(this));
> foreach(m; members)
> {
> pragma(msg, m);
> }
>
> -> Error: string expected for message, not 'm'
>
> Though the docs clearly state:
> allMembers: "An array of string literals is returned"
> Also checked that, m is of type invariant(char)[].
>
> Any ideas? -.-
Weird. The following code does not compile:
class Cls
{
int bar;
char[] baz;
}
string foo()
{
auto members = __traits(allMembers, Cls);
return "";
}
pragma(msg, foo());
>dmd -c test.d
test.d(11): Error: cannot evaluate foo() at compile time
test.d(11): pragma msg string expected for message, not 'foo()'
Comment out the traits and it compiles. Traits are supposed to be
compile-time. How's that possible for them to prevent compile-time
evaluation?
More information about the Digitalmars-d-learn
mailing list