diff --git a/rewriter/rewriter/src/changes.rs b/rewriter/rewriter/src/changes.rs index 0fc6f40..944a74b 100644 --- a/rewriter/rewriter/src/changes.rs +++ b/rewriter/rewriter/src/changes.rs @@ -386,7 +386,8 @@ impl JsChanges { macro_rules! tryget { ($range:expr) => { - js.get($range).ok_or_else(|| RewriterError::Oob($range))? + js.get($range) + .ok_or_else(|| RewriterError::Oob(($range).start, ($range).end))? }; } diff --git a/rewriter/rewriter/src/lib.rs b/rewriter/rewriter/src/lib.rs index 060f3e2..ecba221 100644 --- a/rewriter/rewriter/src/lib.rs +++ b/rewriter/rewriter/src/lib.rs @@ -1,5 +1,3 @@ -use std::ops::Range; - use cfg::Config; use changes::{JsChangeResult, JsChanges}; use oxc::{ @@ -18,10 +16,10 @@ mod visitor; #[derive(Error, Debug)] pub enum RewriterError { - #[error("oxc panicked in parser: {0:?}")] - OxcPanicked(Vec), - #[error("out of bounds while applying range: {0:?})")] - Oob(Range), + #[error("oxc panicked in parser: {0}")] + OxcPanicked(String), + #[error("out of bounds while applying range: {0}..{1})")] + Oob(usize, usize), } #[derive(Debug)] @@ -49,7 +47,12 @@ where .parse(); if ret.panicked { - return Err(RewriterError::OxcPanicked(ret.errors)); + let mut errors = String::new(); + for error in ret.errors { + errors.push_str(&format!("{}", error)); + errors.push('\n'); + } + return Err(RewriterError::OxcPanicked(errors)); } let mut visitor = Visitor { diff --git a/rewriter/wasm/build.sh b/rewriter/wasm/build.sh index 3ffb8dd..7234cf1 100644 --- a/rewriter/wasm/build.sh +++ b/rewriter/wasm/build.sh @@ -29,7 +29,46 @@ sed -i 's/import.meta.url/""/g' out/wasm.js cd ../../ -wasm-snip rewriter/wasm/out/wasm_bg.wasm -o rewriter/wasm/out/wasm_snipped.wasm -p 'oxc_regular_expression::.*' +wasm-snip rewriter/wasm/out/wasm_bg.wasm -o rewriter/wasm/out/wasm_snipped.wasm \ + -p 'oxc_regular_expression::.*' \ + 'oxc_parser::ts::types::::parse_non_array_type' \ + 'oxc_parser::ts::statement::::parse_declaration' \ + 'oxc_parser::ts::types::::parse_ts_import_type' \ + 'oxc_parser::ts::types::::parse_type_operator_or_higher' \ + 'oxc_parser::ts::statement::::parse_ts_interface_declaration' \ + 'oxc_parser::ts::types::::parse_mapped_type' \ + 'oxc_parser::ts::types::::parse_index_signature_declaration' \ + 'oxc_parser::ts::statement::::parse_ts_import_equals_declaration' \ + 'oxc_parser::ts::types::::parse_type_or_type_predicate' \ + 'oxc_parser::ts::statement::::parse_ts_namespace_or_module_declaration_body' \ + 'oxc_parser::ts::types::::parse_ts_implements_clause' \ + 'oxc_parser::ts::types::::parse_intersection_type_or_higher' \ + 'oxc_parser::ts::types::::parse_ts_type_name' \ + 'oxc_parser::ts::types::::parse_literal_type_node' \ + 'oxc_parser::ts::types::::parse_asserts_type_predicate' \ + 'oxc_parser::ts::types::::parse_tuple_element_type' \ + 'oxc_parser::ts::types::::parse_type_arguments_of_type_reference' \ + 'oxc_parser::ts::types::::parse_ts_call_signature_member' \ + 'oxc_parser::ts::types::::is_start_of_type' \ + 'oxc_parser::ts::types::::parse_this_type_predicate' \ + 'oxc_parser::ts::types::::parse_type_query' \ + 'oxc_parser::ts::types::::parse_type_reference' \ + 'oxc_parser::ts::types::::parse_type_operator' \ + 'oxc_parser::ts::types::::parse_type_literal' \ + 'oxc_parser::ts::statement::::is_at_enum_declaration' +# +# these are confirmed to break oxc +# 'oxc_parser::ts::types::::parse_ts_type' \ +# 'oxc_parser::ts::types::::parse_type_arguments_in_expression' \ +# 'oxc_parser::ts::types::::parse_ts_type_parameters' \ +# 'oxc_parser::ts::types::::parse_class_element_modifiers' \ +# 'oxc_parser::ts::statement::::eat_decorators' \ +# 'oxc_parser::ts::statement::::is_nth_at_modifier' \ +# 'oxc_parser::ts::types::::try_parse_type_arguments' \ +# 'oxc_parser::ts::statement::::is_at_ts_index_signature_member' \ +# 'oxc_parser::ts::types::::parse_ts_return_type_annotation' \ +# 'oxc_parser::ts::statement::::parse_ts_type_annotation' \ + # shellcheck disable=SC2086 time wasm-opt $WASMOPTFLAGS --converge -tnh -O4 --vacuum --dce --enable-threads --enable-bulk-memory --enable-simd rewriter/wasm/out/wasm_snipped.wasm -o rewriter/wasm/out/optimized.wasm