Files
Nim/compiler
metagn 75bd2d0688 shallow fold prevention for addr, nkHiddenAddr (#24322)
fixes #24305, refs #23807

Since #23014 `nkHiddenAddr` is produced to fast assign array elements in
iterators. However the array access inside this `nkHiddenAddr` can get
folded at compile time, generating invalid code. In #23807, compile time
folding of regular `addr` expressions was changed to be prevented in
`transf` but `nkHiddenAddr` was not updated alongside it.

The method for preventing folding in `addr` in #23807 was also faulty,
it should only trigger on the immediate child node of the address rather
than all nodes nested inside it. This caused a regression as outlined in
[this
comment](https://github.com/nim-lang/Nim/pull/24322#issuecomment-2419560182).

To fix both issues, `addr` and `nkHiddenAddr` now both shallowly prevent
constant folding for their immediate children.

(cherry picked from commit 52cf7dfde0)
(cherry picked from commit 7ad7ee03e5c0adb6832cbae10a62de7b68ef6fa5)
2024-10-28 09:57:30 +01:00
..
2022-09-27 10:57:47 +02:00
2022-09-27 10:57:47 +02:00
2024-06-07 15:34:34 +02:00
2024-05-21 14:52:29 +02:00
2024-05-21 14:52:29 +02:00
2017-01-07 22:35:09 +01:00
2023-06-27 22:42:48 +02:00
2019-11-28 17:13:04 +01:00
2024-05-23 13:55:23 +02:00
2023-05-06 21:27:28 +02:00
2023-05-11 10:10:51 +02:00
2021-01-12 09:36:51 +01:00
2022-03-23 20:34:53 +01:00
2022-10-17 23:48:51 +02:00
2023-07-02 22:36:05 +02:00
2024-05-21 14:52:29 +02:00
2023-06-17 05:42:05 +02:00
2023-06-17 05:42:05 +02:00

Nim Compiler

  • This directory contains the Nim compiler written in Nim.
  • Note that this code has been translated from a bootstrapping version written in Pascal.
  • So the code is not a poster child of good Nim code.

See Internals of the Nim Compiler for more information.