mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #14119 from veniger/natspec-struct
Adds NatSpec to AST for struct definitions.
This commit is contained in:
@@ -709,7 +709,7 @@ private:
|
||||
bool m_global = false;
|
||||
};
|
||||
|
||||
class StructDefinition: public Declaration, public ScopeOpener
|
||||
class StructDefinition: public Declaration, public StructurallyDocumented, public ScopeOpener
|
||||
{
|
||||
public:
|
||||
StructDefinition(
|
||||
@@ -717,9 +717,13 @@ public:
|
||||
SourceLocation const& _location,
|
||||
ASTPointer<ASTString> const& _name,
|
||||
SourceLocation _nameLocation,
|
||||
std::vector<ASTPointer<VariableDeclaration>> _members
|
||||
std::vector<ASTPointer<VariableDeclaration>> _members,
|
||||
ASTPointer<StructuredDocumentation> _documentation
|
||||
):
|
||||
Declaration(_id, _location, _name, std::move(_nameLocation)), m_members(std::move(_members)) {}
|
||||
Declaration(_id, _location, _name, std::move(_nameLocation)),
|
||||
StructurallyDocumented(std::move(_documentation)),
|
||||
m_members(std::move(_members))
|
||||
{}
|
||||
|
||||
void accept(ASTVisitor& _visitor) override;
|
||||
void accept(ASTConstVisitor& _visitor) const override;
|
||||
|
||||
@@ -367,6 +367,7 @@ bool ASTJsonExporter::visit(StructDefinition const& _node)
|
||||
std::vector<pair<string, Json::Value>> attributes = {
|
||||
make_pair("name", _node.name()),
|
||||
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
|
||||
make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue),
|
||||
make_pair("visibility", Declaration::visibilityToString(_node.visibility())),
|
||||
make_pair("members", toJson(_node.members())),
|
||||
make_pair("scope", idOrNull(_node.scope()))
|
||||
|
||||
@@ -449,7 +449,8 @@ ASTPointer<ASTNode> ASTJsonImporter::createStructDefinition(Json::Value const& _
|
||||
_node,
|
||||
memberAsASTString(_node, "name"),
|
||||
createNameSourceLocation(_node),
|
||||
members
|
||||
members,
|
||||
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation"))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -682,6 +682,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition()
|
||||
{
|
||||
RecursionGuard recursionGuard(*this);
|
||||
ASTNodeFactory nodeFactory(*this);
|
||||
ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation();
|
||||
expectToken(Token::Struct);
|
||||
auto [name, nameLocation] = expectIdentifierWithLocation();
|
||||
vector<ASTPointer<VariableDeclaration>> members;
|
||||
@@ -693,7 +694,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition()
|
||||
}
|
||||
nodeFactory.markEndPosition();
|
||||
expectToken(Token::RBrace);
|
||||
return nodeFactory.createNode<StructDefinition>(std::move(name), std::move(nameLocation), std::move(members));
|
||||
return nodeFactory.createNode<StructDefinition>(std::move(name), std::move(nameLocation), std::move(members), std::move(documentation));
|
||||
}
|
||||
|
||||
ASTPointer<EnumValue> Parser::parseEnumValue()
|
||||
|
||||
Reference in New Issue
Block a user