mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
8b31fc23cd
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.
30 lines
776 B
Rust
30 lines
776 B
Rust
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
|
|
|
|
use crate::diagnostics::Diagnostics;
|
|
use crate::fmt_errors::format_file_name;
|
|
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;
|
|
|
|
pub fn init() -> Extension {
|
|
Extension::builder()
|
|
.ops(vec![
|
|
op_format_diagnostic::decl(),
|
|
op_format_file_name::decl(),
|
|
])
|
|
.build()
|
|
}
|
|
|
|
#[op]
|
|
fn op_format_diagnostic(args: Value) -> Result<Value, AnyError> {
|
|
let diagnostic: Diagnostics = serde_json::from_value(args)?;
|
|
Ok(json!(diagnostic.to_string()))
|
|
}
|
|
|
|
#[op]
|
|
fn op_format_file_name(file_name: String) -> Result<String, AnyError> {
|
|
Ok(format_file_name(&file_name))
|
|
}
|