mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
74 lines
1.6 KiB
Nim
74 lines
1.6 KiB
Nim
discard """
|
|
output: '''{"columns":[{"t":null},{"t":null}]}
|
|
{"columns":[{"t":null},{"t":null}]}
|
|
'''
|
|
"""
|
|
|
|
## Tests javascript object generation
|
|
|
|
type
|
|
Kg = distinct float
|
|
Price = int
|
|
Item = object of RootObj
|
|
weight: Kg
|
|
price: Price
|
|
desc: cstring
|
|
Person = object of RootObj
|
|
name: cstring
|
|
age: int
|
|
item: Item
|
|
Test = object
|
|
name: cstring
|
|
Recurse[T] = object
|
|
data: T
|
|
next: ref Recurse[T]
|
|
|
|
var
|
|
test = Test(name: "Jorden")
|
|
sword = Item(desc: "pointy", weight: Kg(10.0),
|
|
price: Price(50))
|
|
knight = Person(name: "robert", age: 19, item: sword)
|
|
recurse4 = (ref Recurse[int])(data: 4, next: nil)
|
|
recurse3 = (ref Recurse[int])(data: 3, next: recurse4)
|
|
recurse2 = (ref Recurse[int])(data: 2, next: recurse3)
|
|
recurse1 = Recurse[int](data: 1, next: recurse2)
|
|
|
|
|
|
doAssert test.name == cstring"Jorden"
|
|
doAssert knight.age == 19
|
|
doAssert knight.item.price == 50
|
|
doAssert recurse1.next.next.data == 3
|
|
|
|
# bug #6035
|
|
proc toJson*[T](data: T): cstring {.importc: "JSON.stringify".}
|
|
|
|
type
|
|
Column = object
|
|
t: ref Column
|
|
|
|
Test2 = object
|
|
columns: seq[Column]
|
|
|
|
var test1 = Test2(columns: @[Column(t: nil), Column(t: nil)])
|
|
let test2 = test1
|
|
|
|
echo toJSON(test1)
|
|
echo toJSON(test2)
|
|
|
|
block issue10005:
|
|
type
|
|
Player = ref object of RootObj
|
|
id*: string
|
|
nickname*: string
|
|
color*: string
|
|
|
|
proc newPlayer(nickname: string, color: string): Player =
|
|
let pl = Player(color: "#123", nickname: nickname)
|
|
return Player(
|
|
id: "foo",
|
|
nickname: nickname,
|
|
color: color,
|
|
)
|
|
|
|
doAssert newPlayer("foo", "#1232").nickname == "foo"
|