diff --git a/lib/binding_rust/bindings.rs b/lib/binding_rust/bindings.rs index ceffdc21..73803082 100644 --- a/lib/binding_rust/bindings.rs +++ b/lib/binding_rust/bindings.rs @@ -397,15 +397,11 @@ extern "C" { pub fn ts_node_next_parse_state(self_: TSNode) -> TSStateId; } extern "C" { - #[doc = " Get the node's immediate parent.\n Prefer [`ts_node_child_containing_descendant`] for\n iterating over the node's ancestors."] + #[doc = " Get the node's immediate parent.\n Prefer [`ts_node_child_with_descendant`] for\n iterating over the node's ancestors."] pub fn ts_node_parent(self_: TSNode) -> TSNode; } extern "C" { - #[doc = " @deprecated use [`ts_node_contains_descendant`] instead, this will be removed in 0.25\n\n Get the node's child containing `descendant`. This will not return\n the descendant if it is a direct child of `self`, for that use\n `ts_node_contains_descendant`."] - pub fn ts_node_child_containing_descendant(self_: TSNode, descendant: TSNode) -> TSNode; -} -extern "C" { - #[doc = " Get the node that contains `descendant`.\n\n Note that this can return `descendant` itself, unlike the deprecated function\n [`ts_node_child_containing_descendant`]."] + #[doc = " Get the node that contains `descendant`.\n\n Note that this can return `descendant` itself."] pub fn ts_node_child_with_descendant(self_: TSNode, descendant: TSNode) -> TSNode; } extern "C" { diff --git a/lib/binding_rust/lib.rs b/lib/binding_rust/lib.rs index 749492b6..bf12896b 100644 --- a/lib/binding_rust/lib.rs +++ b/lib/binding_rust/lib.rs @@ -1886,7 +1886,7 @@ impl<'tree> Node<'tree> { } /// Get this node's immediate parent. - /// Prefer [`child_containing_descendant`](Node::child_containing_descendant) + /// Prefer [`child_with_descendant`](Node::child_with_descendant) /// for iterating over this node's ancestors. #[doc(alias = "ts_node_parent")] #[must_use] @@ -1894,20 +1894,9 @@ impl<'tree> Node<'tree> { Self::new(unsafe { ffi::ts_node_parent(self.0) }) } - /// Get this node's child containing `descendant`. This will not return - /// the descendant if it is a direct child of `self`, for that use - /// [`Node::child_with_descendant`]. - #[doc(alias = "ts_node_child_containing_descendant")] - #[must_use] - #[deprecated(since = "0.24.0", note = "Prefer child_with_descendant instead")] - pub fn child_containing_descendant(&self, descendant: Self) -> Option { - Self::new(unsafe { ffi::ts_node_child_containing_descendant(self.0, descendant.0) }) - } - /// Get the node that contains `descendant`. /// - /// Note that this can return `descendant` itself, unlike the deprecated function - /// [`Node::child_containing_descendant`]. + /// Note that this can return `descendant` itself. #[doc(alias = "ts_node_child_with_descendant")] #[must_use] pub fn child_with_descendant(&self, descendant: Self) -> Option { diff --git a/lib/include/tree_sitter/api.h b/lib/include/tree_sitter/api.h index cb34d1fc..54021acf 100644 --- a/lib/include/tree_sitter/api.h +++ b/lib/include/tree_sitter/api.h @@ -612,25 +612,15 @@ TSStateId ts_node_next_parse_state(TSNode self); /** * Get the node's immediate parent. - * Prefer [`ts_node_child_containing_descendant`] for + * Prefer [`ts_node_child_with_descendant`] for * iterating over the node's ancestors. */ TSNode ts_node_parent(TSNode self); -/** - * @deprecated use [`ts_node_contains_descendant`] instead, this will be removed in 0.25 - * - * Get the node's child containing `descendant`. This will not return - * the descendant if it is a direct child of `self`, for that use - * `ts_node_contains_descendant`. - */ -TSNode ts_node_child_containing_descendant(TSNode self, TSNode descendant); - /** * Get the node that contains `descendant`. * - * Note that this can return `descendant` itself, unlike the deprecated function - * [`ts_node_child_containing_descendant`]. + * Note that this can return `descendant` itself. */ TSNode ts_node_child_with_descendant(TSNode self, TSNode descendant); diff --git a/lib/src/node.c b/lib/src/node.c index 8af662aa..d83fa90b 100644 --- a/lib/src/node.c +++ b/lib/src/node.c @@ -557,37 +557,6 @@ TSNode ts_node_parent(TSNode self) { return node; } -TSNode ts_node_child_containing_descendant(TSNode self, TSNode descendant) { - uint32_t start_byte = ts_node_start_byte(descendant); - uint32_t end_byte = ts_node_end_byte(descendant); - bool is_empty = start_byte == end_byte; - - do { - NodeChildIterator iter = ts_node_iterate_children(&self); - do { - if ( - !ts_node_child_iterator_next(&iter, &self) - || ts_node_start_byte(self) > start_byte - || self.id == descendant.id - ) { - return ts_node__null(); - } - - // If the descendant is empty, and the end byte is within `self`, - // we check whether `self` contains it or not. - if (is_empty && iter.position.bytes >= end_byte && ts_node_child_count(self) > 0) { - TSNode child = ts_node_child_with_descendant(self, descendant); - // If the child is not null, return self if it's relevant, else return the child - if (!ts_node_is_null(child)) { - return ts_node__is_relevant(self, true) ? self : child; - } - } - } while ((is_empty ? iter.position.bytes <= end_byte : iter.position.bytes < end_byte) || ts_node_child_count(self) == 0); - } while (!ts_node__is_relevant(self, true)); - - return self; -} - TSNode ts_node_child_with_descendant(TSNode self, TSNode descendant) { uint32_t start_byte = ts_node_start_byte(descendant); uint32_t end_byte = ts_node_end_byte(descendant); diff --git a/xtask/src/check_wasm_exports.rs b/xtask/src/check_wasm_exports.rs index 4bc9e9fb..167a5019 100644 --- a/xtask/src/check_wasm_exports.rs +++ b/xtask/src/check_wasm_exports.rs @@ -15,7 +15,7 @@ use notify_debouncer_full::new_debouncer; use crate::{bail_on_err, build_wasm::run_wasm, watch_wasm, BuildWasm, CheckWasmExports}; -const EXCLUDES: [&str; 28] = [ +const EXCLUDES: [&str; 27] = [ // Unneeded because the JS side has its own way of implementing it "ts_node_child_by_field_name", "ts_node_edit", @@ -25,8 +25,6 @@ const EXCLUDES: [&str; 28] = [ "ts_node_eq", "ts_tree_cursor_current_field_name", "ts_lookahead_iterator_current_symbol_name", - // Deprecated - "ts_node_child_containing_descendant", // Not used in wasm "ts_init", "ts_set_allocator",