aboutsummaryrefslogtreecommitdiffstats
path: root/AST.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'AST.cpp')
-rw-r--r--AST.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/AST.cpp b/AST.cpp
index 3fcf8ba0..5e344ead 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -39,6 +39,17 @@ TypeError ASTNode::createTypeError(string const& _description) const
return TypeError() << errinfo_sourceLocation(getLocation()) << errinfo_comment(_description);
}
+void ContractDefinition::checkTypeRequirements()
+{
+ FunctionDefinition const* constructor = getConstructor();
+ if (constructor && !constructor->getReturnParameters().empty())
+ BOOST_THROW_EXCEPTION(constructor->getReturnParameterList()->createTypeError(
+ "Non-empty \"returns\" directive for constructor."));
+
+ for (ASTPointer<FunctionDefinition> const& function: getDefinedFunctions())
+ function->checkTypeRequirements();
+}
+
vector<FunctionDefinition const*> ContractDefinition::getInterfaceFunctions() const
{
vector<FunctionDefinition const*> exportedFunctions;