From fd98db1b700d83b274b0c9f7a76c211d21e244b3 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 8 Jan 2021 17:14:35 +0100 Subject: [PATCH] Fixed error line number mismatch when including files or using comments --- source/lang/preprocessor.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/lang/preprocessor.cpp b/source/lang/preprocessor.cpp index e57f9b76c..53344ce30 100644 --- a/source/lang/preprocessor.cpp +++ b/source/lang/preprocessor.cpp @@ -66,7 +66,12 @@ namespace hex::lang { if (!preprocessedInclude.has_value()) throw this->m_error; - output += preprocessedInclude.value(); + auto content = preprocessedInclude.value(); + + std::replace(content.begin(), content.end(), '\n', ' '); + std::replace(content.begin(), content.end(), '\r', ' '); + + output += content; delete[] buffer; @@ -145,15 +150,17 @@ namespace hex::lang { offset += 1; } else if (code.substr(offset, 2) == "/*") { while (code.substr(offset, 2) != "*/" && offset < code.length()) { - if (code[offset] == '\n') + if (code[offset] == '\n') { + output += '\n'; lineNumber++; + } offset += 1; } offset += 2; if (offset >= code.length()) - throwPreprocessorError("unterminated comment", lineNumber); + throwPreprocessorError("unterminated comment", lineNumber - 1); } if (code[offset] == '\n')