aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2015-01-07 17:45:59 +0800
committerLefteris Karapetsas <lefteris@refu.co>2015-01-07 17:45:59 +0800
commitdf0dce584d2d1aacf3d33658b0540f243b3adb81 (patch)
tree3c5835c1a4337d20fbdd44fdaf80eebc59796398
parent24d7bdd3a9b9014e1e58dbe44f501fbfdec564c5 (diff)
downloaddexon-solidity-df0dce584d2d1aacf3d33658b0540f243b3adb81.tar.gz
dexon-solidity-df0dce584d2d1aacf3d33658b0540f243b3adb81.tar.zst
dexon-solidity-df0dce584d2d1aacf3d33658b0540f243b3adb81.zip
Small issues with Canonical Function Signature
- Also added an extra test
-rw-r--r--AST.cpp9
-rw-r--r--AST.h9
-rw-r--r--Types.cpp9
3 files changed, 10 insertions, 17 deletions
diff --git a/AST.cpp b/AST.cpp
index cdbfb4e9..0c56cb7a 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -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()
diff --git a/AST.h b/AST.h
index 32cc23a5..8493d432 100644
--- a/AST.h
+++ b/AST.h
@@ -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;
diff --git a/Types.cpp b/Types.cpp
index 640a34ca..7a4c45c6 100644
--- a/Types.cpp
+++ b/Types.cpp
@@ -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 + ")";
}