File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -504,6 +504,7 @@ void TypeChecker::visitManually(
504504 return ;
505505 }
506506 if (parameters->size () != arguments.size ())
507+ {
507508 typeError (
508509 _modifier.location (),
509510 " Wrong argument count for modifier invocation: " +
@@ -512,6 +513,8 @@ void TypeChecker::visitManually(
512513 toString (parameters->size ()) +
513514 " ."
514515 );
516+ return ;
517+ }
515518 for (size_t i = 0 ; i < _modifier.arguments ().size (); ++i)
516519 if (!type (*arguments[i])->isImplicitlyConvertibleTo (*type (*(*parameters)[i])))
517520 typeError (
Original file line number Diff line number Diff line change @@ -3136,6 +3136,21 @@ BOOST_AUTO_TEST_CASE(conditional_with_all_types)
31363136 BOOST_CHECK (success (text));
31373137}
31383138
3139+ BOOST_AUTO_TEST_CASE (constructor_call_invalid_arg_count)
3140+ {
3141+ // This caused a segfault in an earlier version
3142+ char const * text = R"(
3143+ contract C {
3144+ function C(){}
3145+ }
3146+ contract D is C {
3147+ function D() C(5){}
3148+ }
3149+ )" ;
3150+
3151+ BOOST_CHECK (expectError (text) == Error::Type::TypeError);
3152+ }
3153+
31393154BOOST_AUTO_TEST_CASE (index_access_for_bytes)
31403155{
31413156 char const * text = R"(
You can’t perform that action at this time.
0 commit comments