mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
**TODO** - [x] fixes changelog With the new option `nimPreviewVtables`, `methods` are confined in the same module where the type of the first parameter is defined - [x] make it opt in after CI checks its feasibility ## In the following-up PRs - [ ] in the following PRs, refactor code into a more efficient one - [ ] cpp needs special treatments since it cannot embed array in light of the preceding limits: ref https://github.com/nim-lang/Nim/pull/20977#discussion_r1035528927; we can support cpp backends with vtable implementations later on the comprise that uses indirect vtable access --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
24 lines
432 B
Nim
24 lines
432 B
Nim
discard """
|
|
matrix: "--mm:arc; --mm:refc"
|
|
output: '''
|
|
newDNode base
|
|
'''
|
|
"""
|
|
|
|
type
|
|
SNodeAny = ref object of RootObj
|
|
SNode[T] = ref object of SNodeAny
|
|
m: T
|
|
DNode[T] = ref object
|
|
|
|
method getStr(s: SNode[float]): string {.base.} = "blahblah"
|
|
|
|
method newDNode(s: SNodeAny) {.base.} =
|
|
echo "newDNode base"
|
|
|
|
method newDNode[T](s: SNode[T]) =
|
|
echo "newDNode generic"
|
|
|
|
let m = SNode[float]()
|
|
let s = SNodeAny(m)
|
|
newDnode(s) |