Subject: bug#76573: closed (Re: bug#76573: 30.1; native compilation fails for record inside function)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 09 Jul 2025 08:34:02 +0000

Your bug report

#76573: 30.1; native compilation fails for record inside function

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76573: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76573
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76573: 30.1; native compilation fails for record inside function
From: Andrea Corallo <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked], Lin Jian <[email-masked]>, [email-masked], [email-masked]
Date: Wed, 09 Jul 2025 04:33:06 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Eli Zaretskii <[email-masked]> writes:

>> From: Lin Jian <[email-masked]>
>> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],
>>   [email-masked],  [email-masked]
>> Date: Tue, 17 Jun 2025 16:53:18 +0800
>> 
>> Andrea Corallo <[email-masked]> writes:
>> 
>> > Lin could you verify it works for your case?
>> 
>> I cherry-picked commit f38e969 into Emacs 30.1.  I can verify that
>> el-easydraw and emacs-aio compiles without error.
>
> Thanks.
>
> Andrea, what's next?  Should we backport to emacs-30?

Hi Eli,

I applied the patch to emacs-30.  Tests are clean here so I pushed the
backport as 05ecb2b8f02.

Closing this then.

Regards

  Andrea

Subject: 30.1; native compilation fails for record inside function
From: Lin Jian <[email-masked]>
To: [email-masked]
Cc: Andrea Corallo <[email-masked]>
Date: Wed, 26 Feb 2025 07:28:31 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Run the following shell command and you see the error.

> emacs -Q --batch --eval="(native-compile (defun foo-f () (record 'foo-r)))"
Error: error (foo-f "Type foo-r missing from typeof-types!")
  signal(error (foo-f "Type foo-r missing from typeof-types!"))
  comp--native-compile(foo-f nil nil)
  native-compile(foo-f)
  eval((native-compile (defun foo-f nil (record 'foo-r))) t)
  command-line-1(("--eval=(native-compile (defun foo-f () (record 'foo-r)))"))
  command-line()
  normal-top-level()
peculiar error: "Type foo-r missing from typeof-types!"

If you set `native-comp-speed' to -1, 0 or 1, there is no error.
> emacs -Q --batch --eval="(setopt native-comp-speed 1)" --eval="(native-compile (defun foo-f () (record 'foo-r)))"

Emacs 30.0.93 and 30.1 have this bug, while Emacs 29.4 does not.

Real world elisp packages triggering this bug are emacs-aio[1] and
el-easydraw[2].

[1]: https://github.com/skeeto/emacs-aio/issues/31
[2]: https://github.com/misohena/el-easydraw/blob/f6b0f43138693b73cb65327d28bd2a4ee1b6caa7/edraw-path.el