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:
|
||||
if f.sonsLen > 0 and f.sons[0].kind != tyNone:
|
||||
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:
|
||||
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