MCPcopy Create free account
hub / github.com/argotorg/solidity / parse

Method parse

libyul/ObjectParser.cpp:41–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39using namespace solidity::langutil;
40
41std::shared_ptr<Object> ObjectParser::parse(std::shared_ptr<Scanner> const& _scanner, bool _reuseScanner)
42{
43 m_recursionDepth = 0;
44 try
45 {
46 std::shared_ptr<Object> object;
47 m_scanner = _scanner;
48
49 if (currentToken() == Token::LBrace)
50 {
51 // Special case: Code-only form.
52 object = std::make_shared<Object>();
53 object->name = "object";
54 auto sourceNameMapping = tryParseSourceNameMapping();
55 object->debugData = std::make_shared<ObjectDebugData>(ObjectDebugData{sourceNameMapping});
56 object->setCode(parseBlock(sourceNameMapping));
57 if (!object->hasCode())
58 return nullptr;
59 }
60 else
61 object = parseObject();
62 if (!_reuseScanner)
63 expectToken(Token::EOS);
64 return object;
65 }
66 catch (FatalError const&)
67 {
68 if (!m_errorReporter.hasErrors())
69 {
70 std::cerr << "Unreported fatal error:" << std::endl;
71 std::cerr << boost::current_exception_diagnostic_information() << std::endl;
72 yulAssert(false, "Unreported fatal error.");
73 }
74 }
75 return nullptr;
76}
77
78std::shared_ptr<Object> ObjectParser::parseObject(Object* _containingObject)
79{

Callers

nothing calls this directly

Calls 3

setCodeMethod · 0.80
hasCodeMethod · 0.80
hasErrorsMethod · 0.45

Tested by

no test coverage detected