diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2022-04-15 15:08:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-15 16:08:09 +0200 |
commit | 8b31fc23cd80de9baa62535e95367da7a21c9cfd (patch) | |
tree | 994748bd06ed5b4953929392107b6beaa1c1c337 /cli/ops/errors.rs | |
parent | b4af648c1515a8e79d7a5d1b14d8a4ba9d966a72 (diff) |
refactor: Move source map lookups to core (#14274)
The following transformations gradually faced by "JsError" have all been
moved up front to "JsError::from_v8_exception()":
- finding the first non-"deno:" source line;
- moving "JsError::script_resource_name" etc. into the first error stack
in case of syntax errors;
- source mapping "JsError::script_resource_name" etc. when wrapping
the error even though the frame locations are source mapped earlier;
- removing "JsError::{script_resource_name,line_number,start_column,end_column}"
entirely in favour of "js_error.frames.get(0)".
We also no longer pass a js-side callback to "core/02_error.js" from cli.
I avoided doing this on previous occasions because the source map lookups
were in an awkward place.
Diffstat (limited to 'cli/ops/errors.rs')
-rw-r--r-- | cli/ops/errors.rs | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/cli/ops/errors.rs b/cli/ops/errors.rs index a219b462d..f0f5fce04 100644 --- a/cli/ops/errors.rs +++ b/cli/ops/errors.rs @@ -2,70 +2,22 @@ use crate::diagnostics::Diagnostics; use crate::fmt_errors::format_file_name; -use crate::proc_state::ProcState; -use crate::source_maps::get_orig_position; -use crate::source_maps::CachedMaps; use deno_core::error::AnyError; use deno_core::op; use deno_core::serde_json; use deno_core::serde_json::json; use deno_core::serde_json::Value; use deno_core::Extension; -use deno_core::OpState; -use serde::Deserialize; -use serde::Serialize; -use std::collections::HashMap; pub fn init() -> Extension { Extension::builder() .ops(vec![ - op_apply_source_map::decl(), op_format_diagnostic::decl(), op_format_file_name::decl(), ]) .build() } -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -struct ApplySourceMap { - file_name: String, - line_number: i32, - column_number: i32, -} - -#[derive(Serialize)] -#[serde(rename_all = "camelCase")] -struct AppliedSourceMap { - file_name: String, - line_number: u32, - column_number: u32, -} - -#[op] -fn op_apply_source_map( - state: &mut OpState, - args: ApplySourceMap, -) -> Result<AppliedSourceMap, AnyError> { - let mut mappings_map: CachedMaps = HashMap::new(); - let ps = state.borrow::<ProcState>().clone(); - - let (orig_file_name, orig_line_number, orig_column_number, _) = - get_orig_position( - args.file_name, - args.line_number.into(), - args.column_number.into(), - &mut mappings_map, - ps, - ); - - Ok(AppliedSourceMap { - file_name: orig_file_name, - line_number: orig_line_number as u32, - column_number: orig_column_number as u32, - }) -} - #[op] fn op_format_diagnostic(args: Value) -> Result<Value, AnyError> { let diagnostic: Diagnostics = serde_json::from_value(args)?; |