diff --git a/compiler/semdata.nim b/compiler/semdata.nim index 0fc000051c..4710d7c0d6 100644 --- a/compiler/semdata.nim +++ b/compiler/semdata.nim @@ -741,7 +741,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) @@ -753,13 +753,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) @@ -769,7 +769,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) @@ -780,7 +780,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 91ade858e9..35901ed960 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -1164,7 +1164,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