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 15b2719117..286a276777 100644 Binary files a/References/BizHawk.Analyzer.dll and b/References/BizHawk.Analyzer.dll differ diff --git a/References/BizHawk.SrcGen.ReflectionCache.dll b/References/BizHawk.SrcGen.ReflectionCache.dll index 6c08fb3ce8..574c2bc02e 100644 Binary files a/References/BizHawk.SrcGen.ReflectionCache.dll and b/References/BizHawk.SrcGen.ReflectionCache.dll differ