From 2225e96bc30c3da758f7d3a9f3df772042893a04 Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Mon, 14 Sep 2026 13:19:20 -0400 Subject: [PATCH] SyncGenerator: support ImplicitArrayCreation --- .../Async/Generator/AsyncToSyncMethodTransformer.cs | 3 +++ .../Async/Generator/AsyncToSyncMethodTransformerTests.cs | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs b/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs index a682b6f0..d8523201 100644 --- a/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs +++ b/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs @@ -279,6 +279,9 @@ private ExpressionSyntax Transform( ExpressionSyntax expr ) IdentifierNameSyntax identExpr => identExpr .WithIdentifier( RemoveAsyncSuffix( identExpr.Identifier, optional: true ) ), + ImplicitArrayCreationExpressionSyntax implicitArrayCreationExpr => implicitArrayCreationExpr + .WithInitializer( Transform( implicitArrayCreationExpr.Initializer ) ), + ImplicitObjectCreationExpressionSyntax implicitObjectCreationExpr => implicitObjectCreationExpr .WithArgumentList( Transform( implicitObjectCreationExpr.ArgumentList ) ) .WithInitializer( MaybeTransform( implicitObjectCreationExpr.Initializer, Transform ) ), diff --git a/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs b/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs index f3434cb3..147d4481 100644 --- a/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs +++ b/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs @@ -633,6 +633,15 @@ public void TaskToVoidReturnTypeNewObject() { ); } + [Test] + public void ImplicitArrayCreationCreation() { + var actual = Transform( @"[GenerateSync] async Task HelloAsync() { return new[] { await FooAsync(), Bar() }; }" ); + + Assert.IsTrue( actual.Success ); + Assert.IsEmpty( actual.Diagnostics ); + Assert.AreEqual( "[Blocking] T Hello() { return new[] { Foo(),Bar() }; }", actual.Value.ToFullString() ); + } + [Test] public void ImplicitObjectCreation() { var actual = Transform( @"[GenerateSync] async Task HelloAsync() { return new( await FooAsync() ); }" );