jumps()) { return $expressions; } $func = yy('Code', array(), yy_Block::wrap(array($expressions))); $args = array(); if (($mentions_args = $expressions->contains('yy_Closure::literal_args')) || $expressions->contains('yy_Closure::literal_this')) { $meth = yy('Literal', $mentions_args ? 'apply' : 'call'); $args = array(yy('Literal', 'this')); if ($mentions_args) { $args[] = yy('Literal', 'arguments'); } $func = yy('Value', $func, array(yy('Access', $meth))); } $func->no_return = $no_return; $call = yy('Call', $func, $args); return $statement ? yy_Block::wrap(array($call)) : $call; } static function literal_args($node) { return ($node instanceof yy_Literal) && (''.$node->value === 'arguments') && ! $node->as_key; } static function literal_this($node) { return (($node instanceof yy_Literal) && (''.$node->value === 'this') && ! $node->as_key) || ($node instanceof yy_Code && $node->bound); } } ?>