Tweak the exporter for inlinable function bodies to work around a
problem with importing of function calls whose function expressions
are not simple function names. In the bug in question, the function
body exporter was writing out a function call of the form
(*(*FuncTyp)(var))(arg)
which produced an export data representation of
*$convert(<type 5>, var)(x)
which is hard to parse unambiguously. Fix: change the export data
emitter to introduce parens around the function expression for more
complex calls.
Testcase for this bug is in CL 197217.
Fixes golang/go#34503.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/197122
From-SVN: r276228
-9112ea664ed9ee5f108158a913812adaf03edf6e
+10a1671d94ddc0c39f2f4b039e5ea33358f414c0
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
void
Call_expression::do_export(Export_function_body* efb) const
{
+ bool simple_call = (this->fn_->func_expression() != NULL);
+ if (!simple_call)
+ efb->write_c_string("(");
this->fn_->export_expression(efb);
+ if (!simple_call)
+ efb->write_c_string(")");
this->export_arguments(efb);
}