haskell-tree-sitter icon indicating copy to clipboard operation
haskell-tree-sitter copied to clipboard

`ts_parser_parse_string` seems to hang when the parsing fails

Open balsoft opened this issue 3 years ago • 2 comments

With GHC 9.0.2, ts_parser_parse_string seems to hang if the parsing fails. Reproduce:

❯ ghci
GHCi, version 9.0.2: https://www.haskell.org/ghc/  :? for help
ghci> import Foreign
ghci> import TreeSitter.Haskell
ghci> import TreeSitter.Parser
ghci> import TreeSitter.Tree
ghci> import Foreign.C
ghci> parser <- ts_parser_new
ghci> _ <- ts_parser_set_language parser tree_sitter_haskell
ghci> (str, len) <- newCStringLen "this hangs everything"
ghci> tree <- ts_parser_parse_string parser nullPtr str len -- This hangs indefinitely
^C^CInterrupted.

The same works if the string is valid tree-sitter's Haskell grammar (including an empty string).

I have tree-sitter-haskell-0.3.0.2, tree-sitter-0.9.0.3 and ghc-9.0.2. If that matters, this is NixOS Linux, and all packages are provided from nixpkgs. The exact environment can be reproduced with NIX_PATH=nixpkgs=https://github.com/nixos/nixpkgs/archive/c5924154f000e6306030300592f4282949b2db6c.tar.gz nix-shell -p 'haskellPackages.ghcWithPackages (ps: with ps; [ tree-sitter tree-sitter-haskell ])' .

I'm not sure how to debug this further.

balsoft avatar Oct 27 '22 16:10 balsoft