use anyhow::{anyhow, Context, Result}; use oxc_allocator::Allocator; use oxc_ast::ast::Program; use oxc_parser::Parser; use oxc_span::SourceType; use std::fs; use std::path::Path; pub fn parse_file<'a>(allocator: &'a Allocator, path: &Path) -> Result> { let source_text = fs::read_to_string(path) .with_context(|| format!("Failed to read file: {:?}", path))?; let source_text_ptr = allocator.alloc_str(&source_text); let source_type = SourceType::from_path(path).unwrap_or_default(); let parser_ret = Parser::new(allocator, source_text_ptr, source_type).parse(); if !parser_ret.errors.is_empty() { for error in parser_ret.errors { eprintln!("{:?}", error); } return Err(anyhow!("Failed to parse module: {:?}", path)); } Ok(parser_ret.program) }