From b9fc51bed186caa15117d0eba3421e2baf09bf98 Mon Sep 17 00:00:00 2001 From: Maksym Koshovyi Date: Wed, 25 Aug 2021 17:29:57 +0300 Subject: [PATCH] [Group 2] Enable nullable annotations for `Microsoft.Extensions.FileProviders.Abstractions` (#57405) * Annotate src * Annotate ref * GetFileInfo.subpath is not null * Update Microsoft.Extensions.FileProviders.Abstractions.cs * Commit to rerun CI * Revert "Commit to rerun CI" This reverts commit 4675f8654eff5967881a2153513a6f1d1e2108e4. * subpath is non-nullable --- .../ref/Microsoft.Extensions.FileProviders.Abstractions.cs | 7 ++++--- .../Microsoft.Extensions.FileProviders.Abstractions.csproj | 1 + .../src/IFileInfo.cs | 2 +- .../Microsoft.Extensions.FileProviders.Abstractions.csproj | 1 + .../src/NotFoundDirectoryContents.cs | 2 +- .../src/NotFoundFileInfo.cs | 4 +++- .../src/NullChangeToken.cs | 2 +- 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.cs b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.cs index 3982a62c75ce..8d3d62bb9c87 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.cs @@ -17,7 +17,7 @@ public partial interface IFileInfo System.DateTimeOffset LastModified { get; } long Length { get; } string Name { get; } - string PhysicalPath { get; } + string? PhysicalPath { get; } System.IO.Stream CreateReadStream(); } public partial interface IFileProvider @@ -42,7 +42,8 @@ public partial class NotFoundFileInfo : Microsoft.Extensions.FileProviders.IFile public System.DateTimeOffset LastModified { get { throw null; } } public long Length { get { throw null; } } public string Name { get { throw null; } } - public string PhysicalPath { get { throw null; } } + public string? PhysicalPath { get { throw null; } } + [System.Diagnostics.CodeAnalysis.DoesNotReturn] public System.IO.Stream CreateReadStream() { throw null; } } public partial class NullChangeToken : Microsoft.Extensions.Primitives.IChangeToken @@ -51,7 +52,7 @@ public partial class NullChangeToken : Microsoft.Extensions.Primitives.IChangeTo public bool ActiveChangeCallbacks { get { throw null; } } public bool HasChanged { get { throw null; } } public static Microsoft.Extensions.FileProviders.NullChangeToken Singleton { get { throw null; } } - public System.IDisposable RegisterChangeCallback(System.Action callback, object state) { throw null; } + public System.IDisposable RegisterChangeCallback(System.Action callback, object? state) { throw null; } } public partial class NullFileProvider : Microsoft.Extensions.FileProviders.IFileProvider { diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.csproj b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.csproj index bd02f83be918..b198cac2def8 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.csproj +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/ref/Microsoft.Extensions.FileProviders.Abstractions.csproj @@ -1,6 +1,7 @@ $(NetCoreAppCurrent);netstandard2.0;net461 + enable diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/IFileInfo.cs b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/IFileInfo.cs index d1f620c211a9..08b364ca2d8a 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/IFileInfo.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/IFileInfo.cs @@ -24,7 +24,7 @@ public interface IFileInfo /// /// The path to the file, including the file name. Return null if the file is not directly accessible. /// - string PhysicalPath { get; } + string? PhysicalPath { get; } /// /// The name of the file or directory, not including any path. diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj index 07289f58670e..65a64a494f92 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/Microsoft.Extensions.FileProviders.Abstractions.csproj @@ -3,6 +3,7 @@ Microsoft.Extensions.FileProviders $(NetCoreAppCurrent);netstandard2.0;net461 + enable true Abstractions of files and directories. diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundDirectoryContents.cs b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundDirectoryContents.cs index 8f4feb94eaf6..d9240fa8c740 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundDirectoryContents.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundDirectoryContents.cs @@ -15,7 +15,7 @@ public class NotFoundDirectoryContents : IDirectoryContents /// /// A shared instance of /// - public static NotFoundDirectoryContents Singleton { get; } = new NotFoundDirectoryContents(); + public static NotFoundDirectoryContents Singleton { get; } = new(); /// /// Always false. diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundFileInfo.cs b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundFileInfo.cs index 3640a8ec424d..13707bae3339 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundFileInfo.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NotFoundFileInfo.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Diagnostics.CodeAnalysis; using System.IO; namespace Microsoft.Extensions.FileProviders @@ -46,13 +47,14 @@ public NotFoundFileInfo(string name) /// /// Always null. /// - public string PhysicalPath => null; + public string? PhysicalPath => null; /// /// Always throws. A stream cannot be created for non-existing file. /// /// Always thrown. /// Does not return + [DoesNotReturn] public Stream CreateReadStream() { throw new FileNotFoundException(SR.Format(SR.FileNotExists, Name)); diff --git a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NullChangeToken.cs b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NullChangeToken.cs index 19a730355556..b35546f20748 100644 --- a/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NullChangeToken.cs +++ b/src/libraries/Microsoft.Extensions.FileProviders.Abstractions/src/NullChangeToken.cs @@ -36,7 +36,7 @@ private NullChangeToken() /// This parameter is ignored /// This parameter is ignored /// A disposable object that noops on dispose. - public IDisposable RegisterChangeCallback(Action callback, object state) + public IDisposable RegisterChangeCallback(Action callback, object? state) { return EmptyDisposable.Instance; }