aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis/ReferencesResolver.cpp
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-12-05 10:09:47 +0800
committerchriseth <c@ethdev.com>2015-12-10 02:09:24 +0800
commit7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879 (patch)
treed6ac5e5fe041afc29dcea2aafa97d60dca82a991 /libsolidity/analysis/ReferencesResolver.cpp
parente510e7e7929326de3a556d6d2e66b8b4376af7a9 (diff)
downloaddexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar.gz
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar.bz2
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar.lz
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar.xz
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.tar.zst
dexon-solidity-7cb7818ceaf8f2e50cdd66b33a4e0d17c2a0e879.zip
Source units are independent scopes.
Diffstat (limited to 'libsolidity/analysis/ReferencesResolver.cpp')
-rw-r--r--libsolidity/analysis/ReferencesResolver.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp
index 2fe53e8b..ca002f58 100644
--- a/libsolidity/analysis/ReferencesResolver.cpp
+++ b/libsolidity/analysis/ReferencesResolver.cpp
@@ -139,7 +139,9 @@ void ReferencesResolver::endVisit(VariableDeclaration const& _variable)
bool isPointer = true;
if (_variable.isExternalCallableParameter())
{
- auto const& contract = dynamic_cast<ContractDefinition const&>(*_variable.scope()->scope());
+ auto const& contract = dynamic_cast<ContractDefinition const&>(
+ *dynamic_cast<Declaration const&>(*_variable.scope()).scope()
+ );
if (contract.isLibrary())
{
if (varLoc == Location::Memory)
@@ -162,9 +164,11 @@ void ReferencesResolver::endVisit(VariableDeclaration const& _variable)
else
typeLoc = varLoc == Location::Memory ? DataLocation::Memory : DataLocation::Storage;
}
- else if (_variable.isCallableParameter() && _variable.scope()->isPublic())
+ else if (_variable.isCallableParameter() && dynamic_cast<Declaration const&>(*_variable.scope()).isPublic())
{
- auto const& contract = dynamic_cast<ContractDefinition const&>(*_variable.scope()->scope());
+ auto const& contract = dynamic_cast<ContractDefinition const&>(
+ *dynamic_cast<Declaration const&>(*_variable.scope()).scope()
+ );
// force locations of public or external function (return) parameters to memory
if (varLoc == Location::Storage && !contract.isLibrary())
fatalTypeError(_variable.location(),