Skip to content

Commit 5394c68

Browse files
litlighilitnarimiran
authored andcommitted
fixes #25227; crash when codegen user-defined tuple iterate (#25228)
fixes #25227 (cherry picked from commit 39be9b9)
1 parent 2ddda80 commit 5394c68

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

compiler/ccgexprs.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ proc genTupleElem(p: BProc, e: PNode, d: var TLoc) =
852852
var
853853
i: int = 0
854854
var a: TLoc = initLocExpr(p, e[0])
855-
let tupType = a.t.skipTypes(abstractInst+{tyVar})
855+
let tupType = a.t.skipTypes(abstractInst+{tyVar}+tyUserTypeClasses) # ref #25227
856856
assert tupType.kind == tyTuple
857857
d.inheritLocation(a)
858858
discard getTypeDesc(p.module, a.t) # fill the record's fields.loc

compiler/jsgen.nim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1371,7 +1371,8 @@ proc genFieldAddr(p: PProc, n: PNode, r: var TCompRes) =
13711371
r.typ = etyBaseIndex
13721372
let b = if n.kind == nkHiddenAddr: n[0] else: n
13731373
gen(p, b[0], a)
1374-
if skipTypes(b[0].typ, abstractVarRange).kind == tyTuple:
1374+
if skipTypes(b[0].typ, abstractVarRange + tyTypeClasses).kind == tyTuple:
1375+
# ref #25227 about `+ tyTypeClasses`
13751376
r.res = makeJSString("Field" & $getFieldPosition(p, b[1]))
13761377
else:
13771378
if b[1].kind != nkSym: internalError(p.config, b[1].info, "genFieldAddr")

0 commit comments

Comments
 (0)