diff --git a/AST.cpp b/AST.cpp index fd8f45a73..cdbfb4e9a 100644 --- a/AST.cpp +++ b/AST.cpp @@ -114,18 +114,10 @@ std::string FunctionDefinition::getCanonicalSignature() { auto parameters = getParameters(); std::string ret = getName() + "("; - unsigned int i = 1; - for (ASTPointer const& member: parameters) - { - ret += member->getType()->toString(); - if (i != parameters.size()) { - ret += ","; - } - i++; - } - ret += ")"; - return ret; + for (auto it = parameters.cbegin(); it != parameters.cend(); ++it) + ret += (*it)->getType()->toString() + (it + 1 == parameters.end() ? "" : ","); + return ret + ")"; } void Block::checkTypeRequirements() diff --git a/Types.cpp b/Types.cpp index 71319c3ac..640a34ca8 100644 --- a/Types.cpp +++ b/Types.cpp @@ -452,6 +452,17 @@ unsigned FunctionType::getSizeOnStack() const } } +std::string FunctionType::getCanonicalSignature() const +{ + auto parameters = getParameterTypes(); + std::string ret = "NAME("; //TODO: how to get function name from FunctionType + + for (auto it = parameters.cbegin(); it != parameters.cend(); ++it) + ret += (*it)->toString() + (it + 1 == m_parameterTypes.end() ? "" : ","); + + return ret + ")"; +} + bool MappingType::operator==(Type const& _other) const { if (_other.getCategory() != getCategory()) diff --git a/Types.h b/Types.h index 48539a1d7..0fe685b87 100644 --- a/Types.h +++ b/Types.h @@ -325,6 +325,7 @@ public: virtual unsigned getSizeOnStack() const override; Location const& getLocation() const { return m_location; } + std::string getCanonicalSignature() const; private: TypePointers m_parameterTypes;