summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-02-08 01:57:37 +0100
committerAndreas Rumpf <rumpf_a@web.de>2016-02-08 01:57:37 +0100
commit0fa2ed30e0ee5bbe1442ceae01759786a82e85f9 (patch)
tree586a605c82c594f212a4dcbfc6321cb1057fd654 /compiler
parentee6a46f264d41de1d252d1b7e669b7656211a498 (diff)
downloadNim-0fa2ed30e0ee5bbe1442ceae01759786a82e85f9.tar.gz
PHP codegen can generate foo->bar accesses
Diffstat (limited to 'compiler')
-rw-r--r--compiler/jsgen.nim11
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim
index 7ecdd01f5..33a8dc12d 100644
--- a/compiler/jsgen.nim
+++ b/compiler/jsgen.nim
@@ -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")
     var f = n.sons[1].sym
     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
 
 proc genCheckedFieldAddr(p: PProc, n: PNode, r: var TCompRes) =
@@ -928,6 +934,9 @@ proc genArrayAccess(p: PProc, n: PNode, r: var TCompRes) =
      tyVarargs:
     genArrayAddr(p, n, r)
   of tyTuple:
+    if p.target == targetPHP:
+      genFieldAccess(p, n, r)
+      return
     genFieldAddr(p, n, r)
   else: internalError(n.info, "expr(nkBracketExpr, " & $ty.kind & ')')
   r.typ = etyNone