diff options
Diffstat (limited to 'compiler/sigmatch.nim')
-rw-r--r-- | compiler/sigmatch.nim | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index a8551fa19..d6a0c6382 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -1240,13 +1240,15 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation = if prev == nil: put(c, f, a) result = isGeneric else: - var aAsObject = roota.lastSon - if rootf.lastSon.kind in {tyAnd, tyOr}: + let fKind = rootf.lastSon.kind + if fKind in {tyAnd, tyOr}: result = typeRel(c, lastSon(f), a) if result != isNone: put(c, f, a) return - if rootf.lastSon.kind == tyRef and aAsObject.kind == tyRef: + var aAsObject = roota.lastSon + + if fKind in {tyRef, tyPtr} and aAsObject.kind == fKind: aAsObject = aAsObject.base if aAsObject.kind == tyObject: |