1- import type { Parser , Node as SyntaxNode } from "web-tree-sitter" ;
1+ import type {
2+ QueryMatch ,
3+ QueryOptions ,
4+ Node as SyntaxNode ,
5+ } from "web-tree-sitter" ;
26import { Query } from "web-tree-sitter" ;
37import { type BasicBlock , BlockHandler } from "./cfg-defs.ts" ;
48import { evolve } from "./evolve.ts" ;
59
6- const defaultQueryOptions : Parser . QueryOptions = { maxStartDepth : 0 } ;
10+ const defaultQueryOptions : QueryOptions = { maxStartDepth : 0 } ;
711
812function matchQuery (
913 syntax : SyntaxNode ,
1014 queryString : string ,
11- options ?: Parser . QueryOptions ,
12- ) : Parser . QueryMatch {
15+ options ?: QueryOptions ,
16+ ) : QueryMatch {
1317 const language = syntax . tree . language ;
1418 const query = new Query ( language , queryString ) ;
1519 options = evolve ( defaultQueryOptions , options ?? { } ) ;
@@ -27,35 +31,32 @@ export function matchExistsIn(
2731 queryString : string ,
2832) : boolean {
2933 const language = syntax . tree . language ;
30- const query = language . query ( queryString ) ;
34+ const query = new Query ( language , queryString ) ;
3135 const matches = query . matches ( syntax ) ;
3236 return matches . length > 0 ;
3337}
3438
35- function getSyntax (
36- match : Parser . QueryMatch ,
37- name : string ,
38- ) : SyntaxNode | undefined {
39+ function getSyntax ( match : QueryMatch , name : string ) : SyntaxNode | undefined {
3940 return getSyntaxMany ( match , name ) [ 0 ] ;
4041}
4142
4243function getLastSyntax (
43- match : Parser . QueryMatch ,
44+ match : QueryMatch ,
4445 name : string ,
4546) : SyntaxNode | undefined {
4647 const many = getSyntaxMany ( match , name ) ;
4748 return many [ many . length - 1 ] ;
4849}
4950
50- function requireSyntax ( match : Parser . QueryMatch , name : string ) : SyntaxNode {
51+ function requireSyntax ( match : QueryMatch , name : string ) : SyntaxNode {
5152 const syntax = getSyntax ( match , name ) ;
5253 if ( ! syntax ) {
5354 throw new Error ( `Failed getting syntax for ${ name } ` ) ;
5455 }
5556 return syntax ;
5657}
5758
58- function getSyntaxMany ( match : Parser . QueryMatch , name : string ) : SyntaxNode [ ] {
59+ function getSyntaxMany ( match : QueryMatch , name : string ) : SyntaxNode [ ] {
5960 return match . captures
6061 . filter ( ( capture ) => capture . name === name )
6162 . map ( ( capture ) => capture . node ) ;
@@ -73,7 +74,7 @@ export class BlockMatcher {
7374 public match (
7475 syntax : SyntaxNode ,
7576 queryString : string ,
76- options ?: Parser . QueryOptions ,
77+ options ?: QueryOptions ,
7778 ) : Match {
7879 const match = matchQuery ( syntax , queryString , options ) ;
7980 return new Match ( match , this . blockHandler , this . dispatchSingle ) ;
@@ -98,12 +99,12 @@ export class BlockMatcher {
9899 * [tree-sitter query reference](https://tree-sitter.github.io/tree-sitter/using-parsers#pattern-matching-with-queries
99100 */
100101export class Match {
101- private match : Parser . QueryMatch ;
102+ private match : QueryMatch ;
102103 private blockHandler : BlockHandler ;
103104 private dispatchSingle : BlockMatcher [ "dispatchSingle" ] ;
104105
105106 constructor (
106- match : Parser . QueryMatch ,
107+ match : QueryMatch ,
107108 blockHandler : BlockHandler ,
108109 dispatchSingle : BlockMatcher [ "dispatchSingle" ] ,
109110 ) {
0 commit comments