diff options
author | flywind <xzsflywind@gmail.com> | 2022-01-19 19:37:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-19 12:37:30 +0100 |
commit | 5d34e81f2363e1de97916ac60b028b9a8b287a4b (patch) | |
tree | 12424f719874f262a415263b859963fee30f55b8 /compiler | |
parent | 23c4bbedcbf12a7ab87baefe589b472837d89dbf (diff) | |
download | Nim-5d34e81f2363e1de97916ac60b028b9a8b287a4b.tar.gz |
fix term rewriting with sideeffect (#19410)
* fix term rewriting with sideeffect fix #6217 * add tests * Update tests/template/template_various.nim
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/parampatterns.nim | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/parampatterns.nim b/compiler/parampatterns.nim index eb99004ab..bfbc72675 100644 --- a/compiler/parampatterns.nim +++ b/compiler/parampatterns.nim @@ -143,8 +143,11 @@ proc checkForSideEffects*(n: PNode): TSideEffectAnalysis = let s = op.sym if sfSideEffect in s.flags: return seSideEffect - # assume no side effect: - result = seNoSideEffect + elif tfNoSideEffect in op.typ.flags: + result = seNoSideEffect + else: + # assume side effect: + result = seSideEffect elif tfNoSideEffect in op.typ.flags: # indirect call without side effects: result = seNoSideEffect |