diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 5859abd8b4..6b2a644099 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -1006,7 +1006,7 @@ proc genTupleElem(p: BProc, e: PNode, d: var TLoc) = var i: int = 0 var a: TLoc = initLocExpr(p, e[0]) - let tupType = a.t.skipTypes(abstractInst+{tyVar}) + let tupType = a.t.skipTypes(abstractInst+{tyVar}+tyUserTypeClasses) # ref #25227 assert tupType.kind == tyTuple d.inheritLocation(a) discard getTypeDesc(p.module, a.t) # fill the record's fields.loc diff --git a/compiler/jsgen.nim b/compiler/jsgen.nim index acd49110ab..c52b26e69b 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1375,7 +1375,8 @@ proc genFieldAddr(p: PProc, n: PNode, r: var TCompRes) = r.typ = etyBaseIndex let b = if n.kind == nkHiddenAddr: n[0] else: n gen(p, b[0], a) - if skipTypes(b[0].typ, abstractVarRange).kind == tyTuple: + if skipTypes(b[0].typ, abstractVarRange + tyTypeClasses).kind == tyTuple: + # ref #25227 about `+ tyTypeClasses` r.res = makeJSString("Field" & $getFieldPosition(p, b[1])) else: if b[1].kind != nkSym: internalError(p.config, b[1].info, "genFieldAddr")