Adds natspec to AST for enum definition.

This commit is contained in:
Christian Parpart
2023-04-05 14:58:32 +02:00
committed by Nikola Matic
parent 7b634152bd
commit be8752b5d3
12 changed files with 180 additions and 10 deletions
+8 -3
View File
@@ -737,7 +737,7 @@ private:
std::vector<ASTPointer<VariableDeclaration>> m_members;
};
class EnumDefinition: public Declaration, public ScopeOpener
class EnumDefinition: public Declaration, public StructurallyDocumented, public ScopeOpener
{
public:
EnumDefinition(
@@ -745,9 +745,14 @@ public:
SourceLocation const& _location,
ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
std::vector<ASTPointer<EnumValue>> _members
std::vector<ASTPointer<EnumValue>> _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;
+1
View File
@@ -384,6 +384,7 @@ bool ASTJsonExporter::visit(EnumDefinition 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("members", toJson(_node.members()))
};
+2 -1
View File
@@ -462,7 +462,8 @@ ASTPointer<EnumDefinition> ASTJsonImporter::createEnumDefinition(Json::Value con
_node,
memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
members
members,
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation"))
);
}
+2 -1
View File
@@ -706,6 +706,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition()
{
RecursionGuard recursionGuard(*this);
ASTNodeFactory nodeFactory(*this);
ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation();
expectToken(Token::Enum);
auto [name, nameLocation] = expectIdentifierWithLocation();
vector<ASTPointer<EnumValue>> members;
@@ -725,7 +726,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition()
nodeFactory.markEndPosition();
expectToken(Token::RBrace);
return nodeFactory.createNode<EnumDefinition>(name, nameLocation, members);
return nodeFactory.createNode<EnumDefinition>(name, nameLocation, members, documentation);
}
ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(