From 435f7b3b72157e884344adbc7b62033bd08bb51c Mon Sep 17 00:00:00 2001 From: Christian Parpart Date: Thu, 29 Nov 2018 01:58:15 +0100 Subject: [PATCH] liblangutil: Scanner: remove superfluous sourceName field (it's in CharStream already) Also, ParserBase::sourceName() was dead code. Eliminating it should increase test coverage (how sneaky) :-) --- liblangutil/ParserBase.cpp | 5 ----- liblangutil/ParserBase.h | 1 - liblangutil/Scanner.cpp | 3 +-- liblangutil/Scanner.h | 9 +++----- libsolidity/codegen/CompilerContext.cpp | 2 +- libsolidity/interface/AssemblyStack.cpp | 2 +- libsolidity/interface/CompilerStack.cpp | 4 ++-- test/libsolidity/SolidityScanner.cpp | 28 ++++++++++++------------- test/libyul/Common.cpp | 2 +- test/libyul/YulOptimizerTest.cpp | 2 +- test/tools/yulopti.cpp | 2 +- 11 files changed, 25 insertions(+), 35 deletions(-) diff --git a/liblangutil/ParserBase.cpp b/liblangutil/ParserBase.cpp index c103475a7..391af2911 100644 --- a/liblangutil/ParserBase.cpp +++ b/liblangutil/ParserBase.cpp @@ -27,11 +27,6 @@ using namespace std; using namespace langutil; -std::shared_ptr const& ParserBase::sourceName() const -{ - return m_scanner->sourceName(); -} - int ParserBase::position() const { return m_scanner->currentLocation().start; diff --git a/liblangutil/ParserBase.h b/liblangutil/ParserBase.h index f6315351e..855201e22 100644 --- a/liblangutil/ParserBase.h +++ b/liblangutil/ParserBase.h @@ -38,7 +38,6 @@ class ParserBase public: explicit ParserBase(ErrorReporter& errorReporter): m_errorReporter(errorReporter) {} - std::shared_ptr const& sourceName() const; std::shared_ptr source() const { return m_scanner->charStream(); } protected: diff --git a/liblangutil/Scanner.cpp b/liblangutil/Scanner.cpp index 5c0f356e5..ac298bd5d 100644 --- a/liblangutil/Scanner.cpp +++ b/liblangutil/Scanner.cpp @@ -167,10 +167,9 @@ private: }; // end of LiteralScope class -void Scanner::reset(CharStream _source, string _sourceName) +void Scanner::reset(CharStream _source) { m_source = make_shared(std::move(_source)); - m_sourceName = make_shared(std::move(_sourceName)); reset(); } diff --git a/liblangutil/Scanner.h b/liblangutil/Scanner.h index dc37745fc..a11853690 100644 --- a/liblangutil/Scanner.h +++ b/liblangutil/Scanner.h @@ -91,14 +91,14 @@ class Scanner friend class LiteralScope; public: explicit Scanner(std::shared_ptr _source) { reset(std::move(_source)); } - explicit Scanner(CharStream _source = CharStream(), std::string _sourceName = "") { reset(std::move(_source), std::move(_sourceName)); } + explicit Scanner(CharStream _source = CharStream()) { reset(std::move(_source)); } std::string source() const { return m_source->source(); } std::shared_ptr charStream() noexcept { return m_source; } - /// Resets the scanner as if newly constructed with _source and _sourceName as input. - void reset(CharStream _source, std::string _sourceName); + /// Resets the scanner as if newly constructed with _source as input. + void reset(CharStream _source); void reset(std::shared_ptr _source); /// Resets scanner to the start of input. void reset(); @@ -150,8 +150,6 @@ public: std::string const& peekLiteral() const { return m_nextToken.literal; } ///@} - std::shared_ptr const& sourceName() const { return m_sourceName; } - ///@{ ///@name Error printing helper functions /// Functions that help pretty-printing parse errors @@ -242,7 +240,6 @@ private: TokenDesc m_nextToken; // desc for next token (one token look-ahead) std::shared_ptr m_source; - std::shared_ptr m_sourceName; /// one character look-ahead, equals 0 at end of input char m_char; diff --git a/libsolidity/codegen/CompilerContext.cpp b/libsolidity/codegen/CompilerContext.cpp index 16bc42254..5a3a233ca 100644 --- a/libsolidity/codegen/CompilerContext.cpp +++ b/libsolidity/codegen/CompilerContext.cpp @@ -360,7 +360,7 @@ void CompilerContext::appendInlineAssembly( ErrorList errors; ErrorReporter errorReporter(errors); - auto scanner = make_shared(langutil::CharStream(_assembly, "--CODEGEN--"), "--CODEGEN--"); + auto scanner = make_shared(langutil::CharStream(_assembly, "--CODEGEN--")); auto parserResult = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false); #ifdef SOL_OUTPUT_ASM cout << yul::AsmPrinter()(*parserResult) << endl; diff --git a/libsolidity/interface/AssemblyStack.cpp b/libsolidity/interface/AssemblyStack.cpp index 5268c5aaa..66ba42ee2 100644 --- a/libsolidity/interface/AssemblyStack.cpp +++ b/libsolidity/interface/AssemblyStack.cpp @@ -69,7 +69,7 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string { m_errors.clear(); m_analysisSuccessful = false; - m_scanner = make_shared(CharStream(_source, _sourceName), _sourceName); + m_scanner = make_shared(CharStream(_source, _sourceName)); m_parserResult = yul::ObjectParser(m_errorReporter, languageToAsmFlavour(m_language)).parse(m_scanner, false); if (!m_errorReporter.errors().empty()) return false; diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 58229379e..534073f1c 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -125,7 +125,7 @@ bool CompilerStack::addSource(string const& _name, string const& _content, bool { bool existed = m_sources.count(_name) != 0; reset(true); - m_sources[_name].scanner = make_shared(CharStream(_content, _name), _name); + m_sources[_name].scanner = make_shared(CharStream(_content, _name)); m_sources[_name].isLibrary = _isLibrary; m_stackState = SourcesSet; return existed; @@ -160,7 +160,7 @@ bool CompilerStack::parse() { string const& newPath = newSource.first; string const& newContents = newSource.second; - m_sources[newPath].scanner = make_shared(CharStream(newContents, newPath), newPath); + m_sources[newPath].scanner = make_shared(CharStream(newContents, newPath)); sourcesToParse.push_back(newPath); } } diff --git a/test/libsolidity/SolidityScanner.cpp b/test/libsolidity/SolidityScanner.cpp index 95d565683..5ce4eda2a 100644 --- a/test/libsolidity/SolidityScanner.cpp +++ b/test/libsolidity/SolidityScanner.cpp @@ -107,10 +107,10 @@ BOOST_AUTO_TEST_CASE(hex_numbers) BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x765432536763762734623472346"); BOOST_CHECK_EQUAL(scanner.next(), Token::Semicolon); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("0x1234", ""), ""); + scanner.reset(CharStream("0x1234", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x1234"); - scanner.reset(CharStream("0X1234", ""), ""); + scanner.reset(CharStream("0X1234", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal); } @@ -118,17 +118,17 @@ BOOST_AUTO_TEST_CASE(octal_numbers) { Scanner scanner(CharStream("07", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal); - scanner.reset(CharStream("007", ""), ""); + scanner.reset(CharStream("007", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal); - scanner.reset(CharStream("-07", ""), ""); + scanner.reset(CharStream("-07", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Sub); BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal); - scanner.reset(CharStream("-.07", ""), ""); + scanner.reset(CharStream("-.07", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Sub); BOOST_CHECK_EQUAL(scanner.next(), Token::Number); - scanner.reset(CharStream("0", ""), ""); + scanner.reset(CharStream("0", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); - scanner.reset(CharStream("0.1", ""), ""); + scanner.reset(CharStream("0.1", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); } @@ -149,16 +149,16 @@ BOOST_AUTO_TEST_CASE(trailing_dot) Scanner scanner(CharStream("2.5", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("2.5e10", ""), ""); + scanner.reset(CharStream("2.5e10", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream(".5", ""), ""); + scanner.reset(CharStream(".5", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream(".5e10", ""), ""); + scanner.reset(CharStream(".5e10", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("2.", ""), ""); + scanner.reset(CharStream("2.", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::Period); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); @@ -180,7 +180,7 @@ BOOST_AUTO_TEST_CASE(leading_underscore_decimal_after_dot_illegal) BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("1._", ""), ""); + scanner.reset(CharStream("1._", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); } @@ -225,11 +225,11 @@ BOOST_AUTO_TEST_CASE(number_literals_with_trailing_underscore_at_eos) BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("123_", ""), ""); + scanner.reset(CharStream("123_", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); - scanner.reset(CharStream("12.34_", ""), ""); + scanner.reset(CharStream("12.34_", "")); BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number); BOOST_CHECK_EQUAL(scanner.next(), Token::EOS); } diff --git a/test/libyul/Common.cpp b/test/libyul/Common.cpp index 36065db79..a247a1698 100644 --- a/test/libyul/Common.cpp +++ b/test/libyul/Common.cpp @@ -57,7 +57,7 @@ pair, shared_ptr> yul::test::parse(strin auto flavour = _yul ? yul::AsmFlavour::Yul : yul::AsmFlavour::Strict; ErrorList errors; ErrorReporter errorReporter(errors); - auto scanner = make_shared(CharStream(_source, ""), ""); + auto scanner = make_shared(CharStream(_source, "")); auto parserResult = yul::Parser(errorReporter, flavour).parse(scanner, false); if (parserResult) { diff --git a/test/libyul/YulOptimizerTest.cpp b/test/libyul/YulOptimizerTest.cpp index 8f282aaca..15d70faaf 100644 --- a/test/libyul/YulOptimizerTest.cpp +++ b/test/libyul/YulOptimizerTest.cpp @@ -259,7 +259,7 @@ bool YulOptimizerTest::parse(ostream& _stream, string const& _linePrefix, bool c yul::AsmFlavour flavour = m_yul ? yul::AsmFlavour::Yul : yul::AsmFlavour::Strict; ErrorList errors; ErrorReporter errorReporter(errors); - shared_ptr scanner = make_shared(CharStream(m_source, ""), ""); + shared_ptr scanner = make_shared(CharStream(m_source, "")); m_ast = yul::Parser(errorReporter, flavour).parse(scanner, false); if (!m_ast || !errorReporter.errors().empty()) { diff --git a/test/tools/yulopti.cpp b/test/tools/yulopti.cpp index 8ecafb29a..5273bbb94 100644 --- a/test/tools/yulopti.cpp +++ b/test/tools/yulopti.cpp @@ -81,7 +81,7 @@ public: bool parse(string const& _input) { ErrorReporter errorReporter(m_errors); - shared_ptr scanner = make_shared(CharStream(_input, ""), ""); + shared_ptr scanner = make_shared(CharStream(_input, "")); m_ast = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false); if (!m_ast || !errorReporter.errors().empty()) {