diff --git a/compiler/semdata.nim b/compiler/semdata.nim index 131424485f..d25c1a46b3 100644 --- a/compiler/semdata.nim +++ b/compiler/semdata.nim @@ -771,7 +771,7 @@ proc replaceHookMagic*(c: PContext, n: PNode, kind: TTypeAttachedOp): PNode = case kind of attachedDestructor: result = n - let t = n[1].typ.skipTypes(abstractVar) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) let op = getAttachedOp(c.graph, t, attachedDestructor) if op != nil: result[0] = newSymNode(op) @@ -783,13 +783,13 @@ proc replaceHookMagic*(c: PContext, n: PNode, kind: TTypeAttachedOp): PNode = result[1] = skipAddr(n[1]) of attachedTrace: result = n - let t = n[1].typ.skipTypes(abstractVar) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) let op = getAttachedOp(c.graph, t, attachedTrace) if op != nil: result[0] = newSymNode(op) of attachedDup: result = n - let t = n[1].typ.skipTypes(abstractVar) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) let op = getAttachedOp(c.graph, t, attachedDup) if op != nil: result[0] = newSymNode(op) @@ -799,7 +799,7 @@ proc replaceHookMagic*(c: PContext, n: PNode, kind: TTypeAttachedOp): PNode = result.add boolLit of attachedWasMoved: result = n - let t = n[1].typ.skipTypes(abstractVar) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) let op = getAttachedOp(c.graph, t, attachedWasMoved) if op != nil: result[0] = newSymNode(op) @@ -810,7 +810,7 @@ proc replaceHookMagic*(c: PContext, n: PNode, kind: TTypeAttachedOp): PNode = result = c.semAsgnOpr(c, n, nkAsgn) of attachedDeepCopy: result = n - let t = n[1].typ.skipTypes(abstractVar) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) let op = getAttachedOp(c.graph, t, kind) if op != nil: result[0] = newSymNode(op) diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index 22691fca10..bfe8c351fa 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -1163,7 +1163,7 @@ proc trackCall(tracked: PEffects; n: PNode) = var (isHook, opKind) = findHookKind(a.sym.name.s) if isHook: # rebind type bounds operations after createTypeBoundOps call - let t = n[1].typ.skipTypes({tyAlias, tyVar}) + let t = n[1].typ.skipTypes({tyAlias, tyVar, tySink}) if a.sym != getAttachedOp(tracked.graph, t, opKind): createTypeBoundOps(tracked, t, n.info, explicit = true) # replace builtin hooks with lifted ones