summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorOscar Nihlgård <oscarnihlgard@gmail.com>2019-08-03 10:16:07 +0200
committerArne Döring <arne.doering@gmx.net>2019-08-03 10:16:07 +0200
commitbcfb540e576603019dd1ac76ba4f8c9774e05943 (patch)
treec5da6bf3c5090d9688f1b6bdb597136b7324158a
parent50e921bb941d0f1ef728dfb4623f626015556e10 (diff)
downloadNim-bcfb540e576603019dd1ac76ba4f8c9774e05943.tar.gz
Allow typeof(nil) as generic parameter (#11869)
-rw-r--r--compiler/sigmatch.nim2
-rw-r--r--tests/ccgbugs/tnil_type.nim13
2 files changed, 11 insertions, 4 deletions
diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim
index 154d76209..07ed5c3bc 100644
--- a/compiler/sigmatch.nim
+++ b/compiler/sigmatch.nim
@@ -340,8 +340,6 @@ proc typeRel*(c: var TCandidate, f, aOrig: PType,
 
 proc concreteType(c: TCandidate, t: PType; f: PType = nil): PType =
   case t.kind
-  of tyNil:
-    result = nil              # what should it be?
   of tyTypeDesc:
     if c.isNoCall: result = t
     else: result = nil
diff --git a/tests/ccgbugs/tnil_type.nim b/tests/ccgbugs/tnil_type.nim
index 44ecf1cc9..b57e64513 100644
--- a/tests/ccgbugs/tnil_type.nim
+++ b/tests/ccgbugs/tnil_type.nim
@@ -2,5 +2,14 @@ discard """
   targets: "c cpp"
 """
 
-proc foo(v: type(nil)) = discard
-foo nil
+proc f1(v: typeof(nil)) = discard
+f1(nil)
+
+proc f2[T]() = discard
+f2[typeof(nil)]()
+
+proc f3(_: typedesc) = discard
+f3(typeof(nil))
+
+proc f4[T](_: T) = discard
+f4(nil)
\ No newline at end of file