Locals matching "when" operator, add pipe queries

This commit is contained in:
Connor Lay (Clay) 2021-10-08 13:26:46 -07:00 committed by Stephan Seitz
parent 25b28f6185
commit 725ef8fc18
2 changed files with 95 additions and 62 deletions

View file

@ -86,16 +86,16 @@
(stab_clause
operator: _ @operator)
; Calling a local function
; Local Function Calls
(call target: (identifier) @function)
; Calling a remote function
; Remove Function Calls
(call target: (dot left: [
(atom) @type
(_)
] right: (identifier) @function) (arguments))
; Calling a local def function
; Definition Function Calls
(call target: ((identifier) @keyword.function (#any-of? @keyword.function
"def"
"defdelegate"
@ -142,7 +142,7 @@
"with"
)))
; Special constants
; Special Constants
((identifier) @constant.builtin (#any-of? @constant.builtin
"__CALLER__"
"__DIR__"
@ -182,6 +182,11 @@
)
])
; Pipe Operator
(binary_operator
operator: "|>"
right: (identifier) @function)
; Module attributes
(unary_operator
operator: "@" @constant

View file

@ -1,7 +1,3 @@
; Scopes
(call (do_block)) @scope
(stab_clause) @scope
; References
(identifier) @reference
(alias) @reference
@ -11,39 +7,6 @@
target: ((identifier) @_identifier (#eq? @_identifier "defmodule"))
(arguments (alias) @definition.type))
; Local Function Definitions
; TODO: add support for test blocks
; test "foo", %{conn: conn} do
(call
target: ((identifier) @_identifier (#any-of? @_identifier "def" "defp" "defmacro" "defmacrop" "defguard" "defguardp" "defn" "defnp" "for"))
(arguments [
(identifier) @definition.function
(binary_operator left: (identifier) @definition.function)
(call target: (identifier) @definition.function (arguments [
(identifier) @definition.parameter
(_ (identifier) @definition.parameter)
(_ (_ (identifier) @definition.parameter))
(_ (_ (_ (identifier) @definition.parameter)))
(_ (_ (_ (_ (identifier) @definition.parameter))))
(_ (_ (_ (_ (_ (identifier) @definition.parameter)))))
(_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))
(_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))))))
]))
]?) (#set! definition.function.scope parent))
; Pattern Match Definitions
(binary_operator left: [
(identifier) @definition.var
@ -70,27 +33,55 @@
] operator: "=")
; Stab Clause Definitions
(stab_clause left: [
(_ (identifier) @definition.var)
(_ (_ (identifier) @definition.var))
(_ (_ (_ (identifier) @definition.var)))
(_ (_ (_ (_ (identifier) @definition.var))))
(_ (_ (_ (_ (_ (identifier) @definition.var)))))
(_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))
(_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))))
(stab_clause
left: [
(arguments [
(identifier) @definition.var
(_ (identifier) @definition.var)
(_ (_ (identifier) @definition.var))
(_ (_ (_ (identifier) @definition.var)))
(_ (_ (_ (_ (identifier) @definition.var))))
(_ (_ (_ (_ (_ (identifier) @definition.var)))))
(_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))
(_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))))
])
(binary_operator
left: (arguments [
(identifier) @definition.var
(_ (identifier) @definition.var)
(_ (_ (identifier) @definition.var))
(_ (_ (_ (identifier) @definition.var)))
(_ (_ (_ (_ (identifier) @definition.var))))
(_ (_ (_ (_ (_ (identifier) @definition.var)))))
(_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))
(_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))))))))))))))))
]) operator: "when")
])
; Aliases
@ -104,3 +95,40 @@
(_ (_ (_ (_ (alias) @definition.import))))
]
))
; Local Function Definitions & Scopes
(call
target: ((identifier) @_identifier (#any-of? @_identifier "def" "defp" "defmacro" "defmacrop" "defguard" "defguardp" "defn" "defnp" "for"))
(arguments [
(identifier) @definition.function
(binary_operator left: (identifier) @definition.function operator: "when")
(binary_operator (identifier) @definition.parameter)
(call target: (identifier) @definition.function (arguments [
(identifier) @definition.parameter
(_ (identifier) @definition.parameter)
(_ (_ (identifier) @definition.parameter))
(_ (_ (_ (identifier) @definition.parameter)))
(_ (_ (_ (_ (identifier) @definition.parameter))))
(_ (_ (_ (_ (_ (identifier) @definition.parameter)))))
(_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))
(_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))))))))))))))
(_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))))))))))))))))
]))
]?) (#set! definition.function.scope parent)
(do_block)?
) @scope
; Stab Clause Scopes
(stab_clause) @scope