From 966c11f56c8057cad430c7347a9a80b9f60b4595 Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Tue, 10 Jan 2023 13:33:02 +0300 Subject: [PATCH 1/6] TODO more testing --- .../Writers/CSharp/CSharpConventionService.cs | 2 +- .../Writers/CSharp/CodeMethodWriter.cs | 43 +++++++++++++++++-- .../Writers/CSharp/CodePropertyWriter.cs | 28 +++++++++--- 3 files changed, 63 insertions(+), 10 deletions(-) diff --git a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs index 5d3a134fd7..6632e9e8fe 100644 --- a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs +++ b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs @@ -57,7 +57,7 @@ internal void AddParametersAssignment(LanguageWriter writer, CodeTypeBase pathPa ).ToArray()); } #pragma warning restore CA1822 // Method should be static - internal bool ShouldTypeHaveNullableMarker(CodeTypeBase propType, string propTypeName) { + private static bool ShouldTypeHaveNullableMarker(CodeTypeBase propType, string propTypeName) { return propType.IsNullable && (NullableTypes.Contains(propTypeName) || (propType is CodeType codeType && codeType.TypeDefinition is CodeEnum)); } private static HashSet _namespaceSegmentsNames; diff --git a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs index 37059d93d3..84665240af 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs @@ -450,7 +450,20 @@ private void WriteSerializerBodyForInheritedModel(bool shouldHide, CodeMethod me .Where(static x => !x.ExistsInBaseType && !x.ReadOnly) .OrderBy(static x => x.Name)) { - writer.WriteLine($"writer.{GetSerializationMethodName(otherProp.Type, method)}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); + var serializationMethodName = GetSerializationMethodName(otherProp.Type, method); + var isNullableReferenceType = !conventions.GetTypeString(otherProp.Type, otherProp).EndsWith("?") && serializationMethodName.Contains("WriteObject", StringComparison.OrdinalIgnoreCase); + if (isNullableReferenceType) + { + writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); + writer.WriteLine($"writer.{GetSerializationMethodName(otherProp.Type, method,true)}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); + writer.WriteLine("#else",false); + } + + writer.WriteLine($"writer.{serializationMethodName}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); + + if (isNullableReferenceType) + writer.WriteLine("#endif",false); + } } private void WriteSerializerBodyForUnionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer) @@ -554,9 +567,33 @@ private void WriteMethodPrototype(CodeMethod code, LanguageWriter writer, string baseSuffix = " : base()"; var parameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer).Select(p => conventions.GetParameterSignature(p, code)).ToList()); var methodName = isConstructor ? code.Parent.Name.ToFirstCharacterUpperCase() : code.Name.ToFirstCharacterUpperCase(); + var includeNullableReferenceType = code.Parameters.Any( codeParameter => codeParameter.IsOfKind(CodeParameterKind.RequestConfiguration)); + if (includeNullableReferenceType) + { + parameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer) + .Select(p => p.IsOfKind(CodeParameterKind.RequestConfiguration) ? + GetParameterSignatureWithNullableRefType(p,code): + conventions.GetParameterSignature(p, code)) + .ToList()); + writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); + writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({parameters}){baseSuffix} {{"); + writer.WriteLine("#else",false); + } + writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({parameters}){baseSuffix} {{"); + + if (includeNullableReferenceType) + writer.WriteLine("#endif",false); + + } + + private string GetParameterSignatureWithNullableRefType(CodeParameter parameter, CodeElement targetElement) + { + var signatureSegments = conventions.GetParameterSignature(parameter, targetElement).Split(" ", StringSplitOptions.RemoveEmptyEntries); + return $"{signatureSegments[0]}? {string.Join(" ",signatureSegments[1..])}"; + } - private string GetSerializationMethodName(CodeTypeBase propType, CodeMethod method) + private string GetSerializationMethodName(CodeTypeBase propType, CodeMethod method, bool includeNullableRef = false) { var isCollection = propType.CollectionKind != CodeTypeBase.CodeTypeCollectionKind.None; var propertyType = conventions.GetTypeString(propType, method, false); @@ -577,7 +614,7 @@ private string GetSerializationMethodName(CodeTypeBase propType, CodeMethod meth { "byte[]" => "WriteByteArrayValue", _ when conventions.IsPrimitiveType(propertyType) => $"Write{propertyType.TrimEnd(CSharpConventionService.NullableMarker).ToFirstCharacterUpperCase()}Value", - _ => $"WriteObjectValue<{propertyType.ToFirstCharacterUpperCase()}>", + _ => $"WriteObjectValue<{propertyType.ToFirstCharacterUpperCase()}{(includeNullableRef ? "?": string.Empty)}>", }; } } diff --git a/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs index 3666efa1f4..70936c5424 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs @@ -6,14 +6,31 @@ public class CodePropertyWriter : BaseElementWriter AccessModifier.Private ? "private " : string.Empty; var simpleBody = $"get; {setterAccessModifier}set;"; - var propertyType = conventions.GetTypeString(codeElement.Type, codeElement); var defaultValue = string.Empty; - conventions.WriteShortDescription(codeElement.Documentation.Description, writer); switch(codeElement.Kind) { case CodePropertyKind.RequestBuilder: writer.WriteLine($"{conventions.GetAccessModifier(codeElement.Access)} {propertyType} {codeElement.Name.ToFirstCharacterUpperCase()} {{ get =>"); @@ -21,7 +38,7 @@ public override void WriteCodeElement(CodeProperty codeElement, LanguageWriter w conventions.AddRequestBuilderBody(parentClass, propertyType, writer); writer.DecreaseIndent(); writer.WriteLine("}"); - break; + break; case CodePropertyKind.AdditionalData when backingStoreProperty != null: case CodePropertyKind.Custom when backingStoreProperty != null: var backingStoreKey = codeElement.SerializationName ?? codeElement.Name.ToFirstCharacterLowerCase(); @@ -31,7 +48,7 @@ public override void WriteCodeElement(CodeProperty codeElement, LanguageWriter w writer.WriteLine($"set {{ {backingStoreProperty.Name.ToFirstCharacterUpperCase()}?.Set(\"{backingStoreKey}\", value); }}"); writer.DecreaseIndent(); writer.WriteLine("}"); - break; + break; case CodePropertyKind.QueryParameter when codeElement.IsNameEscaped: writer.WriteLine($"[QueryParameter(\"{codeElement.SerializationName}\")]"); goto default; @@ -40,8 +57,7 @@ public override void WriteCodeElement(CodeProperty codeElement, LanguageWriter w goto default; default: writer.WriteLine($"{conventions.GetAccessModifier(codeElement.Access)} {propertyType} {codeElement.Name.ToFirstCharacterUpperCase()} {{ {simpleBody} }}{defaultValue}"); - break; + break; } } - } From 2bd50106d7e1390953910a7f5869ca2de44f3923 Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Tue, 10 Jan 2023 13:47:59 +0300 Subject: [PATCH 2/6] TODO more testing --- src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs index 84665240af..decf9a21c3 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs @@ -570,13 +570,13 @@ private void WriteMethodPrototype(CodeMethod code, LanguageWriter writer, string var includeNullableReferenceType = code.Parameters.Any( codeParameter => codeParameter.IsOfKind(CodeParameterKind.RequestConfiguration)); if (includeNullableReferenceType) { - parameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer) + var nullableParameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer) .Select(p => p.IsOfKind(CodeParameterKind.RequestConfiguration) ? GetParameterSignatureWithNullableRefType(p,code): conventions.GetParameterSignature(p, code)) .ToList()); writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); - writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({parameters}){baseSuffix} {{"); + writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({nullableParameters}){baseSuffix} {{"); writer.WriteLine("#else",false); } From 6282b1b9531729b25f928e93bbba7b4e6c58787d Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Tue, 10 Jan 2023 16:45:25 +0300 Subject: [PATCH 3/6] Fixes broken tests --- .../Writers/CSharp/CSharpConventionService.cs | 3 ++- .../Writers/CSharp/CodeMethodWriter.cs | 4 ++-- .../Writers/CSharp/CodePropertyWriter.cs | 2 +- .../Writers/CSharp/CodeMethodWriterTests.cs | 14 +++++++------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs index 6632e9e8fe..0ca857f76d 100644 --- a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs +++ b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs @@ -13,7 +13,8 @@ public class CSharpConventionService : CommonLanguageConventionService { public override string VoidTypeName => "void"; public override string DocCommentPrefix => "/// "; private static readonly HashSet NullableTypes = new(StringComparer.OrdinalIgnoreCase) { "int", "bool", "float", "double", "decimal", "long", "Guid", "DateTimeOffset", "TimeSpan", "Date","Time", "sbyte", "byte" }; - public static readonly char NullableMarker = '?'; + public const char NullableMarker = '?'; + public const string NullableEnableDirective = "NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER"; public static string NullableMarkerAsString => "?"; public override string ParseNodeInterfaceName => "IParseNode"; public override void WriteShortDescription(string description, LanguageWriter writer) { diff --git a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs index decf9a21c3..c6e23b1f52 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs @@ -454,7 +454,7 @@ private void WriteSerializerBodyForInheritedModel(bool shouldHide, CodeMethod me var isNullableReferenceType = !conventions.GetTypeString(otherProp.Type, otherProp).EndsWith("?") && serializationMethodName.Contains("WriteObject", StringComparison.OrdinalIgnoreCase); if (isNullableReferenceType) { - writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); + writer.WriteLine($"#if {CSharpConventionService.NullableEnableDirective}",false); writer.WriteLine($"writer.{GetSerializationMethodName(otherProp.Type, method,true)}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); writer.WriteLine("#else",false); } @@ -575,7 +575,7 @@ private void WriteMethodPrototype(CodeMethod code, LanguageWriter writer, string GetParameterSignatureWithNullableRefType(p,code): conventions.GetParameterSignature(p, code)) .ToList()); - writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); + writer.WriteLine($"#if {CSharpConventionService.NullableEnableDirective}",false); writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({nullableParameters}){baseSuffix} {{"); writer.WriteLine("#else",false); } diff --git a/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs index 70936c5424..e8c3723e88 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodePropertyWriter.cs @@ -13,7 +13,7 @@ public override void WriteCodeElement(CodeProperty codeElement, LanguageWriter w conventions.WriteShortDescription(codeElement.Documentation.Description, writer); if (isNullableReferenceType) { - writer.WriteLine("#if NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER",false); + writer.WriteLine($"#if {CSharpConventionService.NullableEnableDirective}",false); WritePropertyInternal(codeElement, writer, $"{propertyType}?"); writer.WriteLine("#else",false); } diff --git a/tests/Kiota.Builder.Tests/Writers/CSharp/CodeMethodWriterTests.cs b/tests/Kiota.Builder.Tests/Writers/CSharp/CodeMethodWriterTests.cs index 6948d03985..9c3e19a2de 100644 --- a/tests/Kiota.Builder.Tests/Writers/CSharp/CodeMethodWriterTests.cs +++ b/tests/Kiota.Builder.Tests/Writers/CSharp/CodeMethodWriterTests.cs @@ -380,7 +380,7 @@ public void WritesRequestExecutorBody() { Assert.Contains(AsyncKeyword, result); Assert.Contains("await", result); Assert.Contains("cancellationToken", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesRequestExecutorBodyForCollection() { @@ -402,7 +402,7 @@ public void WritesRequestExecutorBodyForCollection() { Assert.Contains("SendCollectionAsync", result); Assert.Contains("return collectionResult.ToList()", result); Assert.Contains($"{ReturnTypeName}.CreateFromDiscriminatorValue", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void DoesntCreateDictionaryOnEmptyErrorMapping() { @@ -413,7 +413,7 @@ public void DoesntCreateDictionaryOnEmptyErrorMapping() { var result = tw.ToString(); Assert.DoesNotContain("var errorMapping = new Dictionary>", result); Assert.Contains("default", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesModelFactoryBodyForUnionModels() { @@ -647,7 +647,7 @@ public void WritesRequestExecutorBodyForCollections() { var result = tw.ToString(); Assert.Contains("SendCollectionAsync", result); Assert.Contains("cancellationToken", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesRequestGeneratorBodyForScalar() { @@ -671,7 +671,7 @@ public void WritesRequestGeneratorBodyForScalar() { Assert.Contains("requestInfo.AddRequestOptions(requestConfig.O)", result); Assert.Contains("SetContentFromScalar", result); Assert.Contains("return requestInfo;", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesRequestGeneratorBodyForParsable() { @@ -695,7 +695,7 @@ public void WritesRequestGeneratorBodyForParsable() { Assert.Contains("requestInfo.AddRequestOptions(requestConfig.O)", result); Assert.Contains("SetContentFromParsable", result); Assert.Contains("return requestInfo;", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesRequestGeneratorBodyForScalarCollection() { @@ -711,7 +711,7 @@ public void WritesRequestGeneratorBodyForScalarCollection() { writer.Write(method); var result = tw.ToString(); Assert.Contains("SetContentFromScalarCollection", result); - AssertExtensions.CurlyBracesAreClosed(result); + AssertExtensions.CurlyBracesAreClosed(result,1); } [Fact] public void WritesInheritedDeSerializerBody() { From 3e590bb0b391c929188897ee27203e05fe98583d Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Thu, 12 Jan 2023 17:17:20 +0300 Subject: [PATCH 4/6] Drops unnecessary generation. TODO more testing --- CHANGELOG.md | 2 ++ .../Writers/CSharp/CodeMethodWriter.cs | 16 ++-------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bd347089c..af8b5ee976 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Adds support for nullable reference types in dotnet for projects running Netstandard 2.1/Net 6.0 and above []() + ### Changed - Fixed a bug in ruby where file names or paths could be too long to be packaged. diff --git a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs index c6e23b1f52..d509396823 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs @@ -451,19 +451,7 @@ private void WriteSerializerBodyForInheritedModel(bool shouldHide, CodeMethod me .OrderBy(static x => x.Name)) { var serializationMethodName = GetSerializationMethodName(otherProp.Type, method); - var isNullableReferenceType = !conventions.GetTypeString(otherProp.Type, otherProp).EndsWith("?") && serializationMethodName.Contains("WriteObject", StringComparison.OrdinalIgnoreCase); - if (isNullableReferenceType) - { - writer.WriteLine($"#if {CSharpConventionService.NullableEnableDirective}",false); - writer.WriteLine($"writer.{GetSerializationMethodName(otherProp.Type, method,true)}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); - writer.WriteLine("#else",false); - } - writer.WriteLine($"writer.{serializationMethodName}(\"{otherProp.SerializationName ?? otherProp.Name}\", {otherProp.Name.ToFirstCharacterUpperCase()});"); - - if (isNullableReferenceType) - writer.WriteLine("#endif",false); - } } private void WriteSerializerBodyForUnionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer) @@ -570,13 +558,14 @@ private void WriteMethodPrototype(CodeMethod code, LanguageWriter writer, string var includeNullableReferenceType = code.Parameters.Any( codeParameter => codeParameter.IsOfKind(CodeParameterKind.RequestConfiguration)); if (includeNullableReferenceType) { + var completeReturnTypeWithNullable = string.IsNullOrEmpty(genericTypeSuffix) ? completeReturnType : $"{completeReturnType[..^2]}?{genericTypeSuffix} "; var nullableParameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer) .Select(p => p.IsOfKind(CodeParameterKind.RequestConfiguration) ? GetParameterSignatureWithNullableRefType(p,code): conventions.GetParameterSignature(p, code)) .ToList()); writer.WriteLine($"#if {CSharpConventionService.NullableEnableDirective}",false); - writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnType}{methodName}({nullableParameters}){baseSuffix} {{"); + writer.WriteLine($"{conventions.GetAccessModifier(code.Access)} {staticModifier}{hideModifier}{completeReturnTypeWithNullable}{methodName}({nullableParameters}){baseSuffix} {{"); writer.WriteLine("#else",false); } @@ -591,7 +580,6 @@ private string GetParameterSignatureWithNullableRefType(CodeParameter parameter, { var signatureSegments = conventions.GetParameterSignature(parameter, targetElement).Split(" ", StringSplitOptions.RemoveEmptyEntries); return $"{signatureSegments[0]}? {string.Join(" ",signatureSegments[1..])}"; - } private string GetSerializationMethodName(CodeTypeBase propType, CodeMethod method, bool includeNullableRef = false) { From bbcdda2786a74477f8f9cb0790f991affccdc9f8 Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Thu, 12 Jan 2023 17:20:40 +0300 Subject: [PATCH 5/6] Rename flag --- src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs index 0ca857f76d..ce8cf6798d 100644 --- a/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs +++ b/src/Kiota.Builder/Writers/CSharp/CSharpConventionService.cs @@ -14,7 +14,7 @@ public class CSharpConventionService : CommonLanguageConventionService { public override string DocCommentPrefix => "/// "; private static readonly HashSet NullableTypes = new(StringComparer.OrdinalIgnoreCase) { "int", "bool", "float", "double", "decimal", "long", "Guid", "DateTimeOffset", "TimeSpan", "Date","Time", "sbyte", "byte" }; public const char NullableMarker = '?'; - public const string NullableEnableDirective = "NETSTANDARD2_1_OR_GREATER || NET6_0_OR_GREATER"; + public const string NullableEnableDirective = "NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER"; public static string NullableMarkerAsString => "?"; public override string ParseNodeInterfaceName => "IParseNode"; public override void WriteShortDescription(string description, LanguageWriter writer) { From cf23db6eb34e98c17f30f37cf45d8d9ecb93ff4c Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 16 Jan 2023 09:21:12 -0500 Subject: [PATCH 6/6] Apply suggestions from code review --- src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs index d509396823..054d181827 100644 --- a/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs +++ b/src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs @@ -555,11 +555,11 @@ private void WriteMethodPrototype(CodeMethod code, LanguageWriter writer, string baseSuffix = " : base()"; var parameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer).Select(p => conventions.GetParameterSignature(p, code)).ToList()); var methodName = isConstructor ? code.Parent.Name.ToFirstCharacterUpperCase() : code.Name.ToFirstCharacterUpperCase(); - var includeNullableReferenceType = code.Parameters.Any( codeParameter => codeParameter.IsOfKind(CodeParameterKind.RequestConfiguration)); + var includeNullableReferenceType = code.Parameters.Any(static codeParameter => codeParameter.IsOfKind(CodeParameterKind.RequestConfiguration)); if (includeNullableReferenceType) { var completeReturnTypeWithNullable = string.IsNullOrEmpty(genericTypeSuffix) ? completeReturnType : $"{completeReturnType[..^2]}?{genericTypeSuffix} "; - var nullableParameters = string.Join(", ", code.Parameters.OrderBy(x => x, parameterOrderComparer) + var nullableParameters = string.Join(", ", code.Parameters.OrderBy(static x => x, parameterOrderComparer) .Select(p => p.IsOfKind(CodeParameterKind.RequestConfiguration) ? GetParameterSignatureWithNullableRefType(p,code): conventions.GetParameterSignature(p, code))