@willbooster/tree-sitter-haskell 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/package.json +1 -1
- package/queries/tags.scm +140 -0
- package/tree-sitter-haskell.wasm +0 -0
- package/tree-sitter.json +2 -1
package/README.md
CHANGED
|
@@ -83,6 +83,12 @@ parser.setLanguage(await Language.load(haskell));
|
|
|
83
83
|
|
|
84
84
|
The package also ships `grammar.js` with the files in `grammar/` it loads, the queries in `queries/`, and the node types in `src/node-types.json`.
|
|
85
85
|
|
|
86
|
+
For code navigation, use `queries/tags.scm` (or `TAGS_QUERY` in Rust). It indexes module headers, top-level named functions and simple named bindings, named types and classes, class and instance methods, and syntactic variable/operator calls. A signature and each equation have separate definition locations. Call references identify the called name without resolving its binding.
|
|
87
|
+
|
|
88
|
+
Extra parentheses around a function or type declaration's head are not indexed; parenthesized operator identifiers such as `(:+:)` are supported. Call-name matching supports one extra expression-parenthesis wrapper; deeper wrappers are not indexed. Destructuring bindings, local pattern bindings and constructors (including pattern synonyms) are not indexed.
|
|
89
|
+
|
|
90
|
+
In a repository checkout, configure the CLI parser directories to include the grammar, then run `script/tree-sitter tags file.hs` to inspect the tags.
|
|
91
|
+
|
|
86
92
|
In Rust, depend on the [crate](https://crates.io/crates/willbooster-tree-sitter-haskell) and on
|
|
87
93
|
[willbooster-tree-sitter](https://crates.io/crates/willbooster-tree-sitter), the runtime this package is tested and
|
|
88
94
|
fuzzed with:
|
package/package.json
CHANGED
package/queries/tags.scm
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
(header module: (module) @name) @definition.module
|
|
2
|
+
|
|
3
|
+
(declarations
|
|
4
|
+
[
|
|
5
|
+
(function name: [(variable) @name (prefix_id (operator) @name)])
|
|
6
|
+
(function (infix operator: [(operator) @name (infix_id (variable) @name)]))
|
|
7
|
+
(signature name: [(variable) @name (prefix_id (operator) @name)])
|
|
8
|
+
(signature names: (binding_list name: [(variable) @name (prefix_id (operator) @name)]))
|
|
9
|
+
] @definition.function)
|
|
10
|
+
|
|
11
|
+
(declarations
|
|
12
|
+
(bind name: [(variable) @name (prefix_id (operator) @name)]) @definition.variable)
|
|
13
|
+
|
|
14
|
+
[
|
|
15
|
+
(class_declarations
|
|
16
|
+
[
|
|
17
|
+
(function name: [(variable) @name (prefix_id (operator) @name)])
|
|
18
|
+
(function (infix operator: [(operator) @name (infix_id (variable) @name)]))
|
|
19
|
+
(signature name: [(variable) @name (prefix_id (operator) @name)])
|
|
20
|
+
(signature names: (binding_list name: [(variable) @name (prefix_id (operator) @name)]))
|
|
21
|
+
(default_signature signature: (signature name: [(variable) @name (prefix_id (operator) @name)]))
|
|
22
|
+
(default_signature signature: (signature names: (binding_list name: [(variable) @name (prefix_id (operator) @name)])))
|
|
23
|
+
(bind name: [(variable) @name (prefix_id (operator) @name)])
|
|
24
|
+
] @definition.method)
|
|
25
|
+
(instance_declarations
|
|
26
|
+
[
|
|
27
|
+
(function name: [(variable) @name (prefix_id (operator) @name)])
|
|
28
|
+
(function (infix operator: [(operator) @name (infix_id (variable) @name)]))
|
|
29
|
+
(signature name: [(variable) @name (prefix_id (operator) @name)])
|
|
30
|
+
(signature names: (binding_list name: [(variable) @name (prefix_id (operator) @name)]))
|
|
31
|
+
(bind name: [(variable) @name (prefix_id (operator) @name)])
|
|
32
|
+
] @definition.method)
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[
|
|
36
|
+
(type_synonym name: [
|
|
37
|
+
(name) @name
|
|
38
|
+
(qualified id: (name) @name)
|
|
39
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
40
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
41
|
+
])
|
|
42
|
+
(type_family name: [
|
|
43
|
+
(name) @name
|
|
44
|
+
(qualified id: (name) @name)
|
|
45
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
46
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
47
|
+
])
|
|
48
|
+
(data_family name: [
|
|
49
|
+
(name) @name
|
|
50
|
+
(qualified id: (name) @name)
|
|
51
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
52
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
53
|
+
])
|
|
54
|
+
] @definition.class
|
|
55
|
+
|
|
56
|
+
[
|
|
57
|
+
(type_synonym (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]) "=")
|
|
58
|
+
(type_family . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
59
|
+
(data_family . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
60
|
+
] @definition.class
|
|
61
|
+
|
|
62
|
+
(declarations
|
|
63
|
+
[
|
|
64
|
+
(data_type name: [
|
|
65
|
+
(name) @name
|
|
66
|
+
(qualified id: (name) @name)
|
|
67
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
68
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
69
|
+
])
|
|
70
|
+
(newtype name: [
|
|
71
|
+
(name) @name
|
|
72
|
+
(qualified id: (name) @name)
|
|
73
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
74
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
75
|
+
])
|
|
76
|
+
(data_type . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
77
|
+
(data_type . [(cpp) (comment) (haddock) (pragma)]* . (context) . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
78
|
+
(newtype . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
79
|
+
(newtype . [(cpp) (comment) (haddock) (pragma)]* . (context) . [(cpp) (comment) (haddock) (pragma)]* . (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)]))
|
|
80
|
+
] @definition.class)
|
|
81
|
+
|
|
82
|
+
(class name: [
|
|
83
|
+
(name) @name
|
|
84
|
+
(qualified id: (name) @name)
|
|
85
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
86
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
87
|
+
]) @definition.interface
|
|
88
|
+
(class (infix operator: [(constructor_operator) @name (operator) @name (infix_id (name) @name)])) @definition.interface
|
|
89
|
+
(instance name: [
|
|
90
|
+
(name) @name
|
|
91
|
+
(qualified id: (name) @name)
|
|
92
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
93
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
94
|
+
]) @reference.implementation
|
|
95
|
+
(instance (infix operator: [
|
|
96
|
+
(constructor_operator) @name
|
|
97
|
+
(operator) @name
|
|
98
|
+
(infix_id (name) @name)
|
|
99
|
+
(qualified id: [(constructor_operator) @name (operator) @name])
|
|
100
|
+
(infix_id (qualified id: (name) @name))
|
|
101
|
+
])) @reference.implementation
|
|
102
|
+
|
|
103
|
+
(deriving_instance name: [
|
|
104
|
+
(name) @name
|
|
105
|
+
(qualified id: (name) @name)
|
|
106
|
+
(prefix_id [(operator) @name (constructor_operator) @name])
|
|
107
|
+
(prefix_id (qualified id: [(operator) @name (constructor_operator) @name]))
|
|
108
|
+
]) @reference.implementation
|
|
109
|
+
(deriving_instance (infix operator: [
|
|
110
|
+
(constructor_operator) @name
|
|
111
|
+
(operator) @name
|
|
112
|
+
(infix_id (name) @name)
|
|
113
|
+
(qualified id: [(constructor_operator) @name (operator) @name])
|
|
114
|
+
(infix_id (qualified id: (name) @name))
|
|
115
|
+
])) @reference.implementation
|
|
116
|
+
|
|
117
|
+
(foreign_import
|
|
118
|
+
signature: (signature name: [(variable) @name (prefix_id (operator) @name)])) @definition.function
|
|
119
|
+
|
|
120
|
+
(expression/apply
|
|
121
|
+
function: [
|
|
122
|
+
(variable) @name
|
|
123
|
+
(qualified id: (variable) @name)
|
|
124
|
+
(prefix_id (operator) @name)
|
|
125
|
+
(prefix_id (qualified id: (operator) @name))
|
|
126
|
+
(parens expression: [
|
|
127
|
+
(variable) @name
|
|
128
|
+
(qualified id: (variable) @name)
|
|
129
|
+
(prefix_id (operator) @name)
|
|
130
|
+
(prefix_id (qualified id: (operator) @name))
|
|
131
|
+
])
|
|
132
|
+
]) @reference.call
|
|
133
|
+
|
|
134
|
+
(expression/infix
|
|
135
|
+
operator: [
|
|
136
|
+
(operator) @name
|
|
137
|
+
(infix_id (variable) @name)
|
|
138
|
+
(infix_id (qualified id: (variable) @name))
|
|
139
|
+
(qualified id: (operator) @name)
|
|
140
|
+
]) @reference.call
|
package/tree-sitter-haskell.wasm
CHANGED
|
Binary file
|
package/tree-sitter.json
CHANGED
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
"hs-boot"
|
|
12
12
|
],
|
|
13
13
|
"highlights": "queries/highlights.scm",
|
|
14
|
+
"tags": "queries/tags.scm",
|
|
14
15
|
"injection-regex": "^(hs|haskell)$"
|
|
15
16
|
}
|
|
16
17
|
],
|
|
17
18
|
"metadata": {
|
|
18
|
-
"version": "4.
|
|
19
|
+
"version": "4.1.0",
|
|
19
20
|
"license": "MIT",
|
|
20
21
|
"description": "Haskell grammar for tree-sitter",
|
|
21
22
|
"authors": [
|