mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
follow up https://github.com/nim-lang/Nim/pull/22991 - [x] turning it into an experimental feature --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
43 lines
709 B
Nim
43 lines
709 B
Nim
discard """
|
|
matrix: "--mm:arc --multimethods:on -d:nimInternalNonVtablesTesting; --mm:refc --multimethods:on -d:nimInternalNonVtablesTesting"
|
|
output: '''wow2
|
|
X 1
|
|
X 3'''
|
|
"""
|
|
type
|
|
First[T] = ref object of RootObj
|
|
value: T
|
|
|
|
Second[T] = ref object of First[T]
|
|
value2: T
|
|
|
|
method wow[T](y: int; x: First[T]) {.base.} =
|
|
echo "wow1"
|
|
|
|
method wow[T](y: int; x: Second[T]) =
|
|
echo "wow2"
|
|
|
|
var
|
|
x: Second[int]
|
|
new(x)
|
|
|
|
proc takeFirst(x: First[int]) =
|
|
wow(2, x)
|
|
|
|
takeFirst(x)
|
|
|
|
|
|
# bug #5479
|
|
type
|
|
Base[T: static[int]] = ref object of RootObj
|
|
|
|
method test[T](t: Base[T]) {.base.} =
|
|
echo "X ", t.T
|
|
|
|
let ab = Base[1]()
|
|
|
|
ab.test()
|
|
|
|
let ac = Base[3]()
|
|
ac.test()
|