compiler: Make sure we produce an error for a call to a non-function.

Fixes issue 19.

From-SVN: r194174
This commit is contained in:
Ian Lance Taylor 2012-12-05 00:53:44 +00:00
parent 54d04de72b
commit d59a4c82a6

View File

@ -8544,6 +8544,16 @@ Call_expression::do_lower(Gogo* gogo, Named_object* function,
return Expression::make_cast(this->fn_->type(), this->args_->front(),
loc);
// Because do_type will return an error type and thus prevent future
// errors, check for that case now to ensure that the error gets
// reported.
if (this->get_function_type() == NULL)
{
if (!this->fn_->type()->is_error())
this->report_error(_("expected function"));
return Expression::make_error(loc);
}
// Recognize a call to a builtin function.
Func_expression* fne = this->fn_->func_expression();
if (fne != NULL