From 23f0485d749ee70996072060af0be4f097fea90c Mon Sep 17 00:00:00 2001 From: Stef Heyenrath Date: Mon, 26 Jul 2021 18:22:28 +0200 Subject: [PATCH] Fix 'params' (#16) --- src-examples/ProxyInterfaceConsumer/Person.cs | 8 ++++++++ .../Extensions/SymbolExtensions.cs | 5 +++++ .../FileGenerators/PartialInterfacesGenerator.cs | 11 ++--------- .../FileGenerators/ProxyClassesGenerator.cs | 4 ++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src-examples/ProxyInterfaceConsumer/Person.cs b/src-examples/ProxyInterfaceConsumer/Person.cs index 889ee54..ea91128 100644 --- a/src-examples/ProxyInterfaceConsumer/Person.cs +++ b/src-examples/ProxyInterfaceConsumer/Person.cs @@ -30,6 +30,10 @@ namespace ProxyInterfaceConsumer return 600; } + public void AddWithParams(params string[] values) + { + } + public Address AddAddress(Address a) { AddressesDict.Add($"{AddressesDict.Count}", a); @@ -37,6 +41,10 @@ namespace ProxyInterfaceConsumer return a; } + public void AddAddresses(params Address[] addresses) + { + } + public void Void() { } diff --git a/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs b/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs index cf6be4d..a8d376e 100644 --- a/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs +++ b/src/ProxyInterfaceSourceGenerator/Extensions/SymbolExtensions.cs @@ -5,6 +5,11 @@ namespace ProxyInterfaceSourceGenerator.Extensions { internal static class SymbolExtensions { + public static string GetParamsPrefix(this IParameterSymbol ps) + { + return ps.IsParams ? "params " : string.Empty; + } + public static TypeEnum GetTypeEnum(this IPropertySymbol p) { return GetTypeEnum(p.Type); diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs index 3df685f..9e88a8b 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/PartialInterfacesGenerator.cs @@ -88,15 +88,8 @@ namespace {ns} var methodParameters = new List(); foreach (var ps in method.Parameters) { - if (ps.GetTypeEnum() == TypeEnum.Complex) - { - var type = GetParameterType(ps, out _); - methodParameters.Add($"{type} {ps.Name}"); - } - else - { - methodParameters.Add($"{ps.Type} {ps.Name}"); - } + var type = ps.GetTypeEnum() == TypeEnum.Complex ? GetParameterType(ps, out _) : ps.Type.ToString(); + methodParameters.Add($"{ps.GetParamsPrefix()}{type} {ps.Name}"); } str.AppendLine($" {GetReplacedType(method.ReturnType, out _)} {method.Name}({string.Join(", ", methodParameters)});"); diff --git a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs index 7b16710..dfbd30f 100644 --- a/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs +++ b/src/ProxyInterfaceSourceGenerator/FileGenerators/ProxyClassesGenerator.cs @@ -130,7 +130,7 @@ namespace {ns} if (ps.GetTypeEnum() == TypeEnum.Complex) { var type = GetParameterType(ps, out var isReplaced); - methodParameters.Add($"{type} {ps.Name}"); + methodParameters.Add($"{ps.GetParamsPrefix()}{type} {ps.Name}"); if (isReplaced) { @@ -143,7 +143,7 @@ namespace {ns} } else { - methodParameters.Add($"{ps.Type} {ps.Name}"); + methodParameters.Add($"{ps.GetParamsPrefix()}{ps.Type} {ps.Name}"); invokeParameters.Add($"{ps.Name}"); }