mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Produce analyzer errors for invalid generic arguments in converters and validators
Closes #103
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
@@ -16,6 +18,22 @@ internal static class RoslynExtensions
|
||||
StringComparison.Ordinal
|
||||
);
|
||||
|
||||
public static IEnumerable<INamedTypeSymbol> GetBaseTypes(this ITypeSymbol type)
|
||||
{
|
||||
var current = type.BaseType;
|
||||
|
||||
while (current is not null)
|
||||
{
|
||||
yield return current;
|
||||
current = current.BaseType;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsAssignableFrom(this ITypeSymbol target, ITypeSymbol source) =>
|
||||
SymbolEqualityComparer.Default.Equals(target, source) ||
|
||||
source.GetBaseTypes().Contains(target, SymbolEqualityComparer.Default) ||
|
||||
source.AllInterfaces.Contains(target, SymbolEqualityComparer.Default);
|
||||
|
||||
public static void HandleClassDeclaration(
|
||||
this AnalysisContext analysisContext,
|
||||
Action<SyntaxNodeAnalysisContext, ClassDeclarationSyntax, ITypeSymbol> analyze)
|
||||
|
||||
Reference in New Issue
Block a user