diff options
| author | Marc Jakobi <marc.jakobi@tiko.energy> | 2023-10-10 10:12:36 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-10 17:12:36 +0900 |
| commit | 0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543 (patch) | |
| tree | f4485abcd220b177f1ec1ad2e98f683f043cd6f7 | |
| parent | Update parsers: beancount, vimdoc, wing (diff) | |
| download | nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar.gz nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar.bz2 nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar.lz nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar.xz nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.tar.zst nvim-treesitter-0eb1a0ad1c82e080e77e7b9d7a5e42632cefb543.zip | |
fix(haskell): prevent segfault due to anchorless queries (#5502)
| -rw-r--r-- | queries/haskell/highlights.scm | 58 | ||||
| -rw-r--r-- | tests/query/highlights/haskell/test.hs | 9 |
2 files changed, 31 insertions, 36 deletions
diff --git a/queries/haskell/highlights.scm b/queries/haskell/highlights.scm index 1340cfd46..ecd267cc4 100644 --- a/queries/haskell/highlights.scm +++ b/queries/haskell/highlights.scm @@ -162,26 +162,11 @@ ;; Functions and variables (signature name: (variable) @function) -((signature name: (variable) @variable) - (function - name: (variable) @_name - rhs: [ - (exp_literal) - (exp_apply - (exp_name - [(constructor) - (variable) - ])) - (quasiquote) - ((exp_name) . (operator)) - ]) - (#eq? @variable @_name)) ((signature name: (variable) @variable) - (function - name: (variable) @_name - rhs: (exp_infix - [ + . (function + name: (variable) @_name + rhs: [ (exp_literal) (exp_apply (exp_name @@ -190,26 +175,36 @@ ])) (quasiquote) ((exp_name) . (operator)) - ])) + ]) + (#eq? @variable @_name)) + +((signature name: (variable) @variable) + . (function + name: (variable) @_name + rhs: (exp_infix + [ + (exp_literal) + (exp_apply + (exp_name + [(constructor) + (variable) + ])) + (quasiquote) + ((exp_name) . (operator)) + ])) (#eq? @variable @_name)) ((signature name: (variable) @function) - (function - name: (variable) @_name - patterns: (patterns)) + . (function + name: (variable) @_name + patterns: (patterns)) (#eq? @function @_name)) -(signature - name: (variable) @function - type: (fun)) -((signature - name: (variable) @_name - type: (fun)) - (function - name: (variable) @function) - (#eq? @function @_name)) +;; For some reason, `(signature name: (variable) type: (fun))` doesn't work here +(signature (variable) @function . (fun)) (function name: (variable) @function) + (function name: (variable) @variable rhs: [ @@ -222,6 +217,7 @@ (quasiquote) ((exp_name) . (operator)) ]) + (function name: (variable) @variable rhs: (exp_infix [ diff --git a/tests/query/highlights/haskell/test.hs b/tests/query/highlights/haskell/test.hs index 8c9082c1a..84d41769c 100644 --- a/tests/query/highlights/haskell/test.hs +++ b/tests/query/highlights/haskell/test.hs @@ -111,16 +111,13 @@ someInfix x = fromIntegral x `myAdd` floatVal -- ^ @variable -- ^ @variable floatVal :: Double - -- ^ @variable floatVal = 5.5 -- ^ @variable -- ^ @float intVal :: Int - -- ^ @variable intVal = getInt 5 -- ^ @variable boolVal :: Bool - -- ^ @variable boolVal = bool False True $ 1 + 2 == 3 -- ^ @variable isInt :: Either Double Int -> Bool @@ -171,12 +168,14 @@ someIOaction = do -- ^ @function.call intVal :: Int --- ^ @variable intVal = 5 -- ^ @variable +intFun :: Int -> Int +intFun = 5 +-- ^ @function + mbInt :: Maybe Int --- ^ @variable mbInt = Just 5 -- ^ @variable |
