diff options
author | Liana Husikyan <liana@ethdev.com> | 2015-02-09 09:06:30 +0800 |
---|---|---|
committer | Liana Husikyan <liana@ethdev.com> | 2015-02-09 09:06:30 +0800 |
commit | 2a5c2578bd7e07326412ac0345ed5f5283908ccb (patch) | |
tree | 863e089d25f486125099417bcc8f963a034bf41f /AST.cpp | |
parent | a66db516fb1025b406c8fcdb694b7fb760f84695 (diff) | |
download | dexon-solidity-2a5c2578bd7e07326412ac0345ed5f5283908ccb.tar.gz dexon-solidity-2a5c2578bd7e07326412ac0345ed5f5283908ccb.tar.zst dexon-solidity-2a5c2578bd7e07326412ac0345ed5f5283908ccb.zip |
- implemented Empty parameter name story. Now the name of input/return parameters of function can be not specified.
- added appropriate tests
Conflicts:
test/SolidityEndToEndTest.cpp
test/SolidityNameAndTypeResolution.cpp
Diffstat (limited to 'AST.cpp')
-rw-r--r-- | AST.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -58,10 +58,21 @@ void ContractDefinition::checkTypeRequirements() BOOST_THROW_EXCEPTION(constructor->getReturnParameterList()->createTypeError( "Non-empty \"returns\" directive for constructor.")); - FunctionDefinition const* fallbackFunction = getFallbackFunction(); - if (fallbackFunction && fallbackFunction->getScope() == this && !fallbackFunction->getParameters().empty()) - BOOST_THROW_EXCEPTION(fallbackFunction->getParameterList().createTypeError( - "Fallback function cannot take parameters.")); + FunctionDefinition const* fallbackFunction = nullptr; + for (ASTPointer<FunctionDefinition> const& function: getDefinedFunctions()) + { + if (function->getName().empty()) + { + if (fallbackFunction) + BOOST_THROW_EXCEPTION(DeclarationError() << errinfo_comment("Only one fallback function is allowed.")); + else + { + fallbackFunction = function.get(); + if (!fallbackFunction->getParameters().empty()) + BOOST_THROW_EXCEPTION(fallbackFunction->getParameterList().createTypeError("Fallback function cannot take parameters.")); + } + } + } for (ASTPointer<ModifierDefinition> const& modifier: getFunctionModifiers()) modifier->checkTypeRequirements(); |