Merge branch 'devel' into fix_bracket_expr
This commit is contained in:
commit
c9a2fa54c7
10 changed files with 155 additions and 13 deletions
|
|
@ -146,7 +146,7 @@ proc isPartOf*(a, b: PNode): TAnalysisResult =
|
|||
# go down recursively; this is quite demanding:
|
||||
const
|
||||
Ix0Kinds = {nkDotExpr, nkBracketExpr, nkObjUpConv, nkObjDownConv,
|
||||
nkCheckedFieldExpr}
|
||||
nkCheckedFieldExpr, nkHiddenAddr}
|
||||
Ix1Kinds = {nkHiddenStdConv, nkHiddenSubConv, nkConv}
|
||||
DerefKinds = {nkHiddenDeref, nkDerefExpr}
|
||||
case b.kind
|
||||
|
|
|
|||
|
|
@ -116,8 +116,7 @@ proc genEnumInfo(p: PProc, typ: PType, name: Rope) =
|
|||
[name, genTypeInfo(p, typ.sons[0])])
|
||||
|
||||
proc genTypeInfo(p: PProc, typ: PType): Rope =
|
||||
var t = typ
|
||||
if t.kind == tyGenericInst: t = lastSon(t)
|
||||
let t = typ.skipTypes({tyGenericInst})
|
||||
result = "NTI$1" % [rope(t.id)]
|
||||
if containsOrIncl(p.g.typeInfoGenerated, t.id): return
|
||||
case t.kind
|
||||
|
|
@ -141,7 +140,7 @@ proc genTypeInfo(p: PProc, typ: PType): Rope =
|
|||
[result, rope(ord(t.kind))]
|
||||
prepend(p.g.typeInfo, s)
|
||||
addf(p.g.typeInfo, "$1.base = $2;$n",
|
||||
[result, genTypeInfo(p, typ.sons[1])])
|
||||
[result, genTypeInfo(p, t.sons[1])])
|
||||
of tyEnum: genEnumInfo(p, t, result)
|
||||
of tyObject: genObjectInfo(p, t, result)
|
||||
of tyTuple: genTupleInfo(p, t, result)
|
||||
|
|
|
|||
|
|
@ -320,8 +320,19 @@ proc opConv*(dest: var TFullReg, src: TFullReg, desttyp, srctyp: PType): bool =
|
|||
dest.node.strVal = if src.intVal == 0: "false" else: "true"
|
||||
of tyFloat..tyFloat128:
|
||||
dest.node.strVal = $src.floatVal
|
||||
of tyString, tyCString:
|
||||
of tyString:
|
||||
dest.node.strVal = src.node.strVal
|
||||
of tyCString:
|
||||
if src.node.kind == nkBracket:
|
||||
# Array of chars
|
||||
var strVal = ""
|
||||
for son in src.node.sons:
|
||||
let c = char(son.intVal)
|
||||
if c == '\0': break
|
||||
strVal.add(c)
|
||||
dest.node.strVal = strVal
|
||||
else:
|
||||
dest.node.strVal = src.node.strVal
|
||||
of tyChar:
|
||||
dest.node.strVal = $chr(src.intVal)
|
||||
else:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue