diff options
author | Clyybber <darkmine956@gmail.com> | 2019-08-30 06:41:26 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-08-30 06:41:26 +0200 |
commit | 029dcc6259b8f0e6ee0216a936636509f7f530ff (patch) | |
tree | 00e010da582cdc0678909424c1e7cbd49ffea160 /compiler | |
parent | 2a3b0563141f2cfdee4cbeef85167c25610ff71f (diff) | |
download | Nim-029dcc6259b8f0e6ee0216a936636509f7f530ff.tar.gz |
fix #12037 (#12089)
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dfa.nim | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/compiler/dfa.nim b/compiler/dfa.nim index 7315e74bc..2805e42fb 100644 --- a/compiler/dfa.nim +++ b/compiler/dfa.nim @@ -607,14 +607,9 @@ proc aliases(obj, field: PNode): bool = if sameTrees(obj, n): return true case n.kind of nkDotExpr, nkCheckedFieldExpr, nkHiddenSubConv, nkHiddenStdConv, - nkObjDownConv, nkObjUpConv, nkHiddenDeref, nkDerefExpr: + nkObjDownConv, nkObjUpConv, nkHiddenAddr, nkAddr, nkBracketExpr, + nkHiddenDeref, nkDerefExpr: n = n[0] - of nkBracketExpr: - let x = n[0] - if x.typ != nil and x.typ.skipTypes(abstractInst).kind == tyTuple: - n = x - else: - break else: break return false @@ -652,7 +647,7 @@ proc isAnalysableFieldAccess*(orig: PNode; owner: PSym): bool = while true: case n.kind of nkDotExpr, nkCheckedFieldExpr, nkHiddenSubConv, nkHiddenStdConv, - nkObjDownConv, nkObjUpConv: + nkObjDownConv, nkObjUpConv, nkHiddenAddr, nkAddr, nkBracketExpr: n = n[0] of nkHiddenDeref, nkDerefExpr: # We "own" sinkparam[].loc but not ourVar[].location as it is a nasty @@ -660,12 +655,6 @@ proc isAnalysableFieldAccess*(orig: PNode; owner: PSym): bool = n = n[0] return n.kind == nkSym and n.sym.owner == owner and (isSinkParam(n.sym) or n.sym.typ.skipTypes(abstractInst-{tyOwned}).kind in {tyOwned}) - of nkBracketExpr: - let x = n[0] - if x.typ != nil and x.typ.skipTypes(abstractInst).kind == tyTuple: - n = x - else: - break else: break # XXX Allow closure deref operations here if we know |