From b675553b6ea7422a9ac1b4b129207e71206e8319 Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Sun, 30 Mar 2025 12:43:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AE=D0=BD=D0=B8=D1=82=D0=B8=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=D0=B3=D0=B5=D0=BD=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mROA.Codegen/TestClass.cstmpl | 12 ++++++++++++ mROA.Codegen/mROA.Codegen.csproj | 1 + mROA.Codegen/mROASourceGenerator.cs | 17 +++++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 mROA.Codegen/TestClass.cstmpl diff --git a/mROA.Codegen/TestClass.cstmpl b/mROA.Codegen/TestClass.cstmpl new file mode 100644 index 0000000..f97d16c --- /dev/null +++ b/mROA.Codegen/TestClass.cstmpl @@ -0,0 +1,12 @@ +// + +namespace RPCTest.Implementation +{ + public sealed class GenerativeParametersTestClass + { + public int Increment() + { + return i + 1; + } + } +} \ No newline at end of file diff --git a/mROA.Codegen/mROA.Codegen.csproj b/mROA.Codegen/mROA.Codegen.csproj index 765f637..6ff4ac6 100644 --- a/mROA.Codegen/mROA.Codegen.csproj +++ b/mROA.Codegen/mROA.Codegen.csproj @@ -37,6 +37,7 @@ + diff --git a/mROA.Codegen/mROASourceGenerator.cs b/mROA.Codegen/mROASourceGenerator.cs index 1540a08..de1d443 100644 --- a/mROA.Codegen/mROASourceGenerator.cs +++ b/mROA.Codegen/mROASourceGenerator.cs @@ -22,7 +22,7 @@ namespace mROA.Codegen /// performance overhead. /// [Generator] - public class MRoaSourceGenerator : ISourceGenerator + public class mROAGenerator : ISourceGenerator { private static readonly Predicate ParameterFilter = i => i.Type.Name is "CancellationToken" or "RequestContext"; @@ -136,7 +136,7 @@ namespace mROA.Codegen string impl; if (propertySymbol.IsIndexer) impl = - $"public {propertySymbol.Type.ToUnityString()} this[{string.Join(", ", propertySymbol.Parameters.Select(p => p.ToDisplayString()))}] {{ {getter.Item1} {setter.Item1} }}"; + $"public {propertySymbol.Type.ToUnityString()} this[{string.Join(", ", propertySymbol.Parameters.Select(p => p.ToUnityString()))}] {{ {getter.Item1} {setter.Item1} }}"; else impl = $"public {propertySymbol.Type.ToUnityString()} {symbol.Name} {{ {getter.Item1} {setter.Item1} }}"; @@ -173,6 +173,10 @@ namespace mROA.Codegen { var coCodegenRepoCode = _methodRepoTemplate.Compile(); #if !DONT_ADD + var template = TemplateReader.FromEmbeddedResource("TestClass.cstmpl"); + template.AddDefine("param", "System.Int32 i"); + + context.AddSource("TestClass.g.cs", SourceText.From(template.Compile(), Encoding.UTF8)); context.AddSource("CoCodegenMethodRepository.g.cs", SourceText.From(coCodegenRepoCode, Encoding.UTF8)); #endif } @@ -558,9 +562,9 @@ namespace mROA.Codegen private static string ToFullString(IParameterSymbol parameter) { - return parameter.ToDisplayParts().ToUnityString(); + return parameter.Type.ToUnityString() + " " + parameter.Name; } - + private static string ToFullString(ITypeSymbol type) { return type.ToUnityString(); @@ -613,6 +617,11 @@ namespace mROA.Codegen return type.ToDisplayString(); } + public static string ToUnityString(this IParameterSymbol parameter) + { + return parameter.Type.ToUnityString() + " " + parameter.Name; + } + public static string ToUnityString(this ImmutableArray parts) { var sb = new StringBuilder();