digitalmars.D.bugs - [Issue 1924] New: fail to pragma compile time constant
- d-bugmail puremagic.com (20/20) Mar 14 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (14/14) Mar 14 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (35/35) Mar 14 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (14/14) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (6/6) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (9/9) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (9/9) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (5/5) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (9/11) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (10/10) Nov 26 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (7/7) Nov 27 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
- d-bugmail puremagic.com (9/9) Nov 27 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1924
http://d.puremagic.com/issues/show_bug.cgi?id=1924 Summary: fail to pragma compile time constant Product: D Version: 1.026 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: davidl 126.com char[] wrongfunc() { char[] result; pragma(msg, result); // fail at this line return result; } mixin(wrongfunc); --
Mar 14 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 fvbommel wxs.nl changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID Your 'result' is a variable that happens not to get assigned at runtime, but the fact that it happens not to change doesn't mean it's a constant. P.S. According to the spec it even needs to be a string literal (which I don't think is what the compiler implements, since I'm pretty sure it allows string constants constructed by templates and ctfe). But either way your code is clearly illegal. --
Mar 14 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 davidl 126.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID | char[] wrongfunc() { char[] result="void main()"; result ~= "{}"; const char[] myresult= result; pragma(msg, myresult); // fail at this line return result; } mixin(wrongfunc); abc.d(6): Error: string expected for message, not 'result' pragma here is clearly for debugging CTFE. I don't want to make it as the following char[] getresult() { char[] result="void main()"; result ~= "{}"; return result; } char[] myfunc() { const char[] result = getresult(); pragma(msg,result); return result; } mixin(myfunc); it's way dummier for debugging CTFE, especially if i want to do only some simple inspect on some particular vars. --
Mar 14 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 clugdbug yahoo.com.au changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Keywords|spec | Summary|fail to pragma compile time |Allow pragma(msg) in CTFE |constant | Although a way of debugging CTFE functions would be very nice to have, this is definitely not a bug. I'm changing this to an enhancement, changed title from: fail to pragma compile time constant --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 I think we need separate notation for this. Generating a compiler message while compiling a function is conceptually different from generating a compiler message while evaluating it. --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 shro8822 vandals.uidaho.edu changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |shro8822 vandals.uidaho.edu vote++; --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 From the names pragma(msg) and pragma(writefln), it isn't clear at all that one's while compiling and one's while evaluating. Better would be to name it something like "ctfeMsg" or "msgCTFE". And perhaps writefln notation could be supported in both this and regular msg. This won't break existing code as long as pragma(msg, string) with no further arguments is still defined to write that exact string. --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 To date, every use of writefln I've seen has been run time. So it doesn't seem particularly ambiguous at least to me, --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924To date, every use of writefln I've seen has been run time. So it doesn't seem particularly ambiguous at least to me,That's because at the moment writefln can only be executed at run time. If it (or something resembling it) becomes executable at compile time, it could just as well be either as and when compiled or during CTFE. Having a difference between pragma(msg) and pragma(writefln) beyond what they say on the tin would be arbitrary and confusing. --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 Sorry, I was far less than clear. writefln in all cases we use it in now executes with the code path, e.g. when the code is executed rather than generated. pragma is compile time in all cases. Seems like a good fit to me. OTOH as long as it's not something like pragma(D9B01F73-E64A-4FA9-A2DE-C20CD24560BA) I'm not going to object to getting it! --
Nov 26 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 On second thoughts, this isn't an actual proposal. There's a genuine need, but pragma(msg) inside CTFE is not the solution. I think we should just kill this bug, and create a new one when there's an actual proposal for how it should work. --
Nov 27 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1924 shro8822 vandals.uidaho.edu changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Allow pragma(msg) in CTFE |Allow writefln like ouput | |during CTFE. Vote++ or rename and re-tag it. --
Nov 27 2008