Disallow nil dereference at compile time (#16032)

* bring back the semfold of nil

* remove space

* fix test

* proc type can't be dereferenced

* disallow nil dereference at compile time

* changelog
This commit is contained in:
cooldome 2020-11-18 22:30:28 +00:00 • committed by GitHub
commit acf8316e50
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 2 deletions

View file

@ -671,6 +671,10 @@ proc getConstExpr(m: PSym, n: PNode; idgen: IdGenerator; g: ModuleGraph): PNode
var a = getConstExpr(m, n[1], idgen, g)
if a == nil: return
result = foldConv(n, a, g, check=true)
of nkDerefExpr, nkHiddenDeref:
let a = getConstExpr(m, n[0], idgen, g)
if a != nil and a.kind == nkNilLit:
localError(g.config, n.info, "nil dereference is not allowed")
of nkCast:
var a = getConstExpr(m, n[1], idgen, g)
if a == nil: return