fix(rust): correct indices for Node::utf16_text

This commit is contained in:
Will Lillis 2025-07-16 00:27:18 -04:00
parent 32c88194f5
commit d3c2fed4b3
2 changed files with 14 additions and 1 deletions

View file

@ -107,6 +107,19 @@ fn test_text_provider_for_arc_of_bytes_slice() {
check_parsing(text.clone(), text.as_ref());
}
#[test]
fn test_text_provider_for_vec_utf16_text() {
let source_text = "你好".encode_utf16().collect::<Vec<_>>();
let language = get_language("c");
let mut parser = Parser::new();
parser.set_language(&language).unwrap();
let tree = parser.parse_utf16_le(&source_text, None).unwrap();
let tree_text = tree.root_node().utf16_text(&source_text);
assert_eq!(source_text, tree_text);
}
#[test]
fn test_text_provider_callback_with_str_slice() {
let text: &str = "// comment";

View file

@ -2067,7 +2067,7 @@ impl<'tree> Node<'tree> {
#[must_use]
pub fn utf16_text<'a>(&self, source: &'a [u16]) -> &'a [u16] {
&source[self.start_byte()..self.end_byte()]
&source[self.start_byte() / 2..self.end_byte() / 2]
}
/// Create a new [`TreeCursor`] starting from this node.