1(call
2 target: (identifier) @context
3 (arguments (alias) @name)
4 (#match? @context "^(defmodule|defprotocol)$")) @item
5
6(unary_operator
7 operator: "@" @name
8 operand: (call
9 target: (identifier) @context
10 (arguments
11 [
12 (binary_operator
13 left: (identifier) @name)
14 (binary_operator
15 left: (call
16 target: (identifier) @name
17 (arguments
18 "(" @context.extra
19 _* @context.extra
20 ")" @context.extra)))
21 ]
22 )
23)
24(#match? @context "^(callback|type|typep)$")) @item
25
26(call
27 target: (identifier) @context
28 (arguments
29 [
30 (identifier) @name
31 (call
32 target: (identifier) @name
33 (arguments
34 "(" @context.extra
35 _* @context.extra
36 ")" @context.extra))
37 (binary_operator
38 left: (call
39 target: (identifier) @name
40 (arguments
41 "(" @context.extra
42 _* @context.extra
43 ")" @context.extra))
44 operator: "when")
45 ])
46 (#match? @context "^(def|defp|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp)$")) @item