Skip to content

Commit 0138659

Browse files
committed
enable nullable
1 parent e6617c5 commit 0138659

File tree

8 files changed

+59
-25
lines changed

8 files changed

+59
-25
lines changed

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi.Core.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ SPDX-License-Identifier: MIT
99
<VersionPrefix>1.1.0</VersionPrefix>
1010
<VersionSuffix></VersionSuffix>
1111
<PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion>
12+
<Nullable>enable</Nullable>
1213
</PropertyGroup>
1314

1415
<Import Project="..\Sdk.net7.0-preview.props" />

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/ApiListWriter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,9 @@ ApiListWriterOptions options
303303
// remove add/remove/raise method of events
304304
exceptingMembers.AddRange(e.GetMethods(true));
305305
}
306-
else if (member.MemberType == MemberTypes.NestedType) {
307-
exceptingMembers.Add(member);
308-
nestedTypes.Add(member as Type);
306+
else if (member.MemberType == MemberTypes.NestedType && member is Type nestedType) {
307+
exceptingMembers.Add(nestedType);
308+
nestedTypes.Add(nestedType);
309309
}
310310
}
311311

@@ -331,7 +331,7 @@ ApiListWriterOptions options
331331
var memberAndDeclarations = new List<(MemberInfo Member, string Declaration)>();
332332

333333
foreach (var member in members.Except(exceptingMembers)) {
334-
string declaration = null;
334+
string? declaration = null;
335335

336336
try {
337337
declaration = Generator.GenerateMemberDeclaration(member, referencingNamespaces, options);
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
// SPDX-FileCopyrightText: 2021 smdn <smdn@smdn.jp>
22
// SPDX-License-Identifier: MIT
33
using System;
4+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
5+
using System.Diagnostics.CodeAnalysis;
6+
#endif
47
using System.Linq;
58
using System.Reflection;
69

710
namespace Smdn.Reflection.ReverseGenerating.ListApi;
811

912
public static class AssemblyExtensions {
13+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
14+
[return: MaybeNull]
15+
#endif
1016
public static TValue GetAssemblyMetadataAttributeValue<TAssemblyMetadataAttribute, TValue>(this Assembly assm)
1117
where TAssemblyMetadataAttribute : Attribute
12-
=> (TValue)assm
18+
=> (TValue)(
19+
(assm ?? throw new ArgumentNullException(nameof(assm)))
1320
?.GetCustomAttributesData()
1421
?.FirstOrDefault(static d => ROCType.FullNameEquals(typeof(TAssemblyMetadataAttribute), d.AttributeType))
1522
?.ConstructorArguments
1623
?.FirstOrDefault()
17-
.Value;
24+
.Value
25+
)!;
1826
}

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/AssemblyLoader.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// SPDX-FileCopyrightText: 2021 smdn <smdn@smdn.jp>
22
// SPDX-License-Identifier: MIT
33
using System;
4+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
5+
using System.Diagnostics.CodeAnalysis;
6+
#endif
47
using System.IO;
58
using System.Reflection;
69

@@ -9,13 +12,16 @@
912
namespace Smdn.Reflection.ReverseGenerating.ListApi;
1013

1114
public static partial class AssemblyLoader {
15+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
16+
[return: MaybeNull]
17+
#endif
1218
public static TResult UsingAssembly<TArg, TResult>(
1319
FileInfo assemblyFile,
1420
bool loadIntoReflectionOnlyContext,
1521
TArg arg,
1622
Func<Assembly, TArg, TResult> actionWithLoadedAssembly,
17-
out WeakReference context,
18-
ILogger logger = null
23+
out WeakReference? context,
24+
ILogger? logger = null
1925
)
2026
{
2127
return UsingAssemblyCore(

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/AssemblyLoader.netcore.cs

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
#if NETCOREAPP3_1_OR_GREATER
66
using System;
7+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
8+
using System.Diagnostics.CodeAnalysis;
9+
#endif
710
using System.IO;
811
using System.Reflection;
912
using System.Runtime.CompilerServices;
@@ -17,13 +20,16 @@ namespace Smdn.Reflection.ReverseGenerating.ListApi;
1720
#pragma warning disable IDE0040
1821
partial class AssemblyLoader {
1922
#pragma warning restore IDE0040
23+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
24+
[return: MaybeNull]
25+
#endif
2026
private static TResult UsingAssemblyCore<TArg, TResult>(
2127
FileInfo assemblyFile,
2228
bool loadIntoReflectionOnlyContext,
2329
TArg arg,
2430
Func<Assembly, TArg, TResult> actionWithLoadedAssembly,
25-
out WeakReference context,
26-
ILogger logger = null
31+
out WeakReference? context,
32+
ILogger? logger = null
2733
)
2834
{
2935
context = default;
@@ -49,9 +55,9 @@ private static TResult UsingAssemblyCore<TArg, TResult>(
4955

5056
private sealed class PathAssemblyDependencyResolver : PathAssemblyResolver {
5157
private readonly AssemblyDependencyResolver dependencyResolver;
52-
private readonly ILogger logger;
58+
private readonly ILogger? logger;
5359

54-
public PathAssemblyDependencyResolver(string componentAssemblyPath, ILogger logger = null)
60+
public PathAssemblyDependencyResolver(string componentAssemblyPath, ILogger? logger = null)
5561
: base(
5662
Directory.GetFiles(RuntimeEnvironment.GetRuntimeDirectory(), "*.dll") // add runtime assemblies
5763
)
@@ -60,7 +66,7 @@ public PathAssemblyDependencyResolver(string componentAssemblyPath, ILogger logg
6066
this.logger = logger;
6167
}
6268

63-
public override Assembly Resolve(MetadataLoadContext context, AssemblyName assemblyName)
69+
public override Assembly? Resolve(MetadataLoadContext context, AssemblyName assemblyName)
6470
{
6571
logger?.LogDebug("attempting to load '{AssemblyName}'", assemblyName);
6672

@@ -83,11 +89,14 @@ public override Assembly Resolve(MetadataLoadContext context, AssemblyName assem
8389
}
8490
}
8591

92+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
93+
[return: MaybeNull]
94+
#endif
8695
private static TResult UsingReflectionOnlyAssembly<TArg, TResult>(
8796
FileInfo assemblyFile,
8897
TArg arg,
8998
Func<Assembly, TArg, TResult> actionWithLoadedAssembly,
90-
ILogger logger = null
99+
ILogger? logger = null
91100
)
92101
{
93102
using var mlc = new MetadataLoadContext(
@@ -113,9 +122,9 @@ private static TResult UsingReflectionOnlyAssembly<TArg, TResult>(
113122

114123
private sealed class UnloadableAssemblyLoadContext : AssemblyLoadContext {
115124
private readonly AssemblyDependencyResolver dependencyResolver;
116-
private readonly ILogger logger;
125+
private readonly ILogger? logger;
117126

118-
public UnloadableAssemblyLoadContext(string componentAssemblyPath, ILogger logger = null)
127+
public UnloadableAssemblyLoadContext(string componentAssemblyPath, ILogger? logger = null)
119128
: base(
120129
isCollectible: true // is required to unload assembly
121130
)
@@ -124,7 +133,7 @@ public UnloadableAssemblyLoadContext(string componentAssemblyPath, ILogger logge
124133
this.logger = logger;
125134
}
126135

127-
protected override Assembly Load(AssemblyName name)
136+
protected override Assembly? Load(AssemblyName name)
128137
{
129138
var assemblyPath = dependencyResolver.ResolveAssemblyToPath(name);
130139

@@ -140,13 +149,16 @@ protected override Assembly Load(AssemblyName name)
140149
}
141150
}
142151

152+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
153+
[return: MaybeNull]
154+
#endif
143155
[MethodImpl(MethodImplOptions.NoInlining)]
144156
private static TResult UsingAssembly<TArg, TResult>(
145157
FileInfo assemblyFile,
146158
TArg arg,
147159
Func<Assembly, TArg, TResult> actionWithLoadedAssembly,
148-
out WeakReference context,
149-
ILogger logger = null
160+
out WeakReference? context,
161+
ILogger? logger = null
150162
)
151163
{
152164
context = null;

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/AssemblyLoader.netframework.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@ public override Assembly LoadAssembly(FileInfo assemblyFile)
3232
}
3333
}
3434

35+
[return: MaybeNull]
3536
private static TResult UsingAssemblyCore<TArg, TResult>(
3637
FileInfo assemblyFile,
3738
bool loadIntoReflectionOnlyContext,
3839
TArg arg,
3940
Func<Assembly, TArg, TResult> actionWithLoadedAssembly,
40-
out WeakReference context,
41-
ILogger logger = null
41+
out WeakReference? context,
42+
ILogger? logger = null
4243
)
4344
{
4445
context = null;

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/FrameworkMonikers.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// SPDX-FileCopyrightText: 2021 smdn <smdn@smdn.jp>
22
// SPDX-License-Identifier: MIT
33
using System;
4+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
5+
using System.Diagnostics.CodeAnalysis;
6+
#endif
47
using System.Runtime.Versioning;
58

69
namespace Smdn.Reflection.ReverseGenerating.ListApi;
@@ -14,9 +17,12 @@ public static class FrameworkMonikers {
1417
public static bool TryGetMoniker(
1518
FrameworkName frameworkName,
1619
#pragma warning disable IDE0060, SA1305
17-
string osSpecifier,
20+
string? osSpecifier,
1821
#pragma warning restore IDE0060, SA1305
19-
out string frameworkMoniker
22+
#if NULL_STATE_STATIC_ANALYSIS_ATTRIBUTES
23+
[NotNullWhen(true)]
24+
#endif
25+
out string? frameworkMoniker
2026
)
2127
{
2228
if (frameworkName is null)

src/Smdn.Reflection.ReverseGenerating.ListApi.Core/Smdn.Reflection.ReverseGenerating.ListApi/MemberInfoComparer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public MemberInfoComparer(int orderOfStaticMember, int orderOfInstanceMember)
1818
this.orderOfInstanceMember = orderOfInstanceMember;
1919
}
2020

21-
public int Compare(MemberInfo x, MemberInfo y)
21+
public int Compare(MemberInfo? x, MemberInfo? y)
2222
{
2323
var ox = GetOrder(x);
2424
var oy = GetOrder(y);
@@ -28,7 +28,7 @@ public int Compare(MemberInfo x, MemberInfo y)
2828

2929
private int GetStaticMemberOrder(bool isStatic) => isStatic ? orderOfStaticMember : orderOfInstanceMember;
3030

31-
public int GetOrder(MemberInfo member)
31+
public int GetOrder(MemberInfo? member)
3232
=> member switch {
3333
#pragma warning disable IDE0055
3434
null => 0,

0 commit comments

Comments
 (0)