From aa97ea1ad43596ed368a597bde0885686dc59c9c Mon Sep 17 00:00:00 2001 From: martincostello Date: Fri, 1 Aug 2025 11:39:15 +0100 Subject: [PATCH] [Mvc] Avoid exception in route analyzer Resolves #59735. --- src/Shared/Roslyn/MvcFacts.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Shared/Roslyn/MvcFacts.cs b/src/Shared/Roslyn/MvcFacts.cs index f8408803a598..d4c74f64fb78 100644 --- a/src/Shared/Roslyn/MvcFacts.cs +++ b/src/Shared/Roslyn/MvcFacts.cs @@ -70,7 +70,8 @@ public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol non } // Overridden methods from Object class, e.g. Equals(Object), GetHashCode(), etc., are not valid. - if (GetDeclaringType(method).SpecialType == SpecialType.System_Object) + var declaringType = GetDeclaringType(method); + if (declaringType == null || declaringType.SpecialType == SpecialType.System_Object) { return false; } @@ -98,13 +99,13 @@ public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol non return method.DeclaredAccessibility == Accessibility.Public; } - private static INamedTypeSymbol GetDeclaringType(IMethodSymbol method) + private static INamedTypeSymbol? GetDeclaringType(IMethodSymbol method) { while (method.IsOverride) { if (method.OverriddenMethod == null) { - throw new InvalidOperationException($"{nameof(method.OverriddenMethod)} cannot be null."); + return null; } method = method.OverriddenMethod;