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

Method parseObject

libyul/ObjectParser.cpp:78–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76}
77
78std::shared_ptr<Object> ObjectParser::parseObject(Object* _containingObject)
79{
80 RecursionGuard guard(*this);
81
82 std::shared_ptr<Object> ret = std::make_shared<Object>();
83
84 auto sourceNameMapping = tryParseSourceNameMapping();
85 ret->debugData = std::make_shared<ObjectDebugData>(ObjectDebugData{sourceNameMapping});
86
87 if (currentToken() != Token::Identifier || currentLiteral() != "object")
88 fatalParserError(4294_error, "Expected keyword \"object\".");
89 advance();
90
91 ret->name = parseUniqueName(_containingObject);
92
93 expectToken(Token::LBrace);
94
95 ret->setCode(parseCode(std::move(sourceNameMapping)));
96
97 while (currentToken() != Token::RBrace)
98 {
99 if (currentToken() == Token::Identifier && currentLiteral() == "object")
100 parseObject(ret.get());
101 else if (currentToken() == Token::Identifier && currentLiteral() == "data")
102 parseData(*ret);
103 else
104 fatalParserError(8143_error, "Expected keyword \"data\" or \"object\" or \"}\".");
105 }
106 if (_containingObject)
107 addNamedSubObject(*_containingObject, ret->name, ret);
108
109 expectToken(Token::RBrace);
110
111 return ret;
112}
113
114std::shared_ptr<AST> ObjectParser::parseCode(std::optional<SourceNameMap> _sourceNames)
115{

Callers

nothing calls this directly

Calls 2

setCodeMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected