public async Task <CompletionResult> GetCompletionList(WorkspaceRequest request, Budget budget) { budget ??= new TimeBudget(TimeSpan.FromSeconds(defaultBudgetInSeconds)); var package = await _packageFinder.Find <ICreateWorkspace>(request.Workspace.WorkspaceType); var workspace = await request.Workspace.InlineBuffersAsync(); var sourceFiles = workspace.GetSourceFiles(); var(_, documents) = await package.GetCompilationForLanguageServices( sourceFiles, GetSourceCodeKind(request), GetUsings(request.Workspace), budget); var file = workspace.GetFileFromBufferId(request.ActiveBufferId); var(_, _, absolutePosition) = workspace.GetTextLocation(request.ActiveBufferId); var selectedDocument = documents.First(doc => doc.IsMatch(file)); var service = CompletionService.GetService(selectedDocument); var completionList = await service.GetCompletionsAsync(selectedDocument, absolutePosition); var semanticModel = await selectedDocument.GetSemanticModelAsync(); var diagnostics = DiagnosticsExtractor.ExtractSerializableDiagnosticsFromSemanticModel(request.ActiveBufferId, budget, semanticModel, workspace); var symbols = await Recommender.GetRecommendedSymbolsAtPositionAsync( semanticModel, absolutePosition, selectedDocument.Project.Solution.Workspace); var symbolToSymbolKey = new Dictionary <(string, int), ISymbol>(); foreach (var symbol in symbols) { var key = (symbol.Name, (int)symbol.Kind); if (!symbolToSymbolKey.ContainsKey(key)) { symbolToSymbolKey[key] = symbol; } } if (completionList == null) { return(new CompletionResult(requestId: request.RequestId, diagnostics: diagnostics)); } var completionItems = completionList.Items .Where(i => i != null) .Select(item => item.ToModel(symbolToSymbolKey, selectedDocument)); return(new CompletionResult(completionItems .Deduplicate() .ToArray(), requestId: request.RequestId, diagnostics: diagnostics)); }
public async Task <DiagnosticResult> GetDiagnostics(WorkspaceRequest request, Budget budget) { budget ??= new TimeBudget(TimeSpan.FromSeconds(defaultBudgetInSeconds)); var package = await _packageFinder.Find <ICreateWorkspace>(request.Workspace.WorkspaceType); var workspace = await request.Workspace.InlineBuffersAsync(); var sourceFiles = workspace.GetSourceFiles(); var(_, documents) = await package.GetCompilationForLanguageServices(sourceFiles, GetSourceCodeKind(request), GetUsings(request.Workspace), budget); var selectedDocument = documents.FirstOrDefault(doc => doc.IsMatch(request.ActiveBufferId.FileName)) ?? (documents.Count == 1 ? documents.Single() : null); if (selectedDocument == null) { return(new DiagnosticResult(requestId: request.RequestId)); } var diagnostics = await DiagnosticsExtractor.ExtractSerializableDiagnosticsFromDocument(request.ActiveBufferId, budget, selectedDocument, workspace); var result = new DiagnosticResult(diagnostics, request.RequestId); return(result); }
internal static DiagnosticsProvider ExtractedProvider <T>(DiagnosticsExtractor <T> extractor, T source) { //JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET: //ORIGINAL LINE: if (extractor instanceof DiagnosticsExtractor_VisitableDiagnostics<?>) if (extractor is DiagnosticsExtractor_VisitableDiagnostics <object> ) { return(new ExtractedVisitableDiagnosticsProvider <>((DiagnosticsExtractor_VisitableDiagnostics <T>)extractor, source)); } else { return(new ExtractedDiagnosticsProvider <>(extractor, source)); } }
public async Task <SignatureHelpResult> GetSignatureHelp(WorkspaceRequest request, Budget budget) { budget ??= new TimeBudget(TimeSpan.FromSeconds(defaultBudgetInSeconds)); var package = await _packageFinder.Find <ICreateWorkspace>(request.Workspace.WorkspaceType); var workspace = await request.Workspace.InlineBuffersAsync(); var sourceFiles = workspace.GetSourceFiles(); var(compilation, project) = await package.GetCompilationForLanguageServices(sourceFiles, GetSourceCodeKind(request), GetUsings(request.Workspace), budget); var documents = project.Documents.ToList(); var selectedDocument = documents.FirstOrDefault(doc => doc.IsMatch(request.ActiveBufferId.FileName)) ?? (documents.Count == 1 ? documents.Single() : null); if (selectedDocument == null) { return(new SignatureHelpResult(requestId: request.RequestId)); } var diagnostics = await DiagnosticsExtractor.ExtractSerializableDiagnosticsFromDocument(request.ActiveBufferId, budget, selectedDocument, workspace); var tree = await selectedDocument.GetSyntaxTreeAsync(); var absolutePosition = workspace.GetAbsolutePositionForGetBufferWithSpecifiedIdOrSingleBufferIfThereIsOnlyOne(request.ActiveBufferId); var syntaxNode = tree.GetRoot().FindToken(absolutePosition).Parent; var result = await SignatureHelpService.GetSignatureHelp( () => Task.FromResult(compilation.GetSemanticModel(tree)), syntaxNode, absolutePosition); result.RequestId = request.RequestId; if (diagnostics?.Count > 0) { result.Diagnostics = diagnostics; } return(result); }
internal ExtractedDiagnosticsProvider(DiagnosticsExtractor <T> extractor, T source) { this.Extractor = extractor; this.Source = source; }
public virtual void Register <T>(DiagnosticsExtractor <T> extractor, T source) { AppendProvider(ExtractedProvider(extractor, source)); }
public override Gene GenerateGene(int geneIndex) { var diagnostics = new DiagnosticsExtractor(Source).FromCode(geneIndex); return(new Gene(diagnostics)); }