private void DisplayException(Exception e) { try { _console.SetForegroundColor(ConsoleColor.Red); if (e is FileLoadException && e.InnerException is InteractiveAssemblyLoaderException) { _console.Error.WriteLine(e.InnerException.Message); } else { _console.Error.Write(_objectFormatter.FormatException(e)); } } finally { _console.ResetColor(); } }
private bool TryBuildAndRun(Script <object> newScript, InteractiveScriptGlobals globals, ref ScriptState <object> state, ref ScriptOptions options, CancellationToken cancellationToken) { var diagnostics = newScript.Compile(cancellationToken); DisplayDiagnostics(diagnostics); if (diagnostics.HasAnyErrors()) { return(false); } try { var task = (state == null) ? newScript.RunAsync(globals, cancellationToken) : newScript.RunFromAsync(state, cancellationToken); state = task.GetAwaiter().GetResult(); } catch (FileLoadException e) when(e.InnerException is InteractiveAssemblyLoaderException) { _console.ForegroundColor = ConsoleColor.Red; _console.Error.WriteLine(e.InnerException.Message); _console.ResetColor(); return(false); } catch (Exception e) { DisplayException(e); return(false); } options = UpdateOptions(options, globals); return(true); }