diff options
author | cooldome <cdome@bk.ru> | 2018-03-16 15:21:03 +0000 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-03-16 16:21:03 +0100 |
commit | 70b28a39fedfe030ac4e1615d32328d7ffd3f79d (patch) | |
tree | e1a382756971f788634e9d82d79a06b5c10250e0 /tests/ccgbugs | |
parent | a9f21cffdf7304272b5bbabeabec4a3e659819fa (diff) | |
download | Nim-70b28a39fedfe030ac4e1615d32328d7ffd3f79d.tar.gz |
Codegen: use type forward declarations more aggresively. Fixes #7339 (#7340)
Do not emit object definition it if used only by ref or ptr
Diffstat (limited to 'tests/ccgbugs')
-rw-r--r-- | tests/ccgbugs/mymodule.nim | 12 | ||||
-rw-r--r-- | tests/ccgbugs/tforward_decl_only.nim | 15 |
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/ccgbugs/mymodule.nim b/tests/ccgbugs/mymodule.nim new file mode 100644 index 000000000..d3306ec49 --- /dev/null +++ b/tests/ccgbugs/mymodule.nim @@ -0,0 +1,12 @@ +type + MyRefObject* = ref object + s: string + + +proc newMyRefObject*(s: string): MyRefObject = + new(result) + result.s = s + +proc `$`*(o: MyRefObject): string = + o.s + \ No newline at end of file diff --git a/tests/ccgbugs/tforward_decl_only.nim b/tests/ccgbugs/tforward_decl_only.nim new file mode 100644 index 000000000..dcd74eaf4 --- /dev/null +++ b/tests/ccgbugs/tforward_decl_only.nim @@ -0,0 +1,15 @@ +discard """ +ccodecheck: "\\i !@('struct tyObject_MyRefObject'[0-z]+' {')" +output: "hello" +""" + +# issue #7339 +# Test that MyRefObject is only forward declared as it used only by reference + +import mymodule +type AnotherType = object + f: MyRefObject + +let x = AnotherType(f: newMyRefObject("hello")) +echo $x.f + |