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