diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-14 00:22:10 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-14 00:40:12 -0800 |
commit | 5b532e927241bfaea4aa9b36e32ff3a0deb1ae15 (patch) | |
tree | 83730ba21561d6ee1d34beb0b579d1a1254d86d4 /test/files/run/t1500.scala | |
parent | 69e62de87d80cf5b9d8c7f4eefcea0638fb2759d (diff) | |
download | scala-5b532e927241bfaea4aa9b36e32ff3a0deb1ae15.tar.gz scala-5b532e927241bfaea4aa9b36e32ff3a0deb1ae15.tar.bz2 scala-5b532e927241bfaea4aa9b36e32ff3a0deb1ae15.zip |
Revived tests that once depended on xml
I was a bit overzealous in moving stuff over to scala-xml in 9c50dd5274
These were all compiler tests that accidentally touched on xml.
I've tried to delicately decouple them so they can roam the
scalac pastures as intended.
Diffstat (limited to 'test/files/run/t1500.scala')
-rw-r--r-- | test/files/run/t1500.scala | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/files/run/t1500.scala b/test/files/run/t1500.scala new file mode 100644 index 0000000000..30c026f70f --- /dev/null +++ b/test/files/run/t1500.scala @@ -0,0 +1,46 @@ +import scala.tools.nsc._ + +object Test { + + /** + * Type inference overlooks constraints posed by type parameters in annotations on types. + */ + + val testCode = """ + + class posingAs[A] extends annotation.TypeConstraint + + def resolve[A,B](x: A @posingAs[B]): B = x.asInstanceOf[B] + + val x = resolve(7: @posingAs[Any]) + + """ + + def main(args: Array[String]) { + + val settings = new Settings() + settings.classpath.value = System.getProperty("java.class.path") + val tool = new interpreter.IMain(settings) + val global = tool.global + + import global._ + import definitions._ + + object checker extends AnnotationChecker { + + /** Check annotations to decide whether tpe1 <:< tpe2 */ + def annotationsConform(tpe1: Type, tpe2: Type): Boolean = { + + tpe1.annotations.forall(a1 => tpe2.annotations.forall(a2 => a1.atp <:< a2.atp)) + + } + } + + global.addAnnotationChecker(checker) + + tool.interpret(testCode) + + } + +} + |