Minimal reproducible example:
use oxc::{allocator::Allocator, parser::Parser, semantic::SemanticBuilder, span::SourceType};
fn main() {
let source = "export const X = class Base {};";
let allocator = Allocator::default();
let parse = Parser::new(&allocator, source, SourceType::ts()).parse();
println!("parse errors: {}", parse.errors.len());
let semantic = SemanticBuilder::new()
.with_check_syntax_error(true)
.build(&parse.program);
println!("first semantic pass errors: {}", semantic.errors.len());
let semantic = SemanticBuilder::new()
.with_check_syntax_error(true)
.build(&parse.program);
println!("second semantic pass errors: {}", semantic.errors.len());
println!("semantic build completed");
}
Reproduced on 0.123.0:
[dependencies]
oxc = { version = "0.123.0", features = ["semantic"] }
Observed stack-trace for 0.123.0:
parse errors: 0
first semantic pass errors: 0
thread 'main' (10275305) panicked at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/scoping.rs:56:1:
index out of bounds
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:689:5
1: core::panicking::panic_fmt
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:80:14
2: oxc_semantic::scoping::SymbolTable::checked_idx
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/multi_index_vec.rs:232:17
3: oxc_semantic::scoping::SymbolTable::symbol_flags
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/multi_index_vec.rs:240:36
4: oxc_semantic::scoping::Scoping::symbol_flags
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/scoping.rs:352:28
5: oxc_semantic::checker::javascript::is_current_node_ambient_binding
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/checker/javascript.rs:193:24
6: oxc_semantic::checker::javascript::check_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/checker/javascript.rs:158:54
7: oxc_semantic::checker::check
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/checker/mod.rs:27:13
8: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::leave_node
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:678:13
9: oxc_ast_visit::generated::visit::walk::walk_binding_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:1458:17
10: oxc_ast_visit::generated::visit::Visit::visit_binding_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:65:9
11: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_class
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:778:18
12: oxc_ast_visit::generated::visit::walk::walk_expression
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:1398:56
13: oxc_ast_visit::generated::visit::Visit::visit_expression
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:50:9
14: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_variable_declarator
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:2253:18
15: oxc_ast_visit::generated::visit::walk::walk_variable_declarators
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:4324:21
16: oxc_ast_visit::generated::visit::Visit::visit_variable_declarators
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:1249:9
17: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_variable_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:2536:14
18: oxc_ast_visit::generated::visit::walk::walk_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:2061:61
19: oxc_ast_visit::generated::visit::Visit::visit_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:321:9
20: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_export_named_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:2100:18
21: oxc_ast_visit::generated::visit::walk::walk_module_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:2673:25
22: oxc_ast_visit::generated::visit::Visit::visit_module_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:546:9
23: oxc_ast_visit::generated::visit::walk::walk_statement
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:2025:25
24: oxc_ast_visit::generated::visit::Visit::visit_statement
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:301:9
25: oxc_ast_visit::generated::visit::walk::walk_statements
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:4253:21
26: oxc_ast_visit::generated::visit::Visit::visit_statements
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.123.0/src/generated/visit.rs:1214:9
27: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_program
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:727:14
28: oxc_semantic::builder::SemanticBuilder::build
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.123.0/src/builder.rs:275:14
29: oxc_repro::main
at ./lib/oxc-repro/src/main.rs:17:10
30: core::ops::function::FnOnce::call_once
at /Users/abhirag/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Initially reproduced on 0.112.0 with stack-trace:
parse errors: 0
first semantic pass errors: 0
thread 'main' (10309725) panicked at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_index-4.1.0/src/indexing.rs:38:10:
index out of bounds: the len is 1 but the index is 1
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/std/src/panicking.rs:689:5
1: core::panicking::panic_fmt
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:80:14
2: core::panicking::panic_bounds_check
at /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/panicking.rs:271:5
3: <I as oxc_index::indexing::IdxSliceIndex<I,T>>::index
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_index-4.1.0/src/indexing.rs:38:10
4: oxc_index::indexing::<impl core::ops::index::Index<R> for oxc_index::idxslice::IndexSlice<I,[T]>>::index
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_index-4.1.0/src/indexing.rs:201:15
5: oxc_semantic::scoping::Scoping::symbol_flags
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/scoping.rs:331:26
6: oxc_semantic::checker::javascript::is_current_node_ambient_binding
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/checker/javascript.rs:149:24
7: oxc_semantic::checker::javascript::check_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/checker/javascript.rs:114:54
8: oxc_semantic::checker::check
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/checker/mod.rs:26:13
9: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::leave_node
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:643:13
10: oxc_ast_visit::generated::visit::walk::walk_binding_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:1458:17
11: oxc_ast_visit::generated::visit::Visit::visit_binding_identifier
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:65:9
12: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_class
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:745:18
13: oxc_ast_visit::generated::visit::walk::walk_expression
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:1398:56
14: oxc_ast_visit::generated::visit::Visit::visit_expression
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:50:9
15: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_variable_declarator
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:2205:18
16: oxc_ast_visit::generated::visit::walk::walk_variable_declarators
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:4323:21
17: oxc_ast_visit::generated::visit::Visit::visit_variable_declarators
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:1249:9
18: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_variable_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:2487:14
19: oxc_ast_visit::generated::visit::walk::walk_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:2061:61
20: oxc_ast_visit::generated::visit::Visit::visit_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:321:9
21: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_export_named_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:2057:18
22: oxc_ast_visit::generated::visit::walk::walk_module_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:2672:25
23: oxc_ast_visit::generated::visit::Visit::visit_module_declaration
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:546:9
24: oxc_ast_visit::generated::visit::walk::walk_statement
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:2025:25
25: oxc_ast_visit::generated::visit::Visit::visit_statement
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:301:9
26: oxc_ast_visit::generated::visit::walk::walk_statements
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:4252:21
27: oxc_ast_visit::generated::visit::Visit::visit_statements
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_ast_visit-0.112.0/src/generated/visit.rs:1214:9
28: <oxc_semantic::builder::SemanticBuilder as oxc_ast_visit::generated::visit::Visit>::visit_program
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:692:14
29: oxc_semantic::builder::SemanticBuilder::build
at /Users/abhirag/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/oxc_semantic-0.112.0/src/builder.rs:263:14
30: oxc_check::main
at ./lib/bombadil/src/bin/oxc_check.rs:17:10
31: core::ops::function::FnOnce::call_once
at /Users/abhirag/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Minimal reproducible example:
Reproduced on
0.123.0:Observed stack-trace for
0.123.0:Initially reproduced on
0.112.0with stack-trace: