From 47b0568a89065885588e6f038196de109a5f518f Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Sun, 28 Jun 2026 12:45:39 -0400 Subject: [PATCH] fix: treat class literals as simple arguments, like field access --- src/printers/expressions.ts | 11 +++++++++-- test/unit-test/member_chain/_input.java | 6 ++++++ test/unit-test/member_chain/_output.java | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/printers/expressions.ts b/src/printers/expressions.ts index d599daca..e85c3d4a 100644 --- a/src/printers/expressions.ts +++ b/src/printers/expressions.ts @@ -1356,7 +1356,11 @@ function isSimpleCallArgument(node: NamedNode, depth = 2): boolean { const isChildSimple = (child: NamedNode) => isSimpleCallArgument(child, depth - 1); - if (isLiteral(node) || isSingleWordType(node)) { + if ( + isLiteral(node) || + isSingleWordType(node) || + node.type === SyntaxType.ClassLiteral + ) { return true; } @@ -1389,9 +1393,12 @@ function isSimpleCallArgument(node: NamedNode, depth = 2): boolean { ); } + if (node.type === SyntaxType.UnaryExpression) { + return isSimpleCallArgument(node.operandNode, depth); + } + if ( node.type === SyntaxType.MethodReference || - node.type === SyntaxType.UnaryExpression || node.type === SyntaxType.UpdateExpression ) { return isSimpleCallArgument(node.namedChildren[0], depth); diff --git a/test/unit-test/member_chain/_input.java b/test/unit-test/member_chain/_input.java index 5ee97241..a6dc9ce4 100644 --- a/test/unit-test/member_chain/_input.java +++ b/test/unit-test/member_chain/_input.java @@ -148,6 +148,12 @@ void methodReferences() { dtoEntities.stream().map(UserDto::toString).forEach(LOGGER::info); } + void classLiteralArgument() { + a() + .b(C.class) + .d(); + } + void argumentComment() { a( // comment diff --git a/test/unit-test/member_chain/_output.java b/test/unit-test/member_chain/_output.java index 78a37510..d598663b 100644 --- a/test/unit-test/member_chain/_output.java +++ b/test/unit-test/member_chain/_output.java @@ -203,6 +203,10 @@ void methodReferences() { dtoEntities.stream().map(UserDto::toString).forEach(LOGGER::info); } + void classLiteralArgument() { + a().b(C.class).d(); + } + void argumentComment() { a( // comment