mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
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) :-)
This commit is contained in:
parent
c48a5264be
commit
435f7b3b72
@ -27,11 +27,6 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace langutil;
|
using namespace langutil;
|
||||||
|
|
||||||
std::shared_ptr<string const> const& ParserBase::sourceName() const
|
|
||||||
{
|
|
||||||
return m_scanner->sourceName();
|
|
||||||
}
|
|
||||||
|
|
||||||
int ParserBase::position() const
|
int ParserBase::position() const
|
||||||
{
|
{
|
||||||
return m_scanner->currentLocation().start;
|
return m_scanner->currentLocation().start;
|
||||||
|
@ -38,7 +38,6 @@ class ParserBase
|
|||||||
public:
|
public:
|
||||||
explicit ParserBase(ErrorReporter& errorReporter): m_errorReporter(errorReporter) {}
|
explicit ParserBase(ErrorReporter& errorReporter): m_errorReporter(errorReporter) {}
|
||||||
|
|
||||||
std::shared_ptr<std::string const> const& sourceName() const;
|
|
||||||
std::shared_ptr<CharStream> source() const { return m_scanner->charStream(); }
|
std::shared_ptr<CharStream> source() const { return m_scanner->charStream(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -167,10 +167,9 @@ private:
|
|||||||
}; // end of LiteralScope class
|
}; // end of LiteralScope class
|
||||||
|
|
||||||
|
|
||||||
void Scanner::reset(CharStream _source, string _sourceName)
|
void Scanner::reset(CharStream _source)
|
||||||
{
|
{
|
||||||
m_source = make_shared<CharStream>(std::move(_source));
|
m_source = make_shared<CharStream>(std::move(_source));
|
||||||
m_sourceName = make_shared<string const>(std::move(_sourceName));
|
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,14 +91,14 @@ class Scanner
|
|||||||
friend class LiteralScope;
|
friend class LiteralScope;
|
||||||
public:
|
public:
|
||||||
explicit Scanner(std::shared_ptr<CharStream> _source) { reset(std::move(_source)); }
|
explicit Scanner(std::shared_ptr<CharStream> _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::string source() const { return m_source->source(); }
|
||||||
|
|
||||||
std::shared_ptr<CharStream> charStream() noexcept { return m_source; }
|
std::shared_ptr<CharStream> charStream() noexcept { return m_source; }
|
||||||
|
|
||||||
/// Resets the scanner as if newly constructed with _source and _sourceName as input.
|
/// Resets the scanner as if newly constructed with _source as input.
|
||||||
void reset(CharStream _source, std::string _sourceName);
|
void reset(CharStream _source);
|
||||||
void reset(std::shared_ptr<CharStream> _source);
|
void reset(std::shared_ptr<CharStream> _source);
|
||||||
/// Resets scanner to the start of input.
|
/// Resets scanner to the start of input.
|
||||||
void reset();
|
void reset();
|
||||||
@ -150,8 +150,6 @@ public:
|
|||||||
std::string const& peekLiteral() const { return m_nextToken.literal; }
|
std::string const& peekLiteral() const { return m_nextToken.literal; }
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
std::shared_ptr<std::string const> const& sourceName() const { return m_sourceName; }
|
|
||||||
|
|
||||||
///@{
|
///@{
|
||||||
///@name Error printing helper functions
|
///@name Error printing helper functions
|
||||||
/// Functions that help pretty-printing parse errors
|
/// Functions that help pretty-printing parse errors
|
||||||
@ -242,7 +240,6 @@ private:
|
|||||||
TokenDesc m_nextToken; // desc for next token (one token look-ahead)
|
TokenDesc m_nextToken; // desc for next token (one token look-ahead)
|
||||||
|
|
||||||
std::shared_ptr<CharStream> m_source;
|
std::shared_ptr<CharStream> m_source;
|
||||||
std::shared_ptr<std::string const> m_sourceName;
|
|
||||||
|
|
||||||
/// one character look-ahead, equals 0 at end of input
|
/// one character look-ahead, equals 0 at end of input
|
||||||
char m_char;
|
char m_char;
|
||||||
|
@ -360,7 +360,7 @@ void CompilerContext::appendInlineAssembly(
|
|||||||
|
|
||||||
ErrorList errors;
|
ErrorList errors;
|
||||||
ErrorReporter errorReporter(errors);
|
ErrorReporter errorReporter(errors);
|
||||||
auto scanner = make_shared<langutil::Scanner>(langutil::CharStream(_assembly, "--CODEGEN--"), "--CODEGEN--");
|
auto scanner = make_shared<langutil::Scanner>(langutil::CharStream(_assembly, "--CODEGEN--"));
|
||||||
auto parserResult = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false);
|
auto parserResult = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false);
|
||||||
#ifdef SOL_OUTPUT_ASM
|
#ifdef SOL_OUTPUT_ASM
|
||||||
cout << yul::AsmPrinter()(*parserResult) << endl;
|
cout << yul::AsmPrinter()(*parserResult) << endl;
|
||||||
|
@ -69,7 +69,7 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string
|
|||||||
{
|
{
|
||||||
m_errors.clear();
|
m_errors.clear();
|
||||||
m_analysisSuccessful = false;
|
m_analysisSuccessful = false;
|
||||||
m_scanner = make_shared<Scanner>(CharStream(_source, _sourceName), _sourceName);
|
m_scanner = make_shared<Scanner>(CharStream(_source, _sourceName));
|
||||||
m_parserResult = yul::ObjectParser(m_errorReporter, languageToAsmFlavour(m_language)).parse(m_scanner, false);
|
m_parserResult = yul::ObjectParser(m_errorReporter, languageToAsmFlavour(m_language)).parse(m_scanner, false);
|
||||||
if (!m_errorReporter.errors().empty())
|
if (!m_errorReporter.errors().empty())
|
||||||
return false;
|
return false;
|
||||||
|
@ -125,7 +125,7 @@ bool CompilerStack::addSource(string const& _name, string const& _content, bool
|
|||||||
{
|
{
|
||||||
bool existed = m_sources.count(_name) != 0;
|
bool existed = m_sources.count(_name) != 0;
|
||||||
reset(true);
|
reset(true);
|
||||||
m_sources[_name].scanner = make_shared<Scanner>(CharStream(_content, _name), _name);
|
m_sources[_name].scanner = make_shared<Scanner>(CharStream(_content, _name));
|
||||||
m_sources[_name].isLibrary = _isLibrary;
|
m_sources[_name].isLibrary = _isLibrary;
|
||||||
m_stackState = SourcesSet;
|
m_stackState = SourcesSet;
|
||||||
return existed;
|
return existed;
|
||||||
@ -160,7 +160,7 @@ bool CompilerStack::parse()
|
|||||||
{
|
{
|
||||||
string const& newPath = newSource.first;
|
string const& newPath = newSource.first;
|
||||||
string const& newContents = newSource.second;
|
string const& newContents = newSource.second;
|
||||||
m_sources[newPath].scanner = make_shared<Scanner>(CharStream(newContents, newPath), newPath);
|
m_sources[newPath].scanner = make_shared<Scanner>(CharStream(newContents, newPath));
|
||||||
sourcesToParse.push_back(newPath);
|
sourcesToParse.push_back(newPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,10 +107,10 @@ BOOST_AUTO_TEST_CASE(hex_numbers)
|
|||||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x765432536763762734623472346");
|
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x765432536763762734623472346");
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Semicolon);
|
BOOST_CHECK_EQUAL(scanner.next(), Token::Semicolon);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x1234");
|
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "0x1234");
|
||||||
scanner.reset(CharStream("0X1234", ""), "");
|
scanner.reset(CharStream("0X1234", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
|
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,17 +118,17 @@ BOOST_AUTO_TEST_CASE(octal_numbers)
|
|||||||
{
|
{
|
||||||
Scanner scanner(CharStream("07", ""));
|
Scanner scanner(CharStream("07", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
|
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
|
||||||
scanner.reset(CharStream("007", ""), "");
|
scanner.reset(CharStream("007", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
|
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.currentToken(), Token::Sub);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal);
|
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.currentToken(), Token::Sub);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Number);
|
BOOST_CHECK_EQUAL(scanner.next(), Token::Number);
|
||||||
scanner.reset(CharStream("0", ""), "");
|
scanner.reset(CharStream("0", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
||||||
scanner.reset(CharStream("0.1", ""), "");
|
scanner.reset(CharStream("0.1", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,16 +149,16 @@ BOOST_AUTO_TEST_CASE(trailing_dot)
|
|||||||
Scanner scanner(CharStream("2.5", ""));
|
Scanner scanner(CharStream("2.5", ""));
|
||||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Period);
|
BOOST_CHECK_EQUAL(scanner.next(), Token::Period);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
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.currentToken(), Token::Number);
|
||||||
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ pair<shared_ptr<Block>, shared_ptr<yul::AsmAnalysisInfo>> yul::test::parse(strin
|
|||||||
auto flavour = _yul ? yul::AsmFlavour::Yul : yul::AsmFlavour::Strict;
|
auto flavour = _yul ? yul::AsmFlavour::Yul : yul::AsmFlavour::Strict;
|
||||||
ErrorList errors;
|
ErrorList errors;
|
||||||
ErrorReporter errorReporter(errors);
|
ErrorReporter errorReporter(errors);
|
||||||
auto scanner = make_shared<Scanner>(CharStream(_source, ""), "");
|
auto scanner = make_shared<Scanner>(CharStream(_source, ""));
|
||||||
auto parserResult = yul::Parser(errorReporter, flavour).parse(scanner, false);
|
auto parserResult = yul::Parser(errorReporter, flavour).parse(scanner, false);
|
||||||
if (parserResult)
|
if (parserResult)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
yul::AsmFlavour flavour = m_yul ? yul::AsmFlavour::Yul : yul::AsmFlavour::Strict;
|
||||||
ErrorList errors;
|
ErrorList errors;
|
||||||
ErrorReporter errorReporter(errors);
|
ErrorReporter errorReporter(errors);
|
||||||
shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(m_source, ""), "");
|
shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(m_source, ""));
|
||||||
m_ast = yul::Parser(errorReporter, flavour).parse(scanner, false);
|
m_ast = yul::Parser(errorReporter, flavour).parse(scanner, false);
|
||||||
if (!m_ast || !errorReporter.errors().empty())
|
if (!m_ast || !errorReporter.errors().empty())
|
||||||
{
|
{
|
||||||
|
@ -81,7 +81,7 @@ public:
|
|||||||
bool parse(string const& _input)
|
bool parse(string const& _input)
|
||||||
{
|
{
|
||||||
ErrorReporter errorReporter(m_errors);
|
ErrorReporter errorReporter(m_errors);
|
||||||
shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(_input, ""), "");
|
shared_ptr<Scanner> scanner = make_shared<Scanner>(CharStream(_input, ""));
|
||||||
m_ast = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false);
|
m_ast = yul::Parser(errorReporter, yul::AsmFlavour::Strict).parse(scanner, false);
|
||||||
if (!m_ast || !errorReporter.errors().empty())
|
if (!m_ast || !errorReporter.errors().empty())
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user