void type improvements; documentation improvements
This commit is contained in:
parent
00da785f5d
commit
4f7fa05911
5 changed files with 162 additions and 17 deletions
|
|
@ -1,6 +1,3 @@
|
|||
discard """
|
||||
disabled: true
|
||||
"""
|
||||
|
||||
type
|
||||
TDict[TK, TV] = object
|
||||
|
|
@ -14,7 +11,7 @@ proc fakeNew[T](x: var ref T, destroy: proc (a: ref T)) =
|
|||
proc destroyDict[TK, TV](a: PDict[TK, TV]) =
|
||||
return
|
||||
proc newDict[TK, TV](a: TK, b: TV): PDict[TK, TV] =
|
||||
Fakenew(result, destroyDict)
|
||||
Fakenew(result, destroyDict[TK, TV])
|
||||
|
||||
# Problem: destroyDict is not instantiated when newDict is instantiated!
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,33 @@
|
|||
discard """
|
||||
output: "he, no return type; a string"
|
||||
output: "he, no return type;abc a string"
|
||||
"""
|
||||
|
||||
proc ReturnT[T](): T =
|
||||
proc ReturnT[T](x: T): T =
|
||||
when T is void:
|
||||
echo "he, no return type;"
|
||||
else:
|
||||
result = " a string"
|
||||
result = x & " a string"
|
||||
|
||||
proc nothing(x, y: void): void =
|
||||
echo "ha"
|
||||
|
||||
proc callProc[T](p: proc (x: T), x: T) =
|
||||
when T is void:
|
||||
p()
|
||||
else:
|
||||
p(x)
|
||||
|
||||
proc intProc(x: int) =
|
||||
echo x
|
||||
|
||||
proc emptyProc() =
|
||||
echo "empty"
|
||||
|
||||
callProc[int](intProc, 12)
|
||||
callProc[void](emptyProc)
|
||||
|
||||
|
||||
ReturnT[void]()
|
||||
echo ReturnT[string]()
|
||||
echo ReturnT[string]("abc")
|
||||
nothing()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue