Merge branch 'master' of github.com:Araq/Nimrod
This commit is contained in:
commit
1d842e8b75
21 changed files with 174 additions and 55 deletions
28
tests/compile/tsecondarrayproperty.nim
Normal file
28
tests/compile/tsecondarrayproperty.nim
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
type
|
||||
TFoo = object
|
||||
data: array[0..100, int]
|
||||
TSecond = distinct TFoo
|
||||
|
||||
proc `[]` (self: var TFoo, x: int): var int =
|
||||
return self.data[x]
|
||||
|
||||
proc `[]=` (self: var TFoo, x, y: int) =
|
||||
# only `[]` returning a 'var T' seems to not work for now :-/
|
||||
self.data[x] = y
|
||||
|
||||
proc second(self: var TFoo): var TSecond =
|
||||
return TSecond(self)
|
||||
|
||||
proc `[]`(self: var TSecond, x: int): var int =
|
||||
return TFoo(self).data[2*x]
|
||||
|
||||
var f: TFoo
|
||||
|
||||
for i in 0..f.data.high: f[i] = 2 * i
|
||||
|
||||
echo f.second[1]
|
||||
|
||||
#echo `second[]`(f,1)
|
||||
# this is the only way I could use it, but not what I expected
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
discard """
|
||||
line: 11
|
||||
line: 22
|
||||
errormgs: "type mismatch"
|
||||
"""
|
||||
|
||||
|
|
@ -7,9 +7,17 @@ type
|
|||
PObj = ref TObj not nil
|
||||
TObj = object
|
||||
x: int
|
||||
|
||||
MyString = string not nil
|
||||
|
||||
var x: PObj = nil
|
||||
#var x: PObj = nil
|
||||
|
||||
proc p(x: string not nil): int =
|
||||
result = 45
|
||||
|
||||
proc q(x: MyString) = nil
|
||||
proc q2(x: string) = nil
|
||||
|
||||
q2(nil)
|
||||
q(nil)
|
||||
|
||||
|
|
|
|||
30
tests/run/tgenericconverter.nim
Normal file
30
tests/run/tgenericconverter.nim
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
discard """
|
||||
output: '''666
|
||||
666'''
|
||||
"""
|
||||
|
||||
# test the new generic converters:
|
||||
|
||||
type
|
||||
TFoo2[T] = object
|
||||
x: T
|
||||
|
||||
TFoo[T] = object
|
||||
data: array[0..100, T]
|
||||
|
||||
converter toFoo[T](a: TFoo2[T]): TFoo[T] =
|
||||
result.data[0] = a.x
|
||||
|
||||
proc p(a: TFoo[int]) =
|
||||
echo a.data[0]
|
||||
|
||||
proc q[T](a: TFoo[T]) =
|
||||
echo a.data[0]
|
||||
|
||||
|
||||
var
|
||||
aa: TFoo2[int]
|
||||
aa.x = 666
|
||||
|
||||
p aa
|
||||
q aa
|
||||
Loading…
Add table
Add a link
Reference in a new issue