js codegen: emit more line information
This commit is contained in:
parent
4cce5883c0
commit
3d34a9f6d3
1 changed files with 14 additions and 12 deletions
|
|
@ -434,22 +434,23 @@ proc binaryExpr(p: PProc, n: PNode, r: var TCompRes, magic, frmt: string) =
|
||||||
|
|
||||||
proc unsignedTrimmerJS(size: BiggestInt): Rope =
|
proc unsignedTrimmerJS(size: BiggestInt): Rope =
|
||||||
case size
|
case size
|
||||||
of 1: rope"& 0xff"
|
of 1: rope"& 0xff"
|
||||||
of 2: rope"& 0xffff"
|
of 2: rope"& 0xffff"
|
||||||
of 4: rope">>> 0"
|
of 4: rope">>> 0"
|
||||||
else: rope""
|
else: rope""
|
||||||
|
|
||||||
proc unsignedTrimmerPHP(size: BiggestInt): Rope =
|
proc unsignedTrimmerPHP(size: BiggestInt): Rope =
|
||||||
case size
|
case size
|
||||||
of 1: rope"& 0xff"
|
of 1: rope"& 0xff"
|
||||||
of 2: rope"& 0xffff"
|
of 2: rope"& 0xffff"
|
||||||
of 4: rope"& 0xffffffff"
|
of 4: rope"& 0xffffffff"
|
||||||
else: rope""
|
else: rope""
|
||||||
|
|
||||||
template unsignedTrimmer(size: BiggestInt): Rope =
|
template unsignedTrimmer(size: BiggestInt): Rope =
|
||||||
size.unsignedTrimmerJS | size.unsignedTrimmerPHP
|
size.unsignedTrimmerJS | size.unsignedTrimmerPHP
|
||||||
|
|
||||||
proc binaryUintExpr(p: PProc, n: PNode, r: var TCompRes, op: string, reassign: bool = false) =
|
proc binaryUintExpr(p: PProc, n: PNode, r: var TCompRes, op: string,
|
||||||
|
reassign = false) =
|
||||||
var x, y: TCompRes
|
var x, y: TCompRes
|
||||||
gen(p, n.sons[1], x)
|
gen(p, n.sons[1], x)
|
||||||
gen(p, n.sons[2], y)
|
gen(p, n.sons[2], y)
|
||||||
|
|
@ -1633,11 +1634,11 @@ proc genReprAux(p: PProc, n: PNode, r: var TCompRes, magic: string, typ: Rope =
|
||||||
|
|
||||||
gen(p, n.sons[1], a)
|
gen(p, n.sons[1], a)
|
||||||
if magic == "reprAny":
|
if magic == "reprAny":
|
||||||
# the pointer argument in reprAny is expandend to
|
# the pointer argument in reprAny is expandend to
|
||||||
# (pointedto, pointer), so we need to fill it
|
# (pointedto, pointer), so we need to fill it
|
||||||
if a.address.isNil:
|
if a.address.isNil:
|
||||||
add(r.res, a.res)
|
add(r.res, a.res)
|
||||||
add(r.res, ", null")
|
add(r.res, ", null")
|
||||||
else:
|
else:
|
||||||
add(r.res, "$1, $2" % [a.address, a.res])
|
add(r.res, "$1, $2" % [a.address, a.res])
|
||||||
else:
|
else:
|
||||||
|
|
@ -1670,7 +1671,7 @@ proc genRepr(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
genReprAux(p, n, r, "reprSet", genTypeInfo(p, t))
|
genReprAux(p, n, r, "reprSet", genTypeInfo(p, t))
|
||||||
of tyEmpty, tyVoid:
|
of tyEmpty, tyVoid:
|
||||||
localError(n.info, "'repr' doesn't support 'void' type")
|
localError(n.info, "'repr' doesn't support 'void' type")
|
||||||
of tyPointer:
|
of tyPointer:
|
||||||
genReprAux(p, n, r, "reprPointer")
|
genReprAux(p, n, r, "reprPointer")
|
||||||
of tyOpenArray, tyVarargs:
|
of tyOpenArray, tyVarargs:
|
||||||
genReprAux(p, n, r, "reprJSONStringify")
|
genReprAux(p, n, r, "reprJSONStringify")
|
||||||
|
|
@ -2128,6 +2129,7 @@ proc gen(p: PProc, n: PNode, r: var TCompRes) =
|
||||||
else: r.res = rope(f.toStrMaxPrecision)
|
else: r.res = rope(f.toStrMaxPrecision)
|
||||||
r.kind = resExpr
|
r.kind = resExpr
|
||||||
of nkCallKinds:
|
of nkCallKinds:
|
||||||
|
if isEmptyType(n.typ): genLineDir(p, n)
|
||||||
if (n.sons[0].kind == nkSym) and (n.sons[0].sym.magic != mNone):
|
if (n.sons[0].kind == nkSym) and (n.sons[0].sym.magic != mNone):
|
||||||
genMagic(p, n, r)
|
genMagic(p, n, r)
|
||||||
elif n.sons[0].kind == nkSym and sfInfixCall in n.sons[0].sym.flags and
|
elif n.sons[0].kind == nkSym and sfInfixCall in n.sons[0].sym.flags and
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue