@@ -106,6 +106,13 @@ proc transformSons(c: PTransf, n: PNode, noConstFold = false): PNode =
106
106
for i in 0..<n.len:
107
107
result [i] = transform(c, n[i], noConstFold)
108
108
109
+ proc transformSonsAfterType(c: PTransf, n: PNode, noConstFold = false): PNode =
110
+ result = newTransNode(n)
111
+ assert n.len != 0
112
+ result [ 0] = copyTree(n[0 ])
113
+ for i in 1 ..< n.len:
114
+ result [i] = transform(c, n[i], noConstFold)
115
+
109
116
proc newAsgnStmt(c: PTransf, kind: TNodeKind, le: PNode, ri: PNode; isFirstWrite: bool ): PNode =
110
117
result = newTransNode(kind, ri.info, 2 )
111
118
result [0 ] = le
@@ -1102,6 +1109,9 @@ proc transform(c: PTransf, n: PNode, noConstFold = false): PNode =
1102
1109
result = transformAddrDeref(c, n, {nkAddr, nkHiddenAddr})
1103
1110
of nkHiddenStdConv, nkHiddenSubConv, nkConv:
1104
1111
result = transformConv(c, n)
1112
+ of nkObjConstr, nkCast:
1113
+ # don't try to transform type node
1114
+ result = transformSonsAfterType(c, n)
1105
1115
of nkDiscardStmt:
1106
1116
result = n
1107
1117
if n[0 ].kind != nkEmpty:
0 commit comments