From 18f2ed97823817cd2df8c2ebd752bb09260d3dd9 Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Mon, 14 Jul 2025 11:34:12 -0400 Subject: [PATCH] AsyncToSyncMethodTransformer: handle array types Ref: https://github.com/Brightspace/D2L.CodeStyle/pull/967 --- .../Async/Generator/AsyncToSyncMethodTransformer.cs | 4 ++++ .../Async/Generator/AsyncToSyncMethodTransformerTests.cs | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs b/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs index d77b904d..a682b6f0 100644 --- a/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs +++ b/src/D2L.CodeStyle.Analyzers/Async/Generator/AsyncToSyncMethodTransformer.cs @@ -111,6 +111,10 @@ private TypeSyntax TransformType( TypeSyntax typeSynt, bool isReturnType = false return typeSynt; } + if( returnTypeInfo.Type is IArrayTypeSymbol ) { + return typeSynt; + } + if( returnTypeInfo.Type.ContainingNamespace.ToString() == "System.Threading.Tasks" ) { switch( returnTypeInfo.Type.MetadataName ) { case "Task": diff --git a/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs b/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs index 067f4150..f3434cb3 100644 --- a/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs +++ b/tests/D2L.CodeStyle.Analyzers.Test/Async/Generator/AsyncToSyncMethodTransformerTests.cs @@ -84,6 +84,15 @@ public void VariableDeclaration() { Assert.AreEqual( "[Blocking] void Bar() { IBaz q = m_bazValidator.Validate( bar ); }", actual.Value.ToFullString() ); } + [Test] + public void ArrayVariableDeclaration() { + var actual = Transform( @"[GenerateSync] async Task BarAsync() { IBaz[] q = await m_bazValidator.ValidateAsync( bar ); }" ); + + Assert.IsTrue( actual.Success ); + Assert.IsEmpty( actual.Diagnostics ); + Assert.AreEqual( "[Blocking] void Bar() { IBaz[] q = m_bazValidator.Validate( bar ); }", actual.Value.ToFullString() ); + } + [Test] public void PredefinedType() { var actual = Transform( @"[GenerateSync] async Task BarAsync() { string.IsNullOrEmpty(""""); }" );