@@ -39,7 +39,10 @@ static Node parseDoOperator(Parser parser) {
39
39
token = TokenUtils .peek (parser );
40
40
if (token .type == LexerTokenType .OPERATOR && token .text .equals ("{" )) {
41
41
TokenUtils .consume (parser , LexerTokenType .OPERATOR , "{" );
42
+ boolean parsingTakeReference = parser .parsingTakeReference ;
43
+ parser .parsingTakeReference = false ;
42
44
block = ParseBlock .parseBlock (parser );
45
+ parser .parsingTakeReference = parsingTakeReference ;
43
46
TokenUtils .consume (parser , LexerTokenType .OPERATOR , "}" );
44
47
return block ;
45
48
}
@@ -438,9 +441,10 @@ static BinaryOperatorNode parseBless(Parser parser, int currentIndex) {
438
441
static OperatorNode parseDefined (Parser parser , LexerToken token , int currentIndex ) {
439
442
Node operand ;
440
443
// Handle 'defined' operator with special parsing context
444
+ boolean parsingTakeReference = parser .parsingTakeReference ;
441
445
parser .parsingTakeReference = true ; // don't call `&subr` while parsing "Take reference"
442
446
operand = ListParser .parseZeroOrOneList (parser , 0 );
443
- parser .parsingTakeReference = false ;
447
+ parser .parsingTakeReference = parsingTakeReference ;
444
448
if (((ListNode ) operand ).elements .isEmpty ()) {
445
449
// `defined` without arguments means `defined $_`
446
450
((ListNode ) operand ).elements .add (
0 commit comments