diff options
author | Martin Odersky <odersky@gmail.com> | 2017-02-01 17:18:13 +1100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-02-01 17:48:32 +1100 |
commit | e34555f69e7cdd6d19d0d1ed969127f4ee65c36e (patch) | |
tree | 9b3011bf3074f1d1d8e7d815814b8ed370d98639 /tests/neg | |
parent | b11e6d678a92187e5e9f821ba1116cec2cce0f8c (diff) | |
download | dotty-e34555f69e7cdd6d19d0d1ed969127f4ee65c36e.tar.gz dotty-e34555f69e7cdd6d19d0d1ed969127f4ee65c36e.tar.bz2 dotty-e34555f69e7cdd6d19d0d1ed969127f4ee65c36e.zip |
Disallow taking a class tag of Nothing or Null.
It seems in most cases this leads to weird behavior and cause
confusing error messages later.
It also means we cannot create an Array[Nothing], except by
passing the classtag explicitly.
Diffstat (limited to 'tests/neg')
-rw-r--r-- | tests/neg/i1802.scala | 4 | ||||
-rw-r--r-- | tests/neg/i1907.scala | 7 | ||||
-rw-r--r-- | tests/neg/undet-classtag.scala | 5 |
3 files changed, 14 insertions, 2 deletions
diff --git a/tests/neg/i1802.scala b/tests/neg/i1802.scala index 56da672a8..93e790f18 100644 --- a/tests/neg/i1802.scala +++ b/tests/neg/i1802.scala @@ -14,8 +14,8 @@ object Exception { def apply(x: Throwable): T = f(downcast(x).get) } - def mkThrowableCatcher[T](isDef: Throwable => Boolean, f: Throwable => T) = mkCatcher(isDef, f) + def mkThrowableCatcher[T](isDef: Throwable => Boolean, f: Throwable => T) = mkCatcher(isDef, f) // error: undetermined ClassTag - implicit def throwableSubtypeToCatcher[Ex <: Throwable: ClassTag, T](pf: PartialFunction[Ex, T]) = // error: cyclic reference + implicit def throwableSubtypeToCatcher[Ex <: Throwable: ClassTag, T](pf: PartialFunction[Ex, T]) = mkCatcher(pf.isDefinedAt _, pf.apply _) } diff --git a/tests/neg/i1907.scala b/tests/neg/i1907.scala new file mode 100644 index 000000000..6bc3bb56f --- /dev/null +++ b/tests/neg/i1907.scala @@ -0,0 +1,7 @@ +import java.io.File + +object Test { + Some(new File(".")) + .map(_.listFiles).getOrElse(Array.empty) // error: undetermined ClassTag + .map(_.listFiles) +} diff --git a/tests/neg/undet-classtag.scala b/tests/neg/undet-classtag.scala new file mode 100644 index 000000000..563596d14 --- /dev/null +++ b/tests/neg/undet-classtag.scala @@ -0,0 +1,5 @@ +object Test { + def f[T: reflect.ClassTag](x: T) = ??? + + f(???) // error: undetermined ClassTag +} |