Store docstrings in AST annotations.

This commit is contained in:
chriseth
2015-10-26 15:24:36 +01:00
parent d6e77ce0e1
commit b4f561680a
14 changed files with 540 additions and 383 deletions
+26 -1
View File
@@ -41,13 +41,26 @@ struct ASTAnnotation
virtual ~ASTAnnotation() {}
};
struct DocTag
{
std::string content; ///< The text content of the tag.
std::string paramName; ///< Only used for @param, stores the parameter name.
};
struct DocumentedAnnotation
{
virtual ~DocumentedAnnotation() {}
/// Mapping docstring tag name -> content.
std::multimap<std::string, DocTag> docTags;
};
struct TypeDeclarationAnnotation: ASTAnnotation
{
/// The name of this type, prefixed by proper namespaces if globally accessible.
std::string canonicalName;
};
struct ContractDefinitionAnnotation: TypeDeclarationAnnotation
struct ContractDefinitionAnnotation: TypeDeclarationAnnotation, DocumentedAnnotation
{
/// Whether all functions are implemented.
bool isFullyImplemented = true;
@@ -59,6 +72,18 @@ struct ContractDefinitionAnnotation: TypeDeclarationAnnotation
std::set<ContractDefinition const*> contractDependencies;
};
struct FunctionDefinitionAnnotation: ASTAnnotation, DocumentedAnnotation
{
};
struct EventDefinitionAnnotation: ASTAnnotation, DocumentedAnnotation
{
};
struct ModifierDefinitionAnnotation: ASTAnnotation, DocumentedAnnotation
{
};
struct VariableDeclarationAnnotation: ASTAnnotation
{
/// Type of variable (type of identifier referencing this variable).