public static bool IsComplete(CSharpSyntaxNode node) { if (node == null) { return(false); } foreach (var child in node.ChildNodesAndTokens().Reverse()) { var token = child as SyntaxToken; if (token == null) { return(IsComplete((CSharpSyntaxNode)child)); } if (token.IsMissing) { return(false); } if (token.Kind != SyntaxKind.None) { return(true); } // if token was optional, consider the next one.. } return(true); }
private static int CountNonNullSlots(CSharpSyntaxNode node) { return(node.ChildNodesAndTokens().Count); }