Files
Nim/tests/template
metagn 680a13a142 fix segfault in effect tracking for sym node with nil type (#24114)
fixes #24112

Sym nodes in templates that could be open are [given `nil`
type](22d2cf2175/compiler/semtempl.nim (L274))
when `--experimentalOpenSym` is disabled so that they can be semchecked
to give a warning since #24007. The first nodes of object constructors
(in this case) and in type conversions don't replace their first node
(the symbol) with a typechecked one, they only call `semTypeNode` on it
and leave it as is.

Effect tracking checks if the type of a sym node has a destructor to
check if the node type should be replaced with the sym type. But this
causes a segfault when the type of the node is nil. To fix this, we
always set the node type to the sym type if the node type is nil.

Alternatively `semObjConstr` and `semConv` could be changed to set the
type of their first node to the found type but I'm not sure if this
would break anything. They could call `semExprWithType` on the first
node but `semTypeNode` would still have to be called (maybe call it
before?). This isn't a problem if the sym node has a type but is just
nested in `nkOpenSym` or `nkOpenSymChoice` which have nil type instead
(i.e. with openSym enabled), so maybe this still is the "most general"
solution, I don't know.
2024-09-17 14:01:48 +02:00
..
2018-04-18 21:19:23 +02:00
2016-08-04 01:37:41 +02:00
2021-04-01 08:47:59 +02:00
2021-05-31 13:27:44 +02:00
2023-04-26 08:02:44 +02:00
2018-12-11 21:23:22 +01:00
2017-03-06 18:38:15 +01:00
2020-08-27 15:50:59 +02:00
2019-08-23 16:15:02 +02:00
2017-07-25 09:28:23 +02:00
2020-10-30 09:59:56 +01:00
2019-05-29 22:21:51 +02:00
2018-12-11 21:23:22 +01:00
2017-07-25 09:28:23 +02:00