From 7af3b0cd74c70e32c17d9af0e821b9284e896fc1 Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Mon, 8 Jun 2026 23:14:11 -0600 Subject: [PATCH] fix: treat text blocks as complex arguments --- src/printers/expressions.ts | 32 ++++++++++++++++++------ test/unit-test/member_chain/_input.java | 11 ++++++++ test/unit-test/member_chain/_output.java | 11 ++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/printers/expressions.ts b/src/printers/expressions.ts index bffc49ab..27c11971 100644 --- a/src/printers/expressions.ts +++ b/src/printers/expressions.ts @@ -1329,13 +1329,7 @@ function isSimpleCallArgument(node: NamedNode, depth = 2): boolean { const isChildSimple = (child: NamedNode) => isSimpleCallArgument(child, depth - 1); - if ( - node.type.endsWith("_literal") || - node.type === "true" || - node.type === "false" || - node.type === SyntaxType.Identifier || - node.type === "this" - ) { + if (isLiteral(node) || isSingleWordType(node)) { return true; } @@ -1379,6 +1373,30 @@ function isSimpleCallArgument(node: NamedNode, depth = 2): boolean { return false; } +function isLiteral(node: NamedNode) { + return ( + [ + SyntaxType.True, + SyntaxType.False, + SyntaxType.NullLiteral, + SyntaxType.BinaryIntegerLiteral, + SyntaxType.DecimalFloatingPointLiteral, + SyntaxType.DecimalIntegerLiteral, + SyntaxType.HexFloatingPointLiteral, + SyntaxType.HexIntegerLiteral, + SyntaxType.OctalIntegerLiteral, + SyntaxType.CharacterLiteral + ].includes(node.type) || + (node.type === SyntaxType.StringLiteral && node.children[0].value === '"') + ); +} + +function isSingleWordType(node: NamedNode) { + return [SyntaxType.Identifier, SyntaxType.This, SyntaxType.Super].includes( + node.type + ); +} + function couldExpandArg(arg: NamedNode, lambdaChainRecursion = false) { if ( arg.type === SyntaxType.ArrayCreationExpression && diff --git a/test/unit-test/member_chain/_input.java b/test/unit-test/member_chain/_input.java index ff3c7116..5f076d31 100644 --- a/test/unit-test/member_chain/_input.java +++ b/test/unit-test/member_chain/_input.java @@ -199,4 +199,15 @@ void prettierIgnore() { .c().d() .e().f(); } + + void complexArguments() { + "SOME TEXT" + .replace("SOME", "OTHER") + .replace("TEXT", "OTHER") + .replace( + "SOME", + """ + FOO""" + ); + } } diff --git a/test/unit-test/member_chain/_output.java b/test/unit-test/member_chain/_output.java index 0ac4314a..96b1b5b3 100644 --- a/test/unit-test/member_chain/_output.java +++ b/test/unit-test/member_chain/_output.java @@ -254,4 +254,15 @@ void prettierIgnore() { .c().d() .e().f(); } + + void complexArguments() { + "SOME TEXT" + .replace("SOME", "OTHER") + .replace("TEXT", "OTHER") + .replace( + "SOME", + """ + FOO""" + ); + } }