summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2021-09-15 01:39:55 +0800
committerGitHub <noreply@github.com>2021-09-14 19:39:55 +0200
commitbf1700bab17da3c8776914ac5bdfff016eb70442 (patch)
tree9dc839845897d92f248523bb33cf3fcce5a6b03d
parent172253cb551a475d7d32093e562521990e71a1ed (diff)
downloadNim-bf1700bab17da3c8776914ac5bdfff016eb70442.tar.gz
add testcase for #7308 (#18849)
-rw-r--r--tests/arc/tarcmisc.nim11
-rw-r--r--tests/ccgbugs/tctypes.nim43
2 files changed, 43 insertions, 11 deletions
diff --git a/tests/arc/tarcmisc.nim b/tests/arc/tarcmisc.nim
index 951ae25f3..7daea62c8 100644
--- a/tests/arc/tarcmisc.nim
+++ b/tests/arc/tarcmisc.nim
@@ -463,14 +463,3 @@ proc putValue[T](n: T) =
   echo b.n
 
 useForward()
-
-
-# bug #16246
-
-proc testWeirdTypeAliases() =
-  var values = newSeq[cuint](8)
-  # var values: seq[cuint] does not produce codegen error
-  var drawCb = proc(): seq[uint32] =
-    result = newSeq[uint32](10)
-
-testWeirdTypeAliases()
diff --git a/tests/ccgbugs/tctypes.nim b/tests/ccgbugs/tctypes.nim
new file mode 100644
index 000000000..be6009115
--- /dev/null
+++ b/tests/ccgbugs/tctypes.nim
@@ -0,0 +1,43 @@
+discard """
+  targets: "c cpp"
+  matrix: "--gc:refc; --gc:arc"
+"""
+
+# bug #7308
+proc foo(x: seq[int32]) =
+  var y = newSeq[cint](1)
+
+proc bar =
+  var t = newSeq[int32](1)
+  foo(t)
+
+bar()
+
+
+# bug #16246
+
+proc testWeirdTypeAliases() =
+  var values = newSeq[cuint](8)
+  # var values: seq[cuint] does not produce codegen error
+  var drawCb = proc(): seq[uint32] =
+    result = newSeq[uint32](10)
+
+testWeirdTypeAliases()
+
+block: # bug #11797
+  block:
+    type cdouble2 = cdouble
+    type Foo1 = seq[cdouble]
+    type Foo2 = seq[cdouble2]
+    static: doAssert Foo1 is Foo2
+    var a1: Foo1
+    var a2: Foo2
+    doAssert a1 == @[]
+    doAssert a2 == @[]
+
+  block:
+    proc foo[T: int|cint](fun: proc(): T) = discard
+    proc foo1(): cint = 1
+    proc foo3(): int32 = 2
+    foo(proc(): cint = foo1())
+    foo(proc(): int32 = foo3())