diff options
author | jcosborn <jcosborn@users.noreply.github.com> | 2020-08-18 01:23:19 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-18 08:23:19 +0200 |
commit | e194cb41a4502d3d8b5e4426fbd72e8d80513c3b (patch) | |
tree | 236cdad9cc77c9d1036b748de3a5ddca1a0e5e35 /compiler | |
parent | e9df8ebcfd475a715756d24e1718a5c1455689d2 (diff) | |
download | Nim-e194cb41a4502d3d8b5e4426fbd72e8d80513c3b.tar.gz |
fix overloading issue with generic invocation (#15135)
* fix overloading issue with generic alias * add test for inheritance depth
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/sigmatch.nim | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index 786cca01f..1d648c32a 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -579,7 +579,7 @@ proc procParamTypeRel(c: var TCandidate, f, a: PType): TTypeRelation = if f.isMetaType: # We are matching a generic proc (as proc param) # to another generic type appearing in the proc - # signature. There is a change that the target + # signature. There is a chance that the target # type is already fully-determined, so we are # going to try resolve it if c.call != nil: @@ -1496,7 +1496,6 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, #echo "inferred ", typeToString(inst), " for ", f return typeRel(c, inst, a) - var depth = 0 if x.kind == tyGenericInvocation or f[0].kind != tyGenericBody: #InternalError("typeRel: tyGenericInvocation -> tyGenericInvocation") # simply no match for now: @@ -1510,18 +1509,6 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, # Workaround for regression #4589 if f[i].kind != tyTypeDesc: return result = isGeneric - elif x.kind == tyGenericInst and isGenericSubtype(c, x, f, depth, f) and - (x.len - 1 == f.len): - # do not recurse here in order to not K bind twice for this code: - # - # type - # BaseFruit[T] = object of RootObj - # Banana[T] = object of BaseFruit[uint32] # Concrete type here, not T! - # proc setColor[K](self: var BaseFruit[K]) - # var x: Banana[float64] - # x.setColor() - c.inheritancePenalty += depth - result = isGeneric else: let genericBody = f[0] var askip = skippedNone |