1
- /** @type {typeof import('tree-sitter') } */
2
- const Parser = require ( "../index.js" ) ;
1
+ /// <reference path="../tree-sitter.d.ts" />
2
+ /** @type {typeof import("tree-sitter") } */
3
+ const Parser = require ( "../index" ) ;
3
4
4
5
const C = require ( 'tree-sitter-c' ) ;
5
6
const EmbeddedTemplate = require ( 'tree-sitter-embedded-template' ) ;
@@ -64,17 +65,15 @@ describe("Node", () => {
64
65
` ) ;
65
66
66
67
const classNode = tree . rootNode . firstChild ;
67
- // @ts -ignore
68
68
assert . deepEqual ( classNode . fields , [ 'bodyNode' , 'decoratorNodes' , 'nameNode' ] )
69
69
70
- // @ts -ignore
71
70
const methodNode = classNode . bodyNode . firstNamedChild ;
72
71
assert . equal ( methodNode . constructor . name , 'MethodDefinitionNode' ) ;
73
72
assert . equal ( methodNode . nameNode . text , 'b' ) ;
74
73
assert . deepEqual ( methodNode . fields , [ 'bodyNode' , 'decoratorNodes' , 'nameNode' , 'parametersNode' ] )
75
74
76
75
const decoratorNodes = methodNode . decoratorNodes ;
77
- assert . deepEqual ( decoratorNodes . map ( _ => _ . text ) , [ '@autobind' , '@something' ] )
76
+ assert . deepEqual ( decoratorNodes . map ( n => n . text ) , [ '@autobind' , '@something' ] )
78
77
79
78
const paramsNode = methodNode . parametersNode ;
80
79
assert . equal ( paramsNode . constructor . name , 'FormalParametersNode' ) ;
@@ -707,14 +706,14 @@ describe("Node", () => {
707
706
708
707
describe ( ".text" , ( ) => {
709
708
Object . entries ( {
710
- '.parse(String)' : ( parser , src ) => parser . parse ( src ) ,
711
- '.parse(Function)' : ( parser , src ) =>
712
- parser . parse ( offset => src . substr ( offset , 4 ) ) ,
709
+ '.parse(String)' : ( /** @type { import('tree-sitter') } */ parser , /** @type { string } */ src ) => parser . parse ( src ) ,
710
+ '.parse(Function)' : ( /** @type { import('tree-sitter') } */ parser , /** @type { string } */ src ) =>
711
+ parser . parse ( offset => src . substring ( offset , offset + 4 ) ) ,
713
712
} ) . forEach ( ( [ method , parse ] ) =>
714
713
it ( `returns the text of a node generated by ${ method } ` , async ( ) => {
715
714
const src = "α0 / b👎c👎"
716
715
const [ numeratorSrc , denominatorSrc ] = src . split ( / \s * \/ \s + / )
717
- const tree = await parse ( parser , src )
716
+ const tree = parse ( parser , src )
718
717
const quotientNode = tree . rootNode . firstChild . firstChild ;
719
718
const [ numerator , slash , denominator ] = quotientNode . children ;
720
719
@@ -921,10 +920,8 @@ describe("Node", () => {
921
920
it ( "shouldn't segfault when accessing properties on the prototype" , ( ) => {
922
921
const tree = parser . parse ( '2 + 2' ) ;
923
922
const nodePrototype = Object . getPrototypeOf ( tree . rootNode ) ;
924
- // const nodePrototype = tree.rootNode.__proto__;
925
923
926
924
const properties = [
927
- "type" ,
928
925
"typeId" ,
929
926
"isNamed" ,
930
927
"isMissing" ,
@@ -950,6 +947,9 @@ describe("Node", () => {
950
947
"previousSibling" ,
951
948
"previousNamedSibling" ,
952
949
] ;
950
+ if ( nodePrototype . constructor . name === "SyntaxNode" ) {
951
+ assert . throws ( ( ) => { nodePrototype . type ; } , TypeError )
952
+ }
953
953
for ( const property of properties ) {
954
954
assert . throws ( ( ) => { nodePrototype [ property ] ; } , TypeError )
955
955
}
0 commit comments