diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index d3e215ea5609..49f81cbcb48b 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -1002,7 +1002,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 8abb830bd29e..7da5ed5b7072 100644 --- a/compiler/jsgen.nim +++ b/compiler/jsgen.nim @@ -1371,7 +1371,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")