From 73a2808833a56d3842e173362bab1b67739420b9 Mon Sep 17 00:00:00 2001 From: Sam M Date: Wed, 7 May 2025 12:58:30 +0100 Subject: [PATCH] Fix code analysis not correctly detecting base types when inline constructors are used --- .../Statiq.CodeAnalysis/Analysis/AnalyzeSymbolVisitor.cs | 4 +++- src/extensions/Statiq.CodeAnalysis/Statiq.CodeAnalysis.csproj | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/extensions/Statiq.CodeAnalysis/Analysis/AnalyzeSymbolVisitor.cs b/src/extensions/Statiq.CodeAnalysis/Analysis/AnalyzeSymbolVisitor.cs index 0891c927..afce49f4 100644 --- a/src/extensions/Statiq.CodeAnalysis/Analysis/AnalyzeSymbolVisitor.cs +++ b/src/extensions/Statiq.CodeAnalysis/Analysis/AnalyzeSymbolVisitor.cs @@ -81,7 +81,9 @@ public AnalyzeSymbolVisitor( // Get any reflected methods we need Assembly workspacesAssembly = typeof(Workspace).Assembly; Type reflectedType = workspacesAssembly.GetType("Microsoft.CodeAnalysis.Shared.Extensions.ITypeSymbolExtensions"); - MethodInfo reflectedMethod = reflectedType.GetMethod("GetAccessibleMembersInThisAndBaseTypes"); + MethodInfo reflectedMethod = reflectedType.GetRuntimeMethods().Single(m => + m.Name.Equals("GetAccessibleMembersInThisAndBaseTypes") && + m.GetParameters()[1].ParameterType == typeof(ISymbol)); _getAccessibleMembersInThisAndBaseTypes = reflectedMethod.MakeGenericMethod(typeof(ISymbol)); Assembly csharpAssembly = typeof(CSharpCompilation).Assembly; diff --git a/src/extensions/Statiq.CodeAnalysis/Statiq.CodeAnalysis.csproj b/src/extensions/Statiq.CodeAnalysis/Statiq.CodeAnalysis.csproj index 578d993f..9f89e558 100644 --- a/src/extensions/Statiq.CodeAnalysis/Statiq.CodeAnalysis.csproj +++ b/src/extensions/Statiq.CodeAnalysis/Statiq.CodeAnalysis.csproj @@ -4,7 +4,8 @@ Statiq Static StaticContent StaticSite Blog BlogEngine CodeAnalysis Roslyn XmlDocComments DocComments - + +