aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2016-08-30 22:09:41 +0800
committerGitHub <noreply@github.com>2016-08-30 22:09:41 +0800
commit79f9a04236ef2d84a7b730a1ca452c8950bfedc4 (patch)
tree59d9b7d32ba461e02bb4caae38c8c081af42732d /libsolidity
parent99862d15fe44c6192111bd07b24be646b0f91871 (diff)
parent9a91bd80abc79b82de9e3e7881cccab43e6dde9a (diff)
downloaddexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar.gz
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar.bz2
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar.lz
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar.xz
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.tar.zst
dexon-solidity-79f9a04236ef2d84a7b730a1ca452c8950bfedc4.zip
Merge pull request #954 from chriseth/fallbackThrows
Fallback throws
Diffstat (limited to 'libsolidity')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp2
-rw-r--r--libsolidity/codegen/ContractCompiler.cpp5
2 files changed, 3 insertions, 4 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index 235fcabd..bc03da01 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -92,6 +92,8 @@ bool TypeChecker::visit(ContractDefinition const& _contract)
else
{
fallbackFunction = function;
+ if (_contract.isLibrary())
+ typeError(fallbackFunction->location(), "Libraries cannot have fallback functions.");
if (!fallbackFunction->parameters().empty())
typeError(fallbackFunction->parameterList().location(), "Fallback function cannot take parameters.");
if (!fallbackFunction->returnParameters().empty())
diff --git a/libsolidity/codegen/ContractCompiler.cpp b/libsolidity/codegen/ContractCompiler.cpp
index 715852be..9d77ccdc 100644
--- a/libsolidity/codegen/ContractCompiler.cpp
+++ b/libsolidity/codegen/ContractCompiler.cpp
@@ -247,11 +247,8 @@ void ContractCompiler::appendFunctionSelector(ContractDefinition const& _contrac
m_context << returnTag;
appendReturnValuePacker(FunctionType(*fallback).returnParameterTypes(), _contract.isLibrary());
}
- else if (_contract.isLibrary())
- // Reject invalid library calls and ether sent to a library.
- m_context.appendJumpTo(m_context.errorTag());
else
- m_context << Instruction::STOP; // function not found
+ m_context.appendJumpTo(m_context.errorTag());
for (auto const& it: interfaceFunctions)
{