Subject: Re: bug#69952: [PATCH] Support pdumping compiled queries by dumping their source

From: Yuan Fu <[email-masked]>
Date: Sun, 21 Apr 2024 23:25:10 -0700

> On Apr 21, 2024, at 11:18 PM, Eli Zaretskii <[email-masked]> wrote:
> 
>> From: Yuan Fu <[email-masked]>
>> Date: Sun, 21 Apr 2024 23:04:47 -0700
>> Cc: Daniel Colascione <[email-masked]>,
>> [email-masked],
>> [email-masked]
>> 
>>>> No. You need both tree-sitter library and the grammar library.
>>> 
>>> That's what I thought.  So starting Emacs in that case will attempt to
>>> call a function from the tree-sitter library, and will segfault,
>>> right?  If so, we should have some protection in the code in
>>> pdumper.c that loads queries, which tests that tree-sitter is
>>> availabale, and if not does something to prevent the segfault, like
>>> not loading the query, perhaps?
>> 
>> Right, it can use Ftreesit_available_p (we can define a C equivalent if pdumper can’t call lisp), and decide whether to compile the query or just keep the query as a string, or signal an error?
> 
> We cannot safely signal an error at that point, I think, so just
> keeping the query as a string should do, as it will then signal an
> error at run time when that query is used, is that right?

Yes, most likely a function-undefined signal, since all the treesit.c functions like treesit-query-capture or treesit-query-compile will be nonexistent. And usually the Lisp program trying to use the query would check for tree-sitter availability with treesit-available-p before trying to use any tree-sitter functions; so that signal will be usually avoided as well.

Yuan