private static SyntaxNode GetEnclosingCodeElementNode(Document document, SyntaxToken token, ICodeLensDisplayInfoService langServices, CancellationToken cancellationToken) { var syntaxFactsService = document.GetLanguageService <ISyntaxFactsService>(); var node = token.Parent; while (node != null) { cancellationToken.ThrowIfCancellationRequested(); if (syntaxFactsService.IsDocumentationComment(node)) { var structuredTriviaSyntax = (IStructuredTriviaSyntax)node; var parentTrivia = structuredTriviaSyntax.ParentTrivia; node = parentTrivia.Token.Parent; } else if (syntaxFactsService.IsDeclaration(node) || syntaxFactsService.IsUsingOrExternOrImport(node) || syntaxFactsService.IsGlobalAttribute(node)) { break; } else { node = node.Parent; } } if (node == null) { node = token.Parent; } return(langServices.GetDisplayNode(node)); }
private static SyntaxNode GetEnclosingCodeElementNode(Document document, SyntaxToken token, ICodeLensDisplayInfoService langServices) { var syntaxFactsService = document.GetLanguageService<ISyntaxFactsService>(); var node = token.Parent; while (node != null) { if (syntaxFactsService.IsDocumentationComment(node)) { var structuredTriviaSyntax = (IStructuredTriviaSyntax)node; var parentTrivia = structuredTriviaSyntax.ParentTrivia; node = parentTrivia.Token.Parent; } else if (syntaxFactsService.IsDeclaration(node) || syntaxFactsService.IsUsingOrExternOrImport(node) || syntaxFactsService.IsGlobalAttribute(node)) { break; } else { node = node.Parent; } } if (node == null) { node = token.Parent; } return langServices.GetDisplayNode(node); }