diff options
-rw-r--r-- | AST.cpp | 17 | ||||
-rw-r--r-- | AST.h | 6 |
2 files changed, 23 insertions, 0 deletions
@@ -110,6 +110,23 @@ void FunctionDefinition::checkTypeRequirements() m_body->checkTypeRequirements(); } +std::string FunctionDefinition::getCanonicalSignature() +{ + auto parameters = getParameters(); + std::string ret = getName() + "("; + unsigned int i = 1; + + for (ASTPointer<VariableDeclaration> const& member: parameters) + { + ret += member->getType()->toString(); + if (i != parameters.size()) { + ret += ","; + } + } + ret += ")"; + return ret; +} + void Block::checkTypeRequirements() { for (shared_ptr<Statement> const& statement: m_statements) @@ -277,6 +277,12 @@ public: /// Checks that all parameters have allowed types and calls checkTypeRequirements on the body. void checkTypeRequirements(); + /// Returns the canonical signature of the function + /// That consists of the name of the function followed by the + /// types of the arguments separated by commas all enclosed in parentheses + /// without any spaces + std::string getCanonicalSignature(); + private: bool m_isPublic; ASTPointer<ParameterList> m_parameters; |