[Issue 17627] New: assert output in ctfe is irritating
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sun Jul 9 10:51:59 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17627
Issue ID: 17627
Summary: assert output in ctfe is irritating
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: andre at s-e-a-p.de
assert(false, strVar) has to be used to output a string variable in CTFE. At
the moment there is no other possibility as pragma(msg, ...) and writeln is not
working.
Also with the new CTFE it isn't 100% clear whether ctfeWriteln will come:
http://forum.dlang.org/post/ynqedyhlpbolyfmhfvei@forum.dlang.org
For this example
string test(string s)
{
string tmp = s;
tmp = tmp[4..$];
assert(false, tmp);
return tmp;
}
enum foo =
`1234
5678
`;
void main()
{
enum bar = test(foo);
}
The output is (dmd 2.075.0-b2):
C:\Users\user\Desktop>rdmd app
app.d(6): Error: "1234\x0a5678\x0a"[4..10]
app.d(17): called from here: test("1234\x0a5678\x0a")
Failed: ["dmd", "-v", "-o-", "app.d", "-I."]
Instead of the content of tmp, the full content is shown with the slice
information [4..10].
This output is in a real scenario quite irritating as the string is much longer
and a lot more logic is going on and also the string isn't passed back but a
structure. I already thought dmd isn't working at all, as the tmp variable
didn't changed its value. Only after having 5 looks at the minimal example
output, I saw the slice information.
--
More information about the Digitalmars-d-bugs
mailing list