From aa49b9035c89eeeda86345971b159b24b5f38b82 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Mon, 6 Oct 2025 18:56:23 +0200 Subject: [PATCH] Tag the constructor arguments in new-anonymous-class calls as named arguments. --- src/dfmt/ast_info.d | 6 ++++++ tests/allman/issue0586.d.ref | 4 ++++ tests/issue0586.d | 5 +++++ tests/knr/issue0586.d.ref | 3 +++ tests/otbs/issue0586.d.ref | 3 +++ 5 files changed, 21 insertions(+) diff --git a/src/dfmt/ast_info.d b/src/dfmt/ast_info.d index 7101471..02606aa 100644 --- a/src/dfmt/ast_info.d +++ b/src/dfmt/ast_info.d @@ -464,6 +464,12 @@ final class FormatVisitor : ASTVisitor newCall.accept(this); } + override void visit(const NewAnonClassExpression newAnonClassCall) + { + visit(newAnonClassCall.constructorArguments); + newAnonClassCall.accept(this); + } + private void visit(const Arguments arguments) { // Check if call has any arguments. diff --git a/tests/allman/issue0586.d.ref b/tests/allman/issue0586.d.ref index 1a33a3d..2ce03d8 100644 --- a/tests/allman/issue0586.d.ref +++ b/tests/allman/issue0586.d.ref @@ -31,4 +31,8 @@ void test() { return Struct(foo: field.foo, bar: field.bar, baz: field.baz); return new Class(foo: field.foo, bar: field.bar, baz: field.baz); + // anonymous class + return new class(foo: field.foo, bar: field.bar, baz: field.baz) Class + { + }; } diff --git a/tests/issue0586.d b/tests/issue0586.d index 3d8d32a..c7784dc 100644 --- a/tests/issue0586.d +++ b/tests/issue0586.d @@ -39,4 +39,9 @@ void test() { foo: field.foo, bar: field.bar, baz: field.baz); + // anonymous class + return new class( + foo: field.foo, + bar: field.bar, + baz: field.baz) Class { }; } diff --git a/tests/knr/issue0586.d.ref b/tests/knr/issue0586.d.ref index 2a6a6a3..f869769 100644 --- a/tests/knr/issue0586.d.ref +++ b/tests/knr/issue0586.d.ref @@ -30,4 +30,7 @@ void test() { return Struct(foo: field.foo, bar: field.bar, baz: field.baz); return new Class(foo: field.foo, bar: field.bar, baz: field.baz); + // anonymous class + return new class(foo: field.foo, bar: field.bar, baz: field.baz) Class { + }; } diff --git a/tests/otbs/issue0586.d.ref b/tests/otbs/issue0586.d.ref index d6ab363..056a6e6 100644 --- a/tests/otbs/issue0586.d.ref +++ b/tests/otbs/issue0586.d.ref @@ -26,4 +26,7 @@ void main() { void test() { return Struct(foo: field.foo, bar: field.bar, baz: field.baz); return new Class(foo: field.foo, bar: field.bar, baz: field.baz); + // anonymous class + return new class(foo: field.foo, bar: field.bar, baz: field.baz) Class { + }; }