diff options
author | Paul Phillips <paulp@improving.org> | 2013-01-14 23:29:50 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-01-26 11:19:36 -0800 |
commit | 832fc9a67e5aa85bdde61883527d3ac9554094d7 (patch) | |
tree | b5bc08f2ef57331efa66c956112bface14cd530f /test/files/run/t2577.scala | |
parent | 72f36cbc80d5667c5ada3b7c0fe60435a4b202ad (diff) | |
download | scala-832fc9a67e5aa85bdde61883527d3ac9554094d7.tar.gz scala-832fc9a67e5aa85bdde61883527d3ac9554094d7.tar.bz2 scala-832fc9a67e5aa85bdde61883527d3ac9554094d7.zip |
SI-2577, SI-6860: annotation type inference.
This is less than ideal:
scala> class Bippy[T] extends annotation.StaticAnnotation
defined class Bippy
scala> def f: Int @Bippy = 5
f: Int @Bippy[T]
Turns out we can infer such types. Now it says:
scala> def f: Int @Bippy = 5
f: Int @Bippy[Nothing]
This should put to rest many an issue with parameterized
annotations.
Diffstat (limited to 'test/files/run/t2577.scala')
-rw-r--r-- | test/files/run/t2577.scala | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/files/run/t2577.scala b/test/files/run/t2577.scala new file mode 100644 index 0000000000..6d836a3996 --- /dev/null +++ b/test/files/run/t2577.scala @@ -0,0 +1,17 @@ +case class annot[T]() extends scala.annotation.StaticAnnotation + +// type inference should infer @annot[Nothing] instead of @annot[T] +// note the T is not in scope here! +class Foo[@annot U] + +object Test { + import scala.reflect.runtime.universe._ + val x = new Foo + + def main(args: Array[String]): Unit = { + val targ = typeOf[x.type].widen match { + case TypeRef(_, _, arg :: _) => arg + } + println(targ) + } +} |