private static bool ShouldCacheTriviaInfo(SyntaxNode leadingTrivia, SyntaxNode trailingTrivia) { Debug.Assert(leadingTrivia != null); if (trailingTrivia == null) { return(false); } else { return(leadingTrivia.Kind == SyntaxKind.WhitespaceTrivia && trailingTrivia.Kind == SyntaxKind.WhitespaceTrivia && trailingTrivia.FullWidth == 1 && trailingTrivia.ToFullString() == " " && leadingTrivia.FullWidth <= maximumCachedTriviaWidth); } }
private static bool ShouldCacheTriviaInfo(SyntaxNode leadingTrivia, SyntaxNode trailingTrivia) { Debug.Assert(leadingTrivia != null); if (trailingTrivia == null) { return false; } else { return leadingTrivia.Kind == SyntaxKind.WhitespaceTrivia && trailingTrivia.Kind == SyntaxKind.WhitespaceTrivia && trailingTrivia.FullWidth == 1 && trailingTrivia.ToFullString() == " " && leadingTrivia.FullWidth <= maximumCachedTriviaWidth; } }
private void FindBestMatch(Stack <SyntaxNode> stack, SyntaxNode node, out int index, out int similarity, int startIndex = 0) { index = -1; similarity = -1; int i = 0; foreach (var stackNode in stack) { if (i >= MaxSearchLength) { break; } if (i >= startIndex) { if (AreIdentical(stackNode, node)) { var sim = node.FullSpan.Length; if (sim > similarity) { index = i; similarity = sim; return; } } else if (AreSimilar(stackNode, node)) { var sim = GetSimilarity(stackNode, node); // Are these really the same? This may be expensive so only check this if // similarity is rated equal to them being identical. if (sim == node.FullSpan.Length && node.IsToken) { if (stackNode.ToFullString() == node.ToFullString()) { index = i; similarity = sim; return; } } if (sim > similarity) { index = i; similarity = sim; } } else { // check one level deep inside list node's children int j = 0; foreach (var child in stackNode.ChildNodesAndTokens()) { if (j >= MaxSearchLength) { break; } j++; if (AreIdentical(child, node)) { index = i; similarity = node.FullSpan.Length; return; } else if (AreSimilar(child, node)) { var sim = GetSimilarity(child, node); if (sim > similarity) { index = i; similarity = sim; } } } } } i++; } }