DIP 1027---String Interpolation---Community Review Round 1
Patrick Schluter
Patrick.Schluter at bbox.fr
Wed Dec 11 15:37:58 UTC 2019
On Wednesday, 11 December 2019 at 09:52:21 UTC, Mike Parker wrote:
The transformation is WRONG!
'%%', a '%' is written to the output string.
it must be
'%%', a '%%' is written to the output string or else you will
have problems
Example. If I have following expression
writefln(i"I ate %{d}apples and %{d}bananas totalling
%{d}(100*apples/bananas) %%fruit\n");
it would be lowered to
writefln("I ate %d and %d totalling %d %fruit\n", apples,
bananas, (100*apples/bananas));
The %% being transformed to a simple %, we now have a %f with no
parameter => compilation error or worse undefined behaviour in
case of printf.
I would have to write
writefln(i"I ate %{d}apples and %{d}bananas totalling
%{d}(100*apples/bananas) %%%%fruit\n");
which is not good.
So '%%' have to be untouched by the lowering
More information about the Digitalmars-d
mailing list