aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AST.cpp10
-rwxr-xr-xAST.h6
2 files changed, 15 insertions, 1 deletions
diff --git a/AST.cpp b/AST.cpp
index e4b5ed7d..ca76d023 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -607,6 +607,16 @@ Declaration const* FunctionDescription::getDeclaration() const
return m_description.second;
}
+VariableDeclaration const* FunctionDescription::getVariableDeclaration() const
+{
+ return dynamic_cast<VariableDeclaration const*>(m_description.second);
+}
+
+FunctionDefinition const* FunctionDescription::getFunctionDefinition() const
+{
+ return dynamic_cast<FunctionDefinition const*>(m_description.second);
+}
+
shared_ptr<FunctionType const> FunctionDescription::getFunctionTypeShared() const
{
return m_description.first;
diff --git a/AST.h b/AST.h
index 89daf80f..bda06a5d 100755
--- a/AST.h
+++ b/AST.h
@@ -200,8 +200,12 @@ struct FunctionDescription
std::vector<ParamDescription> const getParameters() const;
/// @returns the return parameters of the function
std::vector<ParamDescription> const getReturnParameters() const;
- /// @returns the Declaration AST Node pointer
+ /// @returns a generic Declaration AST Node pointer which can be either a FunctionDefinition or a VariableDeclaration
Declaration const* getDeclaration() const;
+ /// @returns the VariableDeclaration AST Node pointer or nullptr if it's not a VariableDeclaration
+ VariableDeclaration const* getVariableDeclaration() const;
+ /// @returns the FunctionDefinition AST Node pointer or nullptr if it's not a FunctionDefinition
+ FunctionDefinition const* getFunctionDefinition() const;
/// @returns a created shared pointer with the type of the function
std::shared_ptr<FunctionType> makeFunctionType() const;
/// @returns a pointer to the function type