fixes #5432
This commit is contained in:
parent
5774145f5d
commit
d91d338d03
2 changed files with 17 additions and 1 deletions
|
|
@ -169,7 +169,8 @@ proc methodDef*(g: ModuleGraph; s: PSym, fromCache: bool) =
|
||||||
fixupDispatcher(s, disp)
|
fixupDispatcher(s, disp)
|
||||||
#echo "fixup ", disp.name.s, " ", disp.id
|
#echo "fixup ", disp.name.s, " ", disp.id
|
||||||
when useEffectSystem: checkMethodEffects(disp, s)
|
when useEffectSystem: checkMethodEffects(disp, s)
|
||||||
if sfBase in s.flags and g.methods[i].methods[0] != s:
|
if {sfBase, sfFromGeneric} * s.flags == {sfBase} and
|
||||||
|
g.methods[i].methods[0] != s:
|
||||||
# already exists due to forwarding definition?
|
# already exists due to forwarding definition?
|
||||||
localError(s.info, "method is not a base")
|
localError(s.info, "method is not a base")
|
||||||
return
|
return
|
||||||
|
|
|
||||||
15
tests/method/tgeneric_methods2.nim
Normal file
15
tests/method/tgeneric_methods2.nim
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
#5432
|
||||||
|
type
|
||||||
|
Iterator[T] = ref object of RootObj
|
||||||
|
|
||||||
|
# base methods with `T` in the return type are okay
|
||||||
|
method methodThatWorks*[T](i: Iterator[T]): T {.base.} =
|
||||||
|
discard
|
||||||
|
|
||||||
|
# base methods without `T` (void or basic types) fail
|
||||||
|
method methodThatFails*[T](i: Iterator[T]) {.base.} =
|
||||||
|
discard
|
||||||
|
|
||||||
|
type
|
||||||
|
SpecificIterator1 = ref object of Iterator[string]
|
||||||
|
SpecificIterator2 = ref object of Iterator[int]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue