remove deprecated type pragma syntax, fix bugs that required it (#20199)
* remove deprecated pragma syntax from 0.20.0 closes #4651, closes #16653 with a cheap fix for now due to how early `tfFinal` is set * remove type pragma between name and generics * undo removal, try removing bind expression (0.8.14) * fix test, unremove bind expr * remove again * Update changelog.md Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com> * dependencies @ HEAD & weave test dependencies * try fix package ci Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>
This commit is contained in:
parent
f540fd5cde
commit
86f7f4ffa5
44 changed files with 111 additions and 86 deletions
|
|
@ -1,5 +1,5 @@
|
|||
type
|
||||
Base[T] = ref object {.inheritable.}
|
||||
Base[T] {.inheritable.} = ref object
|
||||
value*: T
|
||||
|
||||
Derived[T] = ref object of Base[T]
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ block tinherit:
|
|||
|
||||
block tspecialise:
|
||||
type
|
||||
TGen[T] = object {.inheritable.}
|
||||
TGen[T] {.inheritable.} = object
|
||||
TSpef = object of TGen[string]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import strutils
|
|||
|
||||
type
|
||||
PNode[T,D] = ref TNode[T,D]
|
||||
TItem {.acyclic, pure, final, shallow.} [T,D] = object
|
||||
TItem[T,D] {.acyclic, pure, final, shallow.} = object
|
||||
key: T
|
||||
value: D
|
||||
node: PNode[T,D]
|
||||
|
|
@ -20,7 +20,7 @@ type
|
|||
val_set: bool
|
||||
|
||||
TItems[T,D] = seq[ref TItem[T,D]]
|
||||
TNode {.acyclic, pure, final, shallow.} [T,D] = object
|
||||
TNode[T,D] {.acyclic, pure, final, shallow.} = object
|
||||
slots: TItems[T,D]
|
||||
left: PNode[T,D]
|
||||
count: int32
|
||||
|
|
|
|||
10
tests/generics/tinheritable_importcpp.nim
Normal file
10
tests/generics/tinheritable_importcpp.nim
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
discard """
|
||||
targets: "cpp"
|
||||
action: compile
|
||||
"""
|
||||
|
||||
# #4651
|
||||
type
|
||||
Vector[T] {.importcpp: "std::vector<'0 >", header: "vector", inheritable.} = object
|
||||
VectorDerived {.importcpp: "SomeVectorDerived", nodecl.} = object of Vector[int]
|
||||
# Error: inheritance only works with non-final objects
|
||||
Loading…
Add table
Add a link
Reference in a new issue