Skip to content

Commit 63806cf

Browse files
Less cyclomatic complexity
1 parent 83db1fd commit 63806cf

1 file changed

Lines changed: 9 additions & 23 deletions

File tree

CodeConverter/CSharp/NameExpressionNodeVisitor.cs

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -688,29 +688,15 @@ private static QualifiedNameSyntax Qualify(string qualification, ExpressionSynta
688688

689689
private static bool IsSubPartOfConditionalAccess(VBasic.Syntax.MemberAccessExpressionSyntax node)
690690
{
691-
SyntaxNode child = node;
692-
SyntaxNode parent = node.Parent;
693-
694-
while (parent != null)
695-
{
696-
// On right hand side of a ?. conditional access
697-
if (parent is VBSyntax.ConditionalAccessExpressionSyntax cae && cae.WhenNotNull == child)
698-
{
699-
return true;
700-
}
701-
702-
// Recurse outwards through chained accesses
703-
if (parent.IsKind(VBasic.SyntaxKind.InvocationExpression,
704-
VBasic.SyntaxKind.SimpleMemberAccessExpression,
705-
VBasic.SyntaxKind.ParenthesizedExpression,
706-
VBasic.SyntaxKind.ConditionalAccessExpression))
707-
{
708-
child = parent;
709-
parent = parent.Parent;
710-
}
711-
else
712-
{
713-
break;
691+
static bool IsMemberAccessChain(SyntaxNode exp) =>
692+
exp?.IsKind(VBasic.SyntaxKind.InvocationExpression,
693+
VBasic.SyntaxKind.SimpleMemberAccessExpression,
694+
VBasic.SyntaxKind.ParenthesizedExpression,
695+
VBasic.SyntaxKind.ConditionalAccessExpression) == true;
696+
697+
for (SyntaxNode child = node, parent = node.Parent; IsMemberAccessChain(parent); child = parent, parent = parent.Parent) {
698+
if (parent is VBSyntax.ConditionalAccessExpressionSyntax cae && cae.WhenNotNull == child) {
699+
return true; // On right hand side of a ?. conditional access
714700
}
715701
}
716702

0 commit comments

Comments
 (0)