summaryrefslogtreecommitdiff
path: root/test/files/run/t1500.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-11-14 00:22:10 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-11-14 00:40:12 -0800
commit5b532e927241bfaea4aa9b36e32ff3a0deb1ae15 (patch)
tree83730ba21561d6ee1d34beb0b579d1a1254d86d4 /test/files/run/t1500.scala
parent69e62de87d80cf5b9d8c7f4eefcea0638fb2759d (diff)
downloadscala-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.scala46
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)
+
+ }
+
+}
+