Skip to content

feat: support locateFile for target wasm32 #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions crates/tree-sitter-facade/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ pub use tree_cursor::*;

use wasm_bindgen::prelude::*;

#[cfg(target_arch = "wasm32")]
pub use js_sys::Object;

pub struct TreeSitter;

impl TreeSitter {
Expand All @@ -38,7 +41,7 @@ impl TreeSitter {
}

#[cfg(target_arch = "wasm32")]
pub async fn init() -> Result<(), JsError> {
web_tree_sitter_sg::TreeSitter::init().await
pub async fn init(options: Option<Object>) -> Result<(), JsError> {
web_tree_sitter_sg::TreeSitter::init(options).await
}
}
6 changes: 3 additions & 3 deletions crates/web-tree-sitter-sg/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ thread_local! {
pub struct TreeSitter;

impl TreeSitter {
pub async fn init() -> Result<(), JsError> {
pub async fn init(options: Option<Object>) -> Result<(), JsError> {
#![allow(non_snake_case)]

// Exit early if `web-tree-sitter` is already initialized
if TREE_SITTER_INITIALIZED.with(|cell| *cell.borrow()) {
return Ok(());
}

JsFuture::from(Parser::init()).await.lift_error()?;
JsFuture::from(Parser::init(options)).await.lift_error()?;

// Set `web-tree-sitter` to initialized
TREE_SITTER_INITIALIZED.with(|cell| cell.replace(true));
Expand Down Expand Up @@ -857,7 +857,7 @@ extern {

// Static Methods
#[wasm_bindgen(static_method_of = Parser)]
pub fn init() -> Promise;
pub fn init(options: Option<Object>) -> Promise;

// Constructor

Expand Down
14 changes: 7 additions & 7 deletions crates/web-tree-sitter-sg/tests/node/edit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn new() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let _edit = <Edit as Default>::default();
Ok(())
}
Expand All @@ -15,7 +15,7 @@ async fn new() {
#[wasm_bindgen_test]
async fn start_index() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.start_index();
Ok(())
Expand All @@ -26,7 +26,7 @@ async fn start_index() {
#[wasm_bindgen_test]
async fn old_end_index() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.old_end_index();
Ok(())
Expand All @@ -37,7 +37,7 @@ async fn old_end_index() {
#[wasm_bindgen_test]
async fn new_end_index() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.new_end_index();
Ok(())
Expand All @@ -48,7 +48,7 @@ async fn new_end_index() {
#[wasm_bindgen_test]
async fn start_position() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.new_end_index();
Ok(())
Expand All @@ -59,7 +59,7 @@ async fn start_position() {
#[wasm_bindgen_test]
async fn old_end_position() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.new_end_index();
Ok(())
Expand All @@ -70,7 +70,7 @@ async fn old_end_position() {
#[wasm_bindgen_test]
async fn new_end_position() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let edit = <Edit as Default>::default();
let _ = edit.new_end_index();
Ok(())
Expand Down
26 changes: 13 additions & 13 deletions crates/web-tree-sitter-sg/tests/node/language.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn load_bytes() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let bytes: &[u8] = include_bytes!("../tree-sitter-javascript.wasm");
web_tree_sitter_sg::Language::load_bytes(&bytes.into()).await?;
Ok(())
Expand All @@ -16,7 +16,7 @@ async fn load_bytes() {
#[wasm_bindgen_test]
async fn load_path() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
crate::util::language::load().await?;
Ok(())
}
Expand All @@ -26,7 +26,7 @@ async fn load_path() {
#[wasm_bindgen_test]
async fn abi_version() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
assert_eq!(14, language.abi_version());
Ok(())
Expand All @@ -37,7 +37,7 @@ async fn abi_version() {
#[wasm_bindgen_test]
async fn field_count() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
assert_eq!(38, language.field_count());
Ok(())
Expand All @@ -48,7 +48,7 @@ async fn field_count() {
#[wasm_bindgen_test]
async fn node_kind_count() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
assert_eq!(271, language.node_kind_count());
Ok(())
Expand All @@ -59,7 +59,7 @@ async fn node_kind_count() {
#[wasm_bindgen_test]
async fn field_name_for_id() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
assert_eq!(Some(13), language.field_id_for_name("decorator"));
Ok(())
Expand All @@ -70,7 +70,7 @@ async fn field_name_for_id() {
#[wasm_bindgen_test]
async fn field_id_for_name() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
assert_eq!(Some("decorator".into()), language.field_name_for_id(13));
Ok(())
Expand All @@ -81,7 +81,7 @@ async fn field_id_for_name() {
#[wasm_bindgen_test]
async fn id_for_node_kind() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let kind = "export_statement";
let named = true;
Expand All @@ -94,7 +94,7 @@ async fn id_for_node_kind() {
#[wasm_bindgen_test]
async fn node_kind_for_id() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let kind_id = 137;
assert_eq!(Some("export_statement".into()), language.node_kind_for_id(kind_id));
Expand All @@ -107,7 +107,7 @@ async fn node_kind_for_id() {
async fn node_kind_is_named() {
#[allow(clippy::bool_assert_comparison)]
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let kind_id = 4;
assert_eq!(Some("*".into()), language.node_kind_for_id(kind_id));
Expand All @@ -121,7 +121,7 @@ async fn node_kind_is_named() {
async fn node_kind_is_visible() {
#[allow(clippy::bool_assert_comparison)]
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let kind_id = 267;
assert_eq!(true, language.node_kind_is_visible(kind_id));
Expand All @@ -137,7 +137,7 @@ async fn node_kind_is_visible() {
#[wasm_bindgen_test]
async fn query() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let query = r###"
(function_declaration name: (identifier) @fn-def)
Expand All @@ -153,7 +153,7 @@ async fn query() {
#[wasm_bindgen_test]
async fn query_throws() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let language = crate::util::language::load().await?;
let query = r###"
(function_declaration wat)
Expand Down
4 changes: 2 additions & 2 deletions crates/web-tree-sitter-sg/tests/node/parse_options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn new() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let _options = <ParseOptions as Default>::default();
Ok(())
}
Expand All @@ -15,7 +15,7 @@ async fn new() {
#[wasm_bindgen_test]
async fn included_ranges() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let options = <ParseOptions as Default>::default();
let _included_ranges = options.included_ranges();
Ok(())
Expand Down
14 changes: 7 additions & 7 deletions crates/web-tree-sitter-sg/tests/node/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn new() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let _parser = Parser::new()?;
Ok(())
}
Expand All @@ -18,7 +18,7 @@ async fn new() {
#[wasm_bindgen_test]
async fn delete() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
parser.delete();
Ok(())
Expand All @@ -29,7 +29,7 @@ async fn delete() {
#[wasm_bindgen_test]
async fn parse_with_function() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand All @@ -49,7 +49,7 @@ async fn parse_with_function() {
#[wasm_bindgen_test]
async fn parse_with_string() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand All @@ -67,7 +67,7 @@ async fn parse_with_string() {
#[wasm_bindgen_test]
async fn reset() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
parser.reset();
Ok(())
Expand All @@ -78,7 +78,7 @@ async fn reset() {
#[wasm_bindgen_test]
async fn set_get_language() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;

Expand All @@ -96,7 +96,7 @@ async fn set_get_language() {
#[wasm_bindgen_test]
async fn set_get_logger() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand Down
6 changes: 3 additions & 3 deletions crates/web-tree-sitter-sg/tests/node/point.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn new() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let _point = <Point as Default>::default();
Ok(())
}
Expand All @@ -15,7 +15,7 @@ async fn new() {
#[wasm_bindgen_test]
async fn row() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let point = <Point as Default>::default();
let _row = point.row();
Ok(())
Expand All @@ -26,7 +26,7 @@ async fn row() {
#[wasm_bindgen_test]
async fn column() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let point = <Point as Default>::default();
let _column = point.column();
Ok(())
Expand Down
4 changes: 2 additions & 2 deletions crates/web-tree-sitter-sg/tests/node/predicate_operand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn name() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand Down Expand Up @@ -36,7 +36,7 @@ async fn name() {
#[wasm_bindgen_test]
async fn type_() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand Down
4 changes: 2 additions & 2 deletions crates/web-tree-sitter-sg/tests/node/predicate_result.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use web_tree_sitter_sg::*;
#[wasm_bindgen_test]
async fn operator() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand Down Expand Up @@ -34,7 +34,7 @@ async fn operator() {
#[wasm_bindgen_test]
async fn operands() {
async fn inner() -> Result<(), JsValue> {
TreeSitter::init().await?;
TreeSitter::init(None).await?;
let parser = Parser::new()?;
let language = crate::util::language::load().await?;
parser.set_language(Some(&language))?;
Expand Down
Loading