aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis/TypeChecker.cpp
diff options
context:
space:
mode:
authordjudjuu <julfaber@gmail.com>2017-05-19 21:45:01 +0800
committerdjudjuu <julfaber@gmail.com>2017-05-19 21:48:07 +0800
commit1d22233a43453a21d9fde6e4ba91e26d651045bd (patch)
treece28a2c414b76cd074ae7b6eb15fb8484d92828a /libsolidity/analysis/TypeChecker.cpp
parent6316a76ab915e03e02825ce391d3812098c6b682 (diff)
downloaddexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar.gz
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar.bz2
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar.lz
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar.xz
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.tar.zst
dexon-solidity-1d22233a43453a21d9fde6e4ba91e26d651045bd.zip
refactoring functionCallAnnotation
Diffstat (limited to 'libsolidity/analysis/TypeChecker.cpp')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 38cdc1f8..b8221a2c 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -1238,13 +1238,16 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
if (auto const* typeType = dynamic_cast<TypeType const*>(expressionType.get()))
{
- _functionCall.annotation().isStructConstructorCall = (typeType->actualType()->category() == Type::Category::Struct);
- _functionCall.annotation().isTypeConversion = !_functionCall.annotation().isStructConstructorCall;
+ if (typeType->actualType()->category() == Type::Category::Struct)
+ _functionCall.annotation().kind = FunctionCallKind::StructConstructorCall;
+ else
+ _functionCall.annotation().kind = FunctionCallKind::TypeConversion;
+
}
else
- _functionCall.annotation().isStructConstructorCall = _functionCall.annotation().isTypeConversion = false;
+ _functionCall.annotation().kind = FunctionCallKind::FunctionCall;
- if (_functionCall.annotation().isTypeConversion)
+ if (_functionCall.annotation().kind == FunctionCallKind::TypeConversion)
{
TypeType const& t = dynamic_cast<TypeType const&>(*expressionType);
TypePointer resultType = t.actualType();
@@ -1274,7 +1277,7 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
/// For error message: Struct members that were removed during conversion to memory.
set<string> membersRemovedForStructConstructor;
- if (_functionCall.annotation().isStructConstructorCall)
+ if (_functionCall.annotation().kind == FunctionCallKind::StructConstructorCall)
{
TypeType const& t = dynamic_cast<TypeType const&>(*expressionType);
auto const& structType = dynamic_cast<StructType const&>(*t.actualType());
@@ -1312,7 +1315,7 @@ bool TypeChecker::visit(FunctionCall const& _functionCall)
toString(parameterTypes.size()) +
".";
// Extend error message in case we try to construct a struct with mapping member.
- if (_functionCall.annotation().isStructConstructorCall && !membersRemovedForStructConstructor.empty())
+ if (_functionCall.annotation().kind == FunctionCallKind::StructConstructorCall && !membersRemovedForStructConstructor.empty())
{
msg += " Members that have to be skipped in memory:";
for (auto const& member: membersRemovedForStructConstructor)