diff options
author | chriseth <chris@ethereum.org> | 2016-08-30 22:09:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-30 22:09:41 +0800 |
commit | 79f9a04236ef2d84a7b730a1ca452c8950bfedc4 (patch) | |
tree | 59d9b7d32ba461e02bb4caae38c8c081af42732d /libsolidity | |
parent | 99862d15fe44c6192111bd07b24be646b0f91871 (diff) | |
parent | 9a91bd80abc79b82de9e3e7881cccab43e6dde9a (diff) | |
download | dexon-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.cpp | 2 | ||||
-rw-r--r-- | libsolidity/codegen/ContractCompiler.cpp | 5 |
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) { |