private async Task <(IReadOnlyCollection <SerializableDiagnostic> DiagnosticsInActiveBuffer, IReadOnlyCollection <SerializableDiagnostic> AllDiagnostics)> ExtractDiagnostics( Workspace workspace, BufferId activeBufferId, ScriptOptions options) { workspace = await _transformer.TransformAsync(workspace); var sourceFile = workspace.GetSourceFiles().Single(); var code = sourceFile.Text.ToString(); var compilation = CSharpScript.Create(code, options).GetCompilation(); return(workspace.MapDiagnostics( activeBufferId, compilation.GetDiagnostics())); }
private async Task <CompileWorkerResult> CompileWorker( Workspace workspace, BufferId activeBufferId, Budget budget) { var package = await _packageFinder.Find <ICreateWorkspace>(workspace.WorkspaceType); workspace = await workspace.InlineBuffersAsync(); var sources = workspace.GetSourceFiles(); var(compilation, documents) = await package.GetCompilation(sources, SourceCodeKind.Regular, workspace.Usings, () => package.CreateRoslynWorkspaceAsync(budget), budget); var(diagnosticsInActiveBuffer, allDiagnostics) = workspace.MapDiagnostics(activeBufferId, compilation.GetDiagnostics()); budget.RecordEntryAndThrowIfBudgetExceeded(); return(new CompileWorkerResult( compilation, diagnosticsInActiveBuffer, allDiagnostics)); }
public static async Task <Compilation> Compile( this Package package, Workspace workspace, Budget budget, BufferId activeBufferId) { var sourceFiles = workspace.GetSourceFiles().ToArray(); var(compilation, documents) = await package.GetCompilationForRun(sourceFiles, SourceCodeKind.Regular, workspace.Usings, budget); var viewports = workspace.ExtractViewPorts(); var diagnostics = compilation.GetDiagnostics(); if (workspace.IncludeInstrumentation && !diagnostics.ContainsError()) { var activeDocument = GetActiveDocument(documents, activeBufferId); compilation = await AugmentCompilationAsync(viewports, compilation, activeDocument, activeBufferId, package); } return(compilation); }