From 2c3151159ad5def23871ed7d8345c8cf3414ad2b Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 6 Jan 2019 21:28:56 +0100 Subject: [PATCH] Fix silly dmd.parse regression --- src/dmd/parse.d | 7 +++++-- test/runnable/extra-files/mixin.d | 4 ++-- test/runnable/extra-files/mixin.mixin | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/dmd/parse.d b/src/dmd/parse.d index 9bd51c9901c3..d8b33900325f 100644 --- a/src/dmd/parse.d +++ b/src/dmd/parse.d @@ -239,15 +239,18 @@ bool writeMixin(const(char)[] s, ref Loc loc) // write by line to create consistent line endings size_t lastpos = 0; - foreach (i,c; s) + for (size_t i = 0; i < s.length; ++i) { // detect LF and CRLF + const c = s[i]; if (c == '\n' || (c == '\r' && i+1 < s.length && s[i+1] == '\n')) { ob.writestring(s[lastpos .. i]); ob.writenl(); global.params.mixinLines++; - lastpos = i + (c == '\r' ? 2 : 1); + if (c == '\r') + ++i; + lastpos = i + 1; } } diff --git a/test/runnable/extra-files/mixin.d b/test/runnable/extra-files/mixin.d index 804370c27b98..9f97c5f39b25 100644 --- a/test/runnable/extra-files/mixin.d +++ b/test/runnable/extra-files/mixin.d @@ -2,8 +2,8 @@ // https://issues.dlang.org/show_bug.cgi?id=12790 string get() { - return - q{int x; + return "int x =\n 123;\r\n" ~ + q{ int y; diff --git a/test/runnable/extra-files/mixin.mixin b/test/runnable/extra-files/mixin.mixin index b94d20d258f9..16f8cfcdf3a5 100644 --- a/test/runnable/extra-files/mixin.mixin +++ b/test/runnable/extra-files/mixin.mixin @@ -1,5 +1,7 @@ // expansion at runnable/extra-files/mixin.d(16) -int x; +int x = + 123; + int y;