diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-04-12 19:56:52 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2022-04-12 19:56:52 -0400 |
commit | c3851ae2e6c8fb286d4744612fbfea039d1baf7f (patch) | |
tree | 9680fbed073c6c792c5c55d18632f8351099b508 /src | |
parent | 4e0e928c943bc2d5f1bec27c117a648f55ab5894 (diff) | |
download | SMAPI-c3851ae2e6c8fb286d4744612fbfea039d1baf7f.tar.gz SMAPI-c3851ae2e6c8fb286d4744612fbfea039d1baf7f.tar.bz2 SMAPI-c3851ae2e6c8fb286d4744612fbfea039d1baf7f.zip |
enable nullable annotations in shared projects (#837)
Diffstat (limited to 'src')
-rw-r--r-- | src/SMAPI.Internal.Patching/BasePatcher.cs | 6 | ||||
-rw-r--r-- | src/SMAPI.Internal.Patching/HarmonyPatcher.cs | 2 | ||||
-rw-r--r-- | src/SMAPI.Internal.Patching/IPatcher.cs | 2 | ||||
-rw-r--r-- | src/SMAPI.Internal.Patching/PatchHelper.cs | 8 | ||||
-rw-r--r-- | src/SMAPI.Internal/ConsoleWriting/ColorSchemeConfig.cs | 22 | ||||
-rw-r--r-- | src/SMAPI.Internal/ConsoleWriting/ColorfulConsoleWriter.cs | 19 | ||||
-rw-r--r-- | src/SMAPI.Internal/ConsoleWriting/IConsoleWriter.cs | 2 | ||||
-rw-r--r-- | src/SMAPI.Internal/ExceptionHelper.cs | 6 |
8 files changed, 34 insertions, 33 deletions
diff --git a/src/SMAPI.Internal.Patching/BasePatcher.cs b/src/SMAPI.Internal.Patching/BasePatcher.cs index 6d019b52..c1936ccc 100644 --- a/src/SMAPI.Internal.Patching/BasePatcher.cs +++ b/src/SMAPI.Internal.Patching/BasePatcher.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; using System.Reflection; using HarmonyLib; @@ -32,7 +30,7 @@ namespace StardewModdingAPI.Internal.Patching /// <param name="name">The method name.</param> /// <param name="parameters">The method parameter types, or <c>null</c> if it's not overloaded.</param> /// <param name="generics">The method generic types, or <c>null</c> if it's not generic.</param> - protected MethodInfo RequireMethod<TTarget>(string name, Type[] parameters = null, Type[] generics = null) + protected MethodInfo RequireMethod<TTarget>(string name, Type[]? parameters = null, Type[]? generics = null) { return PatchHelper.RequireMethod<TTarget>(name, parameters, generics); } @@ -42,7 +40,7 @@ namespace StardewModdingAPI.Internal.Patching /// <param name="priority">The patch priority to apply, usually specified using Harmony's <see cref="Priority"/> enum, or <c>null</c> to keep the default value.</param> protected HarmonyMethod GetHarmonyMethod(string name, int? priority = null) { - var method = new HarmonyMethod( + HarmonyMethod method = new( AccessTools.Method(this.GetType(), name) ?? throw new InvalidOperationException($"Can't find patcher method {PatchHelper.GetMethodString(this.GetType(), name)}.") ); diff --git a/src/SMAPI.Internal.Patching/HarmonyPatcher.cs b/src/SMAPI.Internal.Patching/HarmonyPatcher.cs index fc239fd2..6f30c241 100644 --- a/src/SMAPI.Internal.Patching/HarmonyPatcher.cs +++ b/src/SMAPI.Internal.Patching/HarmonyPatcher.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; using HarmonyLib; diff --git a/src/SMAPI.Internal.Patching/IPatcher.cs b/src/SMAPI.Internal.Patching/IPatcher.cs index 5b373117..a732d64f 100644 --- a/src/SMAPI.Internal.Patching/IPatcher.cs +++ b/src/SMAPI.Internal.Patching/IPatcher.cs @@ -1,5 +1,3 @@ -#nullable disable - using HarmonyLib; namespace StardewModdingAPI.Internal.Patching diff --git a/src/SMAPI.Internal.Patching/PatchHelper.cs b/src/SMAPI.Internal.Patching/PatchHelper.cs index 52b15fd1..edd8ef57 100644 --- a/src/SMAPI.Internal.Patching/PatchHelper.cs +++ b/src/SMAPI.Internal.Patching/PatchHelper.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; using System.Linq; using System.Reflection; @@ -18,7 +16,7 @@ namespace StardewModdingAPI.Internal.Patching /// <typeparam name="TTarget">The type containing the method.</typeparam> /// <param name="parameters">The method parameter types, or <c>null</c> if it's not overloaded.</param> /// <exception cref="InvalidOperationException">The type has no matching constructor.</exception> - public static ConstructorInfo RequireConstructor<TTarget>(Type[] parameters = null) + public static ConstructorInfo RequireConstructor<TTarget>(Type[]? parameters = null) { return AccessTools.Constructor(typeof(TTarget), parameters) @@ -31,7 +29,7 @@ namespace StardewModdingAPI.Internal.Patching /// <param name="parameters">The method parameter types, or <c>null</c> if it's not overloaded.</param> /// <param name="generics">The method generic types, or <c>null</c> if it's not generic.</param> /// <exception cref="InvalidOperationException">The type has no matching method.</exception> - public static MethodInfo RequireMethod<TTarget>(string name, Type[] parameters = null, Type[] generics = null) + public static MethodInfo RequireMethod<TTarget>(string name, Type[]? parameters = null, Type[]? generics = null) { return AccessTools.Method(typeof(TTarget), name, parameters, generics) @@ -43,7 +41,7 @@ namespace StardewModdingAPI.Internal.Patching /// <param name="name">The method name, or <c>null</c> for a constructor.</param> /// <param name="parameters">The method parameter types, or <c>null</c> if it's not overloaded.</param> /// <param name="generics">The method generic types, or <c>null</c> if it's not generic.</param> - public static string GetMethodString(Type type, string name, Type[] parameters = null, Type[] generics = null) + public static string GetMethodString(Type type, string? name, Type[]? parameters = null, Type[]? generics = null) { StringBuilder str = new(); diff --git a/src/SMAPI.Internal/ConsoleWriting/ColorSchemeConfig.cs b/src/SMAPI.Internal/ConsoleWriting/ColorSchemeConfig.cs index b22aa231..4e5850ea 100644 --- a/src/SMAPI.Internal/ConsoleWriting/ColorSchemeConfig.cs +++ b/src/SMAPI.Internal/ConsoleWriting/ColorSchemeConfig.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; using System.Collections.Generic; @@ -8,10 +6,26 @@ namespace StardewModdingAPI.Internal.ConsoleWriting /// <summary>The console color scheme options.</summary> internal class ColorSchemeConfig { + /********* + ** Accessors + *********/ /// <summary>The default color scheme ID to use, or <see cref="MonitorColorScheme.AutoDetect"/> to select one automatically.</summary> - public MonitorColorScheme UseScheme { get; set; } + public MonitorColorScheme UseScheme { get; } /// <summary>The available console color schemes.</summary> - public IDictionary<MonitorColorScheme, IDictionary<ConsoleLogLevel, ConsoleColor>> Schemes { get; set; } + public IDictionary<MonitorColorScheme, IDictionary<ConsoleLogLevel, ConsoleColor>> Schemes { get; } + + + /********* + ** Public methods + *********/ + /// <summary>Construct an instance.</summary> + /// <param name="useScheme">The default color scheme ID to use, or <see cref="MonitorColorScheme.AutoDetect"/> to select one automatically.</param> + /// <param name="schemes">The available console color schemes.</param> + public ColorSchemeConfig(MonitorColorScheme useScheme, IDictionary<MonitorColorScheme, IDictionary<ConsoleLogLevel, ConsoleColor>> schemes) + { + this.UseScheme = useScheme; + this.Schemes = schemes; + } } } diff --git a/src/SMAPI.Internal/ConsoleWriting/ColorfulConsoleWriter.cs b/src/SMAPI.Internal/ConsoleWriting/ColorfulConsoleWriter.cs index 19a31c7b..78db0d65 100644 --- a/src/SMAPI.Internal/ConsoleWriting/ColorfulConsoleWriter.cs +++ b/src/SMAPI.Internal/ConsoleWriting/ColorfulConsoleWriter.cs @@ -1,7 +1,6 @@ -#nullable disable - using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using StardewModdingAPI.Toolkit.Utilities; namespace StardewModdingAPI.Internal.ConsoleWriting @@ -13,10 +12,11 @@ namespace StardewModdingAPI.Internal.ConsoleWriting ** Fields *********/ /// <summary>The console text color for each log level.</summary> - private readonly IDictionary<ConsoleLogLevel, ConsoleColor> Colors; + private readonly IDictionary<ConsoleLogLevel, ConsoleColor>? Colors; /// <summary>Whether the current console supports color formatting.</summary> - private readonly bool SupportsColor; + [MemberNotNullWhen(true, nameof(ColorfulConsoleWriter.Colors))] + private bool SupportsColor { get; } /********* @@ -74,10 +74,9 @@ namespace StardewModdingAPI.Internal.ConsoleWriting /// <remarks>The colors here should be kept in sync with the SMAPI config file.</remarks> public static ColorSchemeConfig GetDefaultColorSchemeConfig(MonitorColorScheme useScheme) { - return new ColorSchemeConfig - { - UseScheme = useScheme, - Schemes = new Dictionary<MonitorColorScheme, IDictionary<ConsoleLogLevel, ConsoleColor>> + return new ColorSchemeConfig( + useScheme: useScheme, + schemes: new Dictionary<MonitorColorScheme, IDictionary<ConsoleLogLevel, ConsoleColor>> { [MonitorColorScheme.DarkBackground] = new Dictionary<ConsoleLogLevel, ConsoleColor> { @@ -100,7 +99,7 @@ namespace StardewModdingAPI.Internal.ConsoleWriting [ConsoleLogLevel.Success] = ConsoleColor.DarkGreen } } - }; + ); } @@ -136,7 +135,7 @@ namespace StardewModdingAPI.Internal.ConsoleWriting } // get colors for scheme - return colorConfig.Schemes.TryGetValue(schemeID, out IDictionary<ConsoleLogLevel, ConsoleColor> scheme) + return colorConfig.Schemes.TryGetValue(schemeID, out IDictionary<ConsoleLogLevel, ConsoleColor>? scheme) ? scheme : throw new NotSupportedException($"Unknown color scheme '{schemeID}'."); } diff --git a/src/SMAPI.Internal/ConsoleWriting/IConsoleWriter.cs b/src/SMAPI.Internal/ConsoleWriting/IConsoleWriter.cs index 84e17207..fbcf161c 100644 --- a/src/SMAPI.Internal/ConsoleWriting/IConsoleWriter.cs +++ b/src/SMAPI.Internal/ConsoleWriting/IConsoleWriter.cs @@ -1,5 +1,3 @@ -#nullable disable - namespace StardewModdingAPI.Internal.ConsoleWriting { /// <summary>Writes text to the console.</summary> diff --git a/src/SMAPI.Internal/ExceptionHelper.cs b/src/SMAPI.Internal/ExceptionHelper.cs index a856cf71..7edc0f62 100644 --- a/src/SMAPI.Internal/ExceptionHelper.cs +++ b/src/SMAPI.Internal/ExceptionHelper.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; using System.Reflection; using System.Text.RegularExpressions; @@ -14,7 +12,7 @@ namespace StardewModdingAPI.Internal *********/ /// <summary>Get a string representation of an exception suitable for writing to the error log.</summary> /// <param name="exception">The error to summarize.</param> - public static string GetLogSummary(this Exception exception) + public static string GetLogSummary(this Exception? exception) { try { @@ -27,7 +25,7 @@ namespace StardewModdingAPI.Internal case ReflectionTypeLoadException ex: string summary = ex.ToString(); - foreach (Exception childEx in ex.LoaderExceptions) + foreach (Exception? childEx in ex.LoaderExceptions) summary += $"\n\n{childEx?.GetLogSummary()}"; message = summary; break; |