@@ -50,10 +50,14 @@ impl<'src> QueryHelper<'src> {
5050 ///
5151 /// Panics if Tree-sitter fails to parse the query.
5252 #[ must_use]
53- pub fn new ( query_src : & str , tree : & ' src Tree , code : & ' src [ u8 ] ) -> Self {
53+ pub fn new ( query_src : & str , tree : & ' src Tree , code : & ' src str ) -> Self {
5454 let query =
5555 Query :: new ( & tree_sitter_c:: LANGUAGE . into ( ) , query_src) . expect ( "Failed to parse query" ) ;
56- Self { query, tree, code }
56+ Self {
57+ query,
58+ tree,
59+ code : code. as_bytes ( ) ,
60+ }
5761 }
5862
5963 /// Returns a reference to this helper's query.
@@ -222,7 +226,7 @@ impl<'src> QueryHelper<'src> {
222226/// - the node's text is not valid UTF-8
223227///
224228#[ must_use]
225- pub fn function_definition_name < ' code > ( node : Node , code : & ' code [ u8 ] ) -> & ' code str {
229+ pub fn function_definition_name < ' code > ( node : Node , code : & ' code str ) -> & ' code str {
226230 assert_eq ! (
227231 "function_definition" ,
228232 node. kind( ) ,
@@ -235,7 +239,7 @@ pub fn function_definition_name<'code>(node: Node, code: &'code [u8]) -> &'code
235239 . child_by_field_name ( "declarator" )
236240 . expect ( "Expected node to have a `declarator' field" ) ;
237241 }
238- node. utf8_text ( code ) . expect ( "Code is not valid UTF-8" )
242+ & code [ node. byte_range ( ) ]
239243}
240244
241245/// Gets the number of columns by which this line is indented. Tab characters (U+0009 or `'\t'`)
@@ -434,14 +438,10 @@ mod test {
434438 let mut parser = Parser :: new ( ) ;
435439 parser. set_language ( & tree_sitter_c:: LANGUAGE . into ( ) ) . unwrap ( ) ;
436440 let tree = parser. parse ( code. as_bytes ( ) , None ) . unwrap ( ) ;
437- let helper =
438- QueryHelper :: new ( "(function_definition) @function" , & tree, code. as_bytes ( ) ) ;
441+ let helper = QueryHelper :: new ( "(function_definition) @function" , & tree, code) ;
439442 helper. for_each_capture ( |label, capture| {
440443 assert_eq ! ( "function" , label) ;
441- assert_eq ! (
442- expected_name,
443- super :: function_definition_name( capture. node, code. as_bytes( ) )
444- ) ;
444+ assert_eq ! ( expected_name, super :: function_definition_name( capture. node, code) ) ;
445445 } ) ;
446446 }
447447 }
@@ -478,7 +478,7 @@ mod test {
478478 let mut parser = Parser :: new ( ) ;
479479 parser. set_language ( & tree_sitter_c:: LANGUAGE . into ( ) ) . unwrap ( ) ;
480480 let tree = parser. parse ( code. as_bytes ( ) , None ) . unwrap ( ) ;
481- let helper = QueryHelper :: new ( "(preproc_def) @define" , & tree, code. as_bytes ( ) ) ;
481+ let helper = QueryHelper :: new ( "(preproc_def) @define" , & tree, code) ;
482482 helper. for_each_capture ( |_label, capture| ranges. push ( capture. node . range ( ) ) ) ;
483483 let mut collapser = RangeCollapser :: from ( ranges. clone ( ) ) ;
484484 let group1 = collapser. next ( ) . unwrap ( ) ;
0 commit comments