import typetraits

type
  Base = object of RootObj
  Child = object of Base

proc pr(T: typedesc[Base]) = echo "proc " & T.name
method me(T: typedesc[Base]) = echo "method " & T.name
iterator it(T: typedesc[Base]): auto = yield "yield " & T.name

Base.pr
Child.pr

Base.me
when false:
  Child.me #<- bug #2710

for s in Base.it: echo s
for s in Child.it: echo s #<- bug #2662
