Files
InterfaceGenerator/Speckle.InterfaceGenerator/SyntaxReceiver.cs
T
Adam Hathcock 1920ade855 folder rename
2024-05-17 11:49:54 +01:00

25 lines
857 B
C#

using System.Collections.Generic;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace Speckle.InterfaceGenerator;
internal class SyntaxReceiver : ISyntaxReceiver
{
public IList<TypeDeclarationSyntax> CandidateTypes { get; } = new List<TypeDeclarationSyntax>();
public void OnVisitSyntaxNode(SyntaxNode syntaxNode)
{
if (syntaxNode is TypeDeclarationSyntax typeDeclarationSyntax &&
IsClassOrRecord(typeDeclarationSyntax) &&
typeDeclarationSyntax.AttributeLists.Count > 0)
{
CandidateTypes.Add(typeDeclarationSyntax);
}
}
private static bool IsClassOrRecord(TypeDeclarationSyntax typeDeclarationSyntax)
{
return typeDeclarationSyntax is ClassDeclarationSyntax || typeDeclarationSyntax is RecordDeclarationSyntax;
}
}