Skip to content

Commit b3ad31e

Browse files
committed
fix heredoc in regex /e
1 parent a59ff04 commit b3ad31e

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/main/java/org/perlonjava/parser/StringParser.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ public static ListNode parseWordsString(ParsedString rawStr) {
268268
return list;
269269
}
270270

271-
public static OperatorNode parseRegexReplace(EmitterContext ctx, ParsedString rawStr) {
271+
public static OperatorNode parseRegexReplace(EmitterContext ctx, ParsedString rawStr, Parser parser) {
272272
String operator = "replaceRegex";
273273
Node parsed = parseRegexString(ctx, rawStr);
274274
String replaceStr = rawStr.buffers.get(1);
@@ -278,7 +278,7 @@ public static OperatorNode parseRegexReplace(EmitterContext ctx, ParsedString ra
278278
if (modifierStr.contains("e")) {
279279
// if modifiers include `e`, then parse the `replace` code
280280
ctx.logDebug("regex e-modifier: " + replaceStr);
281-
Parser blockParser = new Parser(ctx, new Lexer(replaceStr).tokenize());
281+
Parser blockParser = new Parser(ctx, new Lexer(replaceStr).tokenize(), parser.getHeredocNodes());
282282
replace = ParseBlock.parseBlock(blockParser);
283283
} else if (rawStr.secondBufferStartDelim != '\'') {
284284
// handle string interpolaton
@@ -431,7 +431,7 @@ public static Node parseRawString(Parser parser, String operator) {
431431
case "/=":
432432
return parseRegexMatch(parser.ctx, operator, rawStr);
433433
case "s":
434-
return parseRegexReplace(parser.ctx, rawStr);
434+
return parseRegexReplace(parser.ctx, rawStr, parser);
435435
case "\"":
436436
case "qq":
437437
return StringDoubleQuoted.parseDoubleQuotedString(parser.ctx, rawStr, true, true, false, parser.getHeredocNodes());

0 commit comments

Comments
 (0)