Skip to content

Commit 33179fa

Browse files
[Group 5] Enable nullable annotations for Microsoft.Extensions.Configuration.Ini (#60368)
* Add annotations * Use pattern matching * NetCoreAppMinimum * ReadLine won't return null * Update src/libraries/Microsoft.Extensions.Configuration.Ini/ref/Microsoft.Extensions.Configuration.Ini.csproj Co-authored-by: Eric Erhardt <[email protected]> * Add comment * Revert non-nullable change Co-authored-by: Eric Erhardt <[email protected]>
1 parent 3956126 commit 33179fa

File tree

5 files changed

+11
-9
lines changed

5 files changed

+11
-9
lines changed

src/libraries/Microsoft.Extensions.Configuration.Ini/ref/Microsoft.Extensions.Configuration.Ini.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ namespace Microsoft.Extensions.Configuration
88
{
99
public static partial class IniConfigurationExtensions
1010
{
11-
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, Microsoft.Extensions.FileProviders.IFileProvider provider, string path, bool optional, bool reloadOnChange) { throw null; }
12-
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.Ini.IniConfigurationSource> configureSource) { throw null; }
11+
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, Microsoft.Extensions.FileProviders.IFileProvider? provider, string path, bool optional, bool reloadOnChange) { throw null; }
12+
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.Ini.IniConfigurationSource>? configureSource) { throw null; }
1313
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, string path) { throw null; }
1414
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, string path, bool optional) { throw null; }
1515
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddIniFile(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, string path, bool optional, bool reloadOnChange) { throw null; }
@@ -32,7 +32,7 @@ public partial class IniStreamConfigurationProvider : Microsoft.Extensions.Confi
3232
{
3333
public IniStreamConfigurationProvider(Microsoft.Extensions.Configuration.Ini.IniStreamConfigurationSource source) : base (default(Microsoft.Extensions.Configuration.StreamConfigurationSource)) { }
3434
public override void Load(System.IO.Stream stream) { }
35-
public static System.Collections.Generic.IDictionary<string, string> Read(System.IO.Stream stream) { throw null; }
35+
public static System.Collections.Generic.IDictionary<string, string?> Read(System.IO.Stream stream) { throw null; }
3636
}
3737
public partial class IniStreamConfigurationSource : Microsoft.Extensions.Configuration.StreamConfigurationSource
3838
{

src/libraries/Microsoft.Extensions.Configuration.Ini/ref/Microsoft.Extensions.Configuration.Ini.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
4+
<Nullable>enable</Nullable>
45
</PropertyGroup>
56

67
<ItemGroup>

src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniConfigurationExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builde
6262
/// <param name="optional">Whether the file is optional.</param>
6363
/// <param name="reloadOnChange">Whether the configuration should be reloaded if the file changes.</param>
6464
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
65-
public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder, IFileProvider provider, string path, bool optional, bool reloadOnChange)
65+
public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder, IFileProvider? provider, string path, bool optional, bool reloadOnChange)
6666
{
6767
if (builder == null)
6868
{
@@ -89,7 +89,7 @@ public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builde
8989
/// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param>
9090
/// <param name="configureSource">Configures the source.</param>
9191
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
92-
public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder, Action<IniConfigurationSource> configureSource)
92+
public static IConfigurationBuilder AddIniFile(this IConfigurationBuilder builder, Action<IniConfigurationSource>? configureSource)
9393
=> builder.Add(configureSource);
9494

9595
/// <summary>

src/libraries/Microsoft.Extensions.Configuration.Ini/src/IniStreamConfigurationProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ public IniStreamConfigurationProvider(IniStreamConfigurationSource source) : bas
2323
/// </summary>
2424
/// <param name="stream">The stream of INI data.</param>
2525
/// <returns>The <see cref="IDictionary{String, String}"/> which was read from the stream.</returns>
26-
public static IDictionary<string, string> Read(Stream stream)
26+
public static IDictionary<string, string?> Read(Stream stream)
2727
{
28-
var data = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
28+
var data = new Dictionary<string, string?>(StringComparer.OrdinalIgnoreCase);
2929
using (var reader = new StreamReader(stream))
3030
{
3131
string sectionPrefix = string.Empty;
3232

3333
while (reader.Peek() != -1)
3434
{
35-
string rawLine = reader.ReadLine();
35+
string rawLine = reader.ReadLine()!; // Since Peak didn't return -1, stream hasn't ended.
3636
string line = rawLine.Trim();
3737

3838
// Ignore blank lines
@@ -41,7 +41,7 @@ public static IDictionary<string, string> Read(Stream stream)
4141
continue;
4242
}
4343
// Ignore comments
44-
if (line[0] == ';' || line[0] == '#' || line[0] == '/')
44+
if (line[0] is ';' or '#' or '/')
4545
{
4646
continue;
4747
}

src/libraries/Microsoft.Extensions.Configuration.Ini/src/Microsoft.Extensions.Configuration.Ini.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
5+
<Nullable>enable</Nullable>
56
<EnableDefaultItems>true</EnableDefaultItems>
67
<!-- Use targeting pack references instead of granular ones in the project file. -->
78
<DisableImplicitAssemblyReferences>false</DisableImplicitAssemblyReferences>

0 commit comments

Comments
 (0)