diff options
-rw-r--r-- | AST.cpp | 9 | ||||
-rw-r--r-- | AST.h | 9 | ||||
-rw-r--r-- | Types.cpp | 9 |
3 files changed, 10 insertions, 17 deletions
@@ -110,14 +110,9 @@ void FunctionDefinition::checkTypeRequirements() m_body->checkTypeRequirements(); } -std::string FunctionDefinition::getCanonicalSignature() +string FunctionDefinition::getCanonicalSignature() const { - auto parameters = getParameters(); - std::string ret = getName() + "("; - - for (auto it = parameters.cbegin(); it != parameters.cend(); ++it) - ret += (*it)->getType()->toString() + (it + 1 == parameters.end() ? "" : ","); - return ret + ")"; + return getName() + FunctionType(*this).getCanonicalSignature(); } void Block::checkTypeRequirements() @@ -277,11 +277,10 @@ 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(); + /// @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() const; private: bool m_isPublic; @@ -452,13 +452,12 @@ unsigned FunctionType::getSizeOnStack() const } } -std::string FunctionType::getCanonicalSignature() const +string FunctionType::getCanonicalSignature() const { - auto parameters = getParameterTypes(); - std::string ret = "NAME("; //TODO: how to get function name from FunctionType + string ret = "("; - for (auto it = parameters.cbegin(); it != parameters.cend(); ++it) - ret += (*it)->toString() + (it + 1 == m_parameterTypes.end() ? "" : ","); + for (auto it = m_parameterTypes.cbegin(); it != m_parameterTypes.cend(); ++it) + ret += (*it)->toString() + (it + 1 == m_parameterTypes.cend() ? "" : ","); return ret + ")"; } |