fixes #1684
This commit is contained in:
parent
c2e04abcfa
commit
a1c217a2db
2 changed files with 17 additions and 0 deletions
|
|
@ -936,6 +936,10 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation =
|
||||||
else:
|
else:
|
||||||
if f.sonsLen > 0 and f.sons[0].kind != tyNone:
|
if f.sonsLen > 0 and f.sons[0].kind != tyNone:
|
||||||
result = typeRel(c, f.lastSon, a)
|
result = typeRel(c, f.lastSon, a)
|
||||||
|
if doBind and result notin {isNone, isGeneric}:
|
||||||
|
let concrete = concreteType(c, a)
|
||||||
|
if concrete == nil: return isNone
|
||||||
|
put(c.bindings, f, concrete)
|
||||||
else:
|
else:
|
||||||
result = isGeneric
|
result = isGeneric
|
||||||
|
|
||||||
|
|
|
||||||
13
tests/generics/tsubtypeconstraint.nim
Normal file
13
tests/generics/tsubtypeconstraint.nim
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
# bug #1684
|
||||||
|
type
|
||||||
|
BaseType {.inheritable pure.} = object
|
||||||
|
idx: int
|
||||||
|
|
||||||
|
DerivedType* {.final pure.} = object of BaseType
|
||||||
|
|
||||||
|
proc index*[Toohoo: BaseType](h: Toohoo): int {.inline.} = h.idx
|
||||||
|
proc newDerived(idx: int): DerivedType {.inline.} = DerivedType(idx: idx)
|
||||||
|
|
||||||
|
let d = newDerived(2)
|
||||||
|
assert(d.index == 2)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue