alternative, much simpler algorithm for strict func checking (#21066)

* alternative, much simpler algorithm for strict func checking

* forgot to git add new compiler module

* new spec is incredibly simple to describe

* fixes bigints regression

* typos

* closes #16305; closes #17387; closes #20863
This commit is contained in:
Andreas Rumpf 2022-12-11 16:58:50 +01:00 • committed by GitHub
commit 3812d91390
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 187 additions and 78 deletions

View file

@ -1,9 +1,6 @@
discard """
errormsg: "'mutate' can have side effects"
nimout: '''an object reachable from 'n' is potentially mutated
tfuncs_cannot_mutate.nim(39, 15) the mutation is here
tfuncs_cannot_mutate.nim(37, 7) is the statement that connected the mutation to the parameter
'''
errormsg: "cannot mutate location select(x, z).data within a strict func"
line: 35
"""
{.experimental: "strictFuncs".}
@ -25,8 +22,7 @@ func len(n: Node): int =
it = it.ri
func doNotDistract(n: Node) =
var m = Node()
m.data = "abc"
var m = Node(data: "abc")
func select(a, b: Node): Node = b