diff --git a/Generate-ReleaseNotes.bat b/Generate-ReleaseNotes.bat index cb1804a..e3881de 100644 --- a/Generate-ReleaseNotes.bat +++ b/Generate-ReleaseNotes.bat @@ -1,6 +1,6 @@ rem https://github.com/StefH/GitHubReleaseNotes -SET version=0.0.30 +SET version=0.0.31 GitHubReleaseNotes --output "ReleaseNotes.md" --skip-empty-releases --exclude-labels question invalid doc --version %version% diff --git a/src/ProxyInterfaceSourceGenerator/Builders/MethodParameterBuilder.cs b/src/ProxyInterfaceSourceGenerator/Builders/MethodParameterBuilder.cs index e7cec8a..b3871c3 100644 --- a/src/ProxyInterfaceSourceGenerator/Builders/MethodParameterBuilder.cs +++ b/src/ProxyInterfaceSourceGenerator/Builders/MethodParameterBuilder.cs @@ -9,7 +9,7 @@ internal static class MethodParameterBuilder public static string Build(IParameterSymbol parameterSymbol, string? type) { var stringBuilder = new StringBuilder(); - if (type is { }) + if (type is not null) { stringBuilder.Append(parameterSymbol.GetAttributesPrefix()); // "" or [NotNullWhen(true)] stringBuilder.Append(parameterSymbol.GetParamsPrefix()); // "" or "params " diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/BaseGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/BaseGenerator.cs index 24957f5..c7c8aa4 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/BaseGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/BaseGenerator.cs @@ -11,6 +11,8 @@ namespace ProxyInterfaceSourceGenerator.FileGenerators; internal abstract class BaseGenerator { + private const string Star = "*"; + protected readonly Context Context; protected readonly bool SupportsNullable; @@ -150,7 +152,7 @@ internal abstract class BaseGenerator } isReplaced = true; - return existing.FullInterfaceName; + return FixType(existing.FullInterfaceName); } ITypeSymbol[] typeArguments; @@ -164,7 +166,7 @@ internal abstract class BaseGenerator } else { - return typeSymbolAsString; + return FixType(typeSymbolAsString); } var propertyTypeAsStringToBeModified = typeSymbolAsString; @@ -185,7 +187,7 @@ internal abstract class BaseGenerator } } - return propertyTypeAsStringToBeModified; + return FixType(propertyTypeAsStringToBeModified); } protected bool TryGetNamedTypeSymbolByFullName(TypeKind kind, string name, IEnumerable usings, [NotNullWhen(true)] out ClassSymbol? classSymbol) @@ -258,4 +260,13 @@ internal abstract class BaseGenerator } return extendsProxyClasses; } + + /// + /// Issue 54 + /// double[*,*] --> double[,] + /// + protected static string FixType(string type) + { + return type.Replace(Star, string.Empty); + } } \ No newline at end of file diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs index 176a28e..9ecfa8b 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs @@ -235,6 +235,7 @@ using System; str.AppendLine(" {"); foreach (var ps in method.Parameters) { + var type = FixType(ps.Type.ToString()); string normalOrMap = $" = {ps.GetSanitizedName()}"; if (ps.RefKind == RefKind.Out) { @@ -245,11 +246,11 @@ using System; _ = GetParameterType(ps, out var isReplaced); // TODO : response is not used? if (isReplaced) { - normalOrMap = $" = Mapster.TypeAdapter.Adapt<{ps.Type}>({ps.GetSanitizedName()})"; + normalOrMap = $" = Mapster.TypeAdapter.Adapt<{type}>({ps.GetSanitizedName()})"; } } - str.AppendLine($" {ps.Type} {ps.GetSanitizedName()}_{normalOrMap};"); + str.AppendLine($" {type} {ps.GetSanitizedName()}_{normalOrMap};"); } var methodName = method.GetMethodNameWithOptionalTypeParameters(); diff --git a/src/ProxyInterfaceSourceGenerator/ProxyInterfaceSourceGenerator.csproj b/src/ProxyInterfaceSourceGenerator/ProxyInterfaceSourceGenerator.csproj index 66f3306..c88d5f1 100644 --- a/src/ProxyInterfaceSourceGenerator/ProxyInterfaceSourceGenerator.csproj +++ b/src/ProxyInterfaceSourceGenerator/ProxyInterfaceSourceGenerator.csproj @@ -1,7 +1,7 @@ - 0.0.30 + 0.0.31 netstandard2.0 {12344228-91F4-4502-9595-39584E5ABB34} 10 diff --git a/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.IPerson.g.cs b/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.IPerson.g.cs index 7821db8..a2b49a4 100644 --- a/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.IPerson.g.cs +++ b/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.IPerson.g.cs @@ -54,6 +54,8 @@ namespace ProxyInterfaceSourceGeneratorTests.Source void In_Out_Ref1(in int a, out int b, ref int c); + double[,] Out_MultiDimensionIssue54(out double[,] x); + bool Generic2(int x, T1 t1, T2 t2) where T1 : struct where T2 : class, new(); System.Threading.Tasks.Task Method1Async(); diff --git a/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.PersonProxy.g.cs b/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.PersonProxy.g.cs index 3f8357e..094cd9b 100644 --- a/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.PersonProxy.g.cs +++ b/tests/ProxyInterfaceSourceGeneratorTests/Destination/ProxyInterfaceSourceGeneratorTests.Source.PersonProxy.g.cs @@ -110,6 +110,14 @@ namespace ProxyInterfaceSourceGeneratorTests.Source b = b_; } + public double[,] Out_MultiDimensionIssue54(out double[,] x) + { + double[,] x_; + var result_692039870 = _Instance.Out_MultiDimensionIssue54(out x_); + x = x_; + return result_692039870; + } + public bool Generic2(int x, T1 t1, T2 t2) where T1 : struct where T2 : class, new() { int x_ = x; diff --git a/tests/ProxyInterfaceSourceGeneratorTests/Source/Person.cs b/tests/ProxyInterfaceSourceGeneratorTests/Source/Person.cs index 6123cf6..8d9a138 100644 --- a/tests/ProxyInterfaceSourceGeneratorTests/Source/Person.cs +++ b/tests/ProxyInterfaceSourceGeneratorTests/Source/Person.cs @@ -85,6 +85,12 @@ namespace ProxyInterfaceSourceGeneratorTests.Source b = 1; } + public double[,] Out_MultiDimensionIssue54(out double[,] x) + { + x = new double[0, 0]; + return x; + } + public bool Generic2(int x, T1 t1, T2 t2) where T1 : struct where T2 : class, new()