From 8b31fc23cd80de9baa62535e95367da7a21c9cfd Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Fri, 15 Apr 2022 15:08:09 +0100 Subject: 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. --- cli/ops/errors.rs | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) (limited to 'cli/ops/errors.rs') 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 { - let mut mappings_map: CachedMaps = HashMap::new(); - let ps = state.borrow::().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 { let diagnostic: Diagnostics = serde_json::from_value(args)?; -- cgit v1.2.3