From b24f2e02158b2f066db9bd25f1029677caf19728 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 13 May 2021 19:34:49 +0100 Subject: [PATCH] TestFileParser: rework readStream and handle new lines properly --- test/libsolidity/util/TestFileParser.cpp | 28 ++++++++++++++++-------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/test/libsolidity/util/TestFileParser.cpp b/test/libsolidity/util/TestFileParser.cpp index f6261f2b7..83ad81f70 100644 --- a/test/libsolidity/util/TestFileParser.cpp +++ b/test/libsolidity/util/TestFileParser.cpp @@ -489,11 +489,25 @@ string TestFileParser::parseString() return literal; } +namespace { +string _readStream(istream& _stream) +{ + string ret; + while (!_stream.eof()) + { + string tmp; + // NOTE: this will read until EOF or NL + getline(_stream, tmp); + ret.append(tmp); + ret.append("\n"); + } + return ret; +} +} + void TestFileParser::Scanner::readStream(istream& _stream) { - std::string line; - while (std::getline(_stream, line)) - m_line += line; + m_line = _readStream(_stream); m_char = m_line.begin(); } @@ -529,12 +543,8 @@ void TestFileParser::Scanner::scanNextToken() { switch(current()) { - case '/': - advance(); - if (current() == '/') - selectToken(Token::Newline); - else - selectToken(Token::Invalid); + case '\n': + selectToken(Token::Newline); break; case '-': if (peek() == '>')