PR go/61308
compiler: Handle enclosing vars for function type in function lit.
This fixes a dumb bug in which the enclosing vars were
incorrectly cleared when a function literal contains a
reference to a function type. The test for this will go into
the master repository in the change at
http://codereview.appspot.com/
121200043 .
From-SVN: r213618
// For a function literal, the next token must be a '{'. If we
// don't see that, then we may have a type expression.
if (!this->peek_token()->is_op(OPERATOR_LCURLY))
- return Expression::make_type(type, location);
+ {
+ hold_enclosing_vars.swap(this->enclosing_vars_);
+ return Expression::make_type(type, location);
+ }
bool hold_is_erroneous_function = this->is_erroneous_function_;
if (fntype_is_error)