`len` could contain side effects and may result in different values when
substituted twice in the template expansion. Instead, capture the result
of substituting `len` once.
closes: #21538
* Add a test case
There are way more test cases (See all branches of analyseIfAddressTaken but this covers at least a second branch
* Port analyseIfAddressTaken from semexprs to sigmatch
This was done since we cannot import sem or semexprs (circular import) but we need the rest of the logic. In needs to be done here since the converter isn't semmed afterwards and so we can't just leave the process til later use the version from semexprs
* Less hacky solution which has the checking be done in analyseIfAddressTakenInCall
This was done instead of the recommendation on removing it since sfAddrTaken is used in places other than the backend
* Remove weird whitespace
* Still check nkHiddenAddr if we are checking a converter
* Fix custom objects, fix handling of nil variables
* Rename because lldb complains about dashes in filename
* Add example of how to use custom type formatting from Nim
* Add synthetic objects with dynamic fields and add an example
* fix#18977 disallow change branch of an object variant in ORC
* check errors for goto exception
* fixes conditions
* fixes tests
* add a test case for #18977
* fixes#21306; don't transform yields in the var section when introducing new local vars
* adds `inVarSection` so the var section in the var section is freshed
* use `isIntroducingNewLocalVars` to avoid yield transformations in var sections
* fixes comments
* fixes#21023; Segfault when mixing seqs, orc, variants and futures
* fixes none of the branches were explicitly selected
* add one more test
* one more test
* finish issue #21474: a better message if dot is not found locally when using gendepend
* fix a typo in compiler
* trim empty path reported in `findNodeJs`
* compiler/main.nim: switch raise to simply quit
* Remove Defect from raises list
Since defects aren't tracked anymore this causes a hint to pop up mentioning it
* Still track Defect when getting ran with an older Nim version
The raises followed a pattern so moving them into a pragma didn't seem to cause any extra problems