summary refs log tree commit diff stats
path: root/tests/objects/trefobjsyntax.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-02-10 16:19:32 +0100
committerAraq <rumpf_a@web.de>2015-02-10 20:19:48 +0100
commitc2da0e9b3db54597fc35b65a23d67aa3c5714e82 (patch)
tree767eb5491d11cc3b149531bc4c5e522e61e138b5 /tests/objects/trefobjsyntax.nim
parenteec18896b760059af62a7cb63a151339f44c5f66 (diff)
downloadNim-c2da0e9b3db54597fc35b65a23d67aa3c5714e82.tar.gz
cleanup index generation
Diffstat (limited to 'tests/objects/trefobjsyntax.nim')
-rw-r--r--tests/objects/trefobjsyntax.nim27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/objects/trefobjsyntax.nim b/tests/objects/trefobjsyntax.nim
new file mode 100644
index 000000000..9b48de718
--- /dev/null
+++ b/tests/objects/trefobjsyntax.nim
@@ -0,0 +1,27 @@
+discard """
+  output: '''wohoo
+baz'''
+"""
+
+# Test to ensure the popular 'ref T' syntax works everywhere
+
+type
+  Foo = object
+    a, b: int
+    s: string
+
+  FooBar = object of RootObj
+    n, m: string
+  Baz = object of FooBar
+
+proc invoke(a: ref Baz) =
+  echo "baz"
+
+# check object construction:
+let x = (ref Foo)(a: 0, b: 45, s: "wohoo")
+echo x.s
+
+var y: ref FooBar = (ref Baz)(n: "n", m: "m")
+
+invoke((ref Baz)(y))
+