From 1d7ca569164b53d4f20718a84afc160018a01abd Mon Sep 17 00:00:00 2001 From: Mohammadreza Taikandi Date: Mon, 8 Feb 2021 07:24:10 +0000 Subject: [PATCH] Add null static analysis attribute. --- src/MapTo/Sources/MapClassSource.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/MapTo/Sources/MapClassSource.cs b/src/MapTo/Sources/MapClassSource.cs index 10229b7..5b01509 100644 --- a/src/MapTo/Sources/MapClassSource.cs +++ b/src/MapTo/Sources/MapClassSource.cs @@ -43,7 +43,8 @@ namespace MapTo.Sources private static SourceBuilder WriteUsings(this SourceBuilder builder, MappingModel model) { return builder - .WriteLine("using System;"); + .WriteLine("using System;") + .WriteLineIf(model.Options.SupportNullableReferenceTypes, "using System.Diagnostics.CodeAnalysis;"); } private static SourceBuilder GenerateConstructor(this SourceBuilder builder, MappingModel model) @@ -94,7 +95,8 @@ namespace MapTo.Sources return builder .GenerateConvertorMethodsXmlDocs(model, sourceClassParameterName) - .WriteLine($"{model.Options.GeneratedMethodsAccessModifier.ToLowercaseString()} static {model.ClassName} From({model.SourceClassFullName}{model.Options.NullableReferenceSyntax} {sourceClassParameterName})") + .WriteLineIf(model.Options.SupportNullableReferenceTypes, $"[return: NotNullIfNotNull(\"{sourceClassParameterName}\")]") + .WriteLine($"{model.Options.GeneratedMethodsAccessModifier.ToLowercaseString()} static {model.ClassName}{model.Options.NullableReferenceSyntax} From({model.SourceClassFullName}{model.Options.NullableReferenceSyntax} {sourceClassParameterName})") .WriteOpeningBracket() .WriteLine($"return {sourceClassParameterName} == null ? null : new {model.ClassName}({sourceClassParameterName});") .WriteClosingBracket(); @@ -131,7 +133,8 @@ namespace MapTo.Sources return builder .GenerateConvertorMethodsXmlDocs(model, sourceClassParameterName) - .WriteLine($"{model.Options.GeneratedMethodsAccessModifier.ToLowercaseString()} static {model.ClassName} To{model.ClassName}(this {model.SourceClassFullName}{model.Options.NullableReferenceSyntax} {sourceClassParameterName})") + .WriteLineIf(model.Options.SupportNullableReferenceTypes, $"[return: NotNullIfNotNull(\"{sourceClassParameterName}\")]") + .WriteLine($"{model.Options.GeneratedMethodsAccessModifier.ToLowercaseString()} static {model.ClassName}{model.Options.NullableReferenceSyntax} To{model.ClassName}(this {model.SourceClassFullName}{model.Options.NullableReferenceSyntax} {sourceClassParameterName})") .WriteOpeningBracket() .WriteLine($"return {sourceClassParameterName} == null ? null : new {model.ClassName}({sourceClassParameterName});") .WriteClosingBracket();