From ea15126fe10126d7b582621a30e06f4f222761be Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Thu, 30 May 2024 05:39:57 +1000 Subject: [PATCH] Minor refactors to first-party Analyzers and Source Generators --- .../FirstOrDefaultOnStructAnalyzer.cs | 5 +++-- .../ReflectionCacheGenerator.cs | 10 ++++++---- References/BizHawk.Analyzer.dll | Bin 31232 -> 31232 bytes References/BizHawk.SrcGen.ReflectionCache.dll | Bin 13312 -> 14336 bytes 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs b/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs index 0424d99a33..b0200d8d1c 100644 --- a/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs +++ b/ExternalProjects/BizHawk.Analyzer/FirstOrDefaultOnStructAnalyzer.cs @@ -44,10 +44,11 @@ public sealed class FirstOrDefaultOnStructAnalyzer : DiagnosticAnalyzer var calledSym = operation.TargetMethod.ConstructedFrom; if (!(firstOrDefaultWithPredSym!.Matches(calledSym) || firstOrDefaultNoPredSym!.Matches(calledSym))) return; var receiverExprType = operation.SemanticModel!.GetTypeInfo((CSharpSyntaxNode) operation.Arguments[0].Syntax).ConvertedType!; - var collectionElemType = receiverExprType switch { + var collectionElemType = receiverExprType switch + { INamedTypeSymbol nts => nts.TypeArguments[0], IArrayTypeSymbol ats => ats.ElementType, - _ => throw new InvalidOperationException($"receiver parameter's effective type was of an unexpected kind (neither class/struct nor array): {receiverExprType}") + _ => throw new InvalidOperationException($"receiver parameter's effective type was of an unexpected kind (neither class/struct nor array): {receiverExprType.GetType().FullName}") }; if (collectionElemType.IsValueType) oac.ReportDiagnostic(Diagnostic.Create(DiagUseFirstOrNull, operation.Syntax.GetLocation())); }, diff --git a/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs b/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs index 7170b791e8..81e2d90318 100644 --- a/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs +++ b/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs @@ -77,7 +77,7 @@ namespace {nSpace} {{ private const string EMBED_PREFIX = ""{nSpace}.""; - private static Type[]? _types; + private static Type[]? _types = null; private static readonly Assembly Asm = typeof({nSpace}.ReflectionCache).Assembly; @@ -88,17 +88,19 @@ namespace {nSpace} public static IEnumerable EmbeddedResourceList(string extraPrefix) {{ var fullPrefix = EMBED_PREFIX + extraPrefix; - return Asm.GetManifestResourceNames().Where(s => s.StartsWith(fullPrefix, StringComparison.Ordinal)).Select(s => s.RemovePrefix(fullPrefix)); + return Asm.GetManifestResourceNames().Where(s => s.StartsWithOrdinal(fullPrefix)) // seems redundant with `RemovePrefix`, but we only want these in the final list + .Select(s => s.RemovePrefix(fullPrefix)); }} public static IEnumerable EmbeddedResourceList() - => EmbeddedResourceList(string.Empty); + => EmbeddedResourceList(string.Empty); // can't be simplified to `Asm.GetManifestResourceNames` call /// not found public static Stream EmbeddedResourceStream(string embedPath) {{ var fullPath = EMBED_PREFIX + embedPath; - return Asm.GetManifestResourceStream(fullPath) ?? throw new ArgumentException($""resource at {{fullPath}} not found"", nameof(embedPath)); + return Asm.GetManifestResourceStream(fullPath) + ?? throw new ArgumentException(paramName: nameof(embedPath), message: $""resource at {{fullPath}} not found""); }} }} }} diff --git a/References/BizHawk.Analyzer.dll b/References/BizHawk.Analyzer.dll index 15b271911729ec5b6dde2f09c78fd08ced19b3c6..286a276777c6eb0d067f9bbb038ee4aa4c30eb1e 100644 GIT binary patch delta 7269 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 KuUKog_5T2&{IPTZ delta 7275 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 X(jwPb{ocxt_{xh`Q{-<}2<`e0J)|_l delta 1104 zcmYL|U1(HC6vzKFlWfd&-QB2#DjIM0#%{LR+}^~fh}H;++PKCB;&-7K)@p5Z4bc{D zN!_q0B7(+&JV@}P8xTbe;YLM#P~2i$P?3rfC=_)CeQ7NyGz1@d=47EWoHH}O|Cw{| zd}X>bU!Oc0y>nqn4#n~eQG2TJfCPcSBy^Mgmo|p}SOa`+z&2o9^;gXZW`H1#U$+A5 zb(Ku$Eh1($))KPG68e~^42>)5ZX+upbM%HLY{;S>SAFYL@4kuH|v3HfHcAfLn=@*Obz3ykP%;dnzpZO3##^&y28nJs#Y z`(3D0=P;G}=b7ga#e~$6Nc0fYGZvn+P(T;fs{($Y&;qjLAAI?Htib^W%v7ebq7HSATR*2wT66HR(*vDv{7DYv#|6)Ag}XPPLa?rt+A{P0ibYU6gDgfiO4?{b57b2?XHvgh{5^1b&2ZD4j_*bv zEYZK#b-6`o?JYu+d+n9i12=D-|LgXr8;4c#*_qUHle*KLEyGE_*DV)1