PHP codegen can generate foo->bar accesses
This commit is contained in:
parent
ee6a46f264
commit
0fa2ed30e0
1 changed files with 10 additions and 1 deletions
|
|
@ -881,7 +881,13 @@ proc genFieldAccess(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
if n.sons[1].kind != nkSym: internalError(n.sons[1].info, "genFieldAccess")
|
if n.sons[1].kind != nkSym: internalError(n.sons[1].info, "genFieldAccess")
|
||||||
var f = n.sons[1].sym
|
var f = n.sons[1].sym
|
||||||
if f.loc.r == nil: f.loc.r = mangleName(f, p.target)
|
if f.loc.r == nil: f.loc.r = mangleName(f, p.target)
|
||||||
r.res = ("$1.$2" | "$1['$2']") % [r.res, f.loc.r]
|
if p.target == targetJS:
|
||||||
|
r.res = "$1.$2" % [r.res, f.loc.r]
|
||||||
|
else:
|
||||||
|
if {sfImportc, sfExportc} * f.flags != {}:
|
||||||
|
r.res = "$1->$2" % [r.res, f.loc.r]
|
||||||
|
else:
|
||||||
|
r.res = "$1['$2']" % [r.res, f.loc.r]
|
||||||
r.kind = resExpr
|
r.kind = resExpr
|
||||||
|
|
||||||
proc genCheckedFieldAddr(p: PProc, n: PNode, r: var TCompRes) =
|
proc genCheckedFieldAddr(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
|
|
@ -928,6 +934,9 @@ proc genArrayAccess(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
tyVarargs:
|
tyVarargs:
|
||||||
genArrayAddr(p, n, r)
|
genArrayAddr(p, n, r)
|
||||||
of tyTuple:
|
of tyTuple:
|
||||||
|
if p.target == targetPHP:
|
||||||
|
genFieldAccess(p, n, r)
|
||||||
|
return
|
||||||
genFieldAddr(p, n, r)
|
genFieldAddr(p, n, r)
|
||||||
else: internalError(n.info, "expr(nkBracketExpr, " & $ty.kind & ')')
|
else: internalError(n.info, "expr(nkBracketExpr, " & $ty.kind & ')')
|
||||||
r.typ = etyNone
|
r.typ = etyNone
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue