C#: Skip documentation syntax in MustBeVariant analyzer

This commit is contained in:
Raul Santos 2022-12-23 02:47:34 +01:00
parent 0a0c730805
commit 256632a07e
No known key found for this signature in database
GPG key ID: B532473AE3A803E4

View file

@ -26,6 +26,10 @@ namespace Godot.SourceGenerators
private void AnalyzeNode(SyntaxNodeAnalysisContext context)
{
// Ignore syntax inside comments
if (IsInsideDocumentation(context.Node))
return;
var typeArgListSyntax = (TypeArgumentListSyntax)context.Node;
// Method invocation or variable declaration that contained the type arguments
@ -73,6 +77,26 @@ namespace Godot.SourceGenerators
}
}
/// <summary>
/// Check if the syntax node is inside a documentation syntax.
/// </summary>
/// <param name="syntax">Syntax node to check.</param>
/// <returns><see langword="true"/> if the syntax node is inside a documentation syntax.</returns>
private bool IsInsideDocumentation(SyntaxNode? syntax)
{
while (syntax != null)
{
if (syntax is DocumentationCommentTriviaSyntax)
{
return true;
}
syntax = syntax.Parent;
}
return false;
}
/// <summary>
/// Check if the given type argument is being used in a type parameter that contains
/// the <c>MustBeVariantAttribute</c>; otherwise, we ignore the attribute.