Parcourir la source

Added NotNullIfNotNull attribute on LocalizedString -> string operator to fix nullable reference warnings.

Mikel Blanchard il y a 5 ans
Parent
commit
b5b6968673

+ 12 - 0
src/Localization/.vsconfig

@@ -0,0 +1,12 @@
+{
+  "version": "1.0",
+  "components": [
+    "Microsoft.Net.Component.4.6.1.TargetingPack",
+    "Microsoft.Net.Component.4.7.2.SDK",
+    "Microsoft.Net.Component.4.7.2.TargetingPack",
+    "Microsoft.VisualStudio.Workload.ManagedDesktop",
+    "Microsoft.VisualStudio.Workload.NetCoreTools",
+    "Microsoft.VisualStudio.Workload.NetWeb",
+    "Microsoft.VisualStudio.Workload.VisualStudioExtension"
+  ]
+}

+ 2 - 0
src/Localization/Abstractions/src/LocalizedString.cs

@@ -2,6 +2,7 @@
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using System;
+using System.Diagnostics.CodeAnalysis;
 
 namespace Microsoft.Extensions.Localization
 {
@@ -60,6 +61,7 @@ namespace Microsoft.Extensions.Localization
         /// Implicitly converts the <see cref="LocalizedString"/> to a <see cref="string"/>.
         /// </summary>
         /// <param name="localizedString">The string to be implicitly converted.</param>
+        [return: NotNullIfNotNull("localizedString")]
         public static implicit operator string?(LocalizedString localizedString)
         {
             return localizedString?.Value;

+ 11 - 0
src/Localization/Localization.slnf

@@ -0,0 +1,11 @@
+{
+  "solution": {
+    "path": "..\\..\\AspNetCore.sln",
+    "projects" : [
+      "src\\Localization\\Abstractions\\src\\Microsoft.Extensions.Localization.Abstractions.csproj",
+      "src\\Localization\\Localization\\src\\Microsoft.Extensions.Localization.csproj",
+      "src\\Localization\\Localization\\test\\Microsoft.Extensions.Localization.RootNamespace.Tests\\Microsoft.Extensions.Localization.RootNamespace.Tests.csproj",
+      "src\\Localization\\Localization\\test\\Microsoft.Extensions.Localization.Tests\\Microsoft.Extensions.Localization.Tests.csproj",
+    ]
+  }
+}

+ 3 - 2
src/Localization/Localization/test/Microsoft.Extensions.Localization.RootNamespace.Tests/StringLocalizerOfTRootNamespaceTest.cs

@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved. 
+// Copyright (c) .NET Foundation. All rights reserved.
 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
 
 using LocalizationTest.Abc.Controllers;
@@ -20,7 +20,8 @@ namespace Microsoft.Extensions.Localization.RootNamespace.Tests
             var factory = new ResourceManagerStringLocalizerFactory(options.Object, NullLoggerFactory.Instance);
 
             var valuesLoc = factory.Create(typeof(ValuesController));
-            Assert.Equal("ValFromResource", valuesLoc["String1"]);
+            string value = valuesLoc["String1"]; // Note: Tests nullable analysis of implicit string conversion operator.
+            Assert.Equal("ValFromResource", value);
         }
     }
 }

+ 3 - 0
src/Localization/build.cmd

@@ -0,0 +1,3 @@
+@ECHO OFF
+SET RepoRoot=%~dp0..\..
+%RepoRoot%\build.cmd -projects %~dp0**\*.*proj %*

+ 3 - 0
src/Localization/startvs.cmd

@@ -0,0 +1,3 @@
+@ECHO OFF
+
+%~dp0..\..\startvs.cmd %~dp0Localization.slnf