summaryrefslogtreecommitdiff
path: root/test/files/run/t1501.scala
diff options
context:
space:
mode:
authorTiark Rompf <tiark.rompf@epfl.ch>2008-11-10 20:31:12 +0000
committerTiark Rompf <tiark.rompf@epfl.ch>2008-11-10 20:31:12 +0000
commit8a69a88c9a72aaf9971fb4feb92b1c25c106ff3d (patch)
treec2cf883e6759ee6749ec0160b5ac7ab83cb5177e /test/files/run/t1501.scala
parent5d6c2cb4c663f4351f5eacb6c9f6f9b0cedf4966 (diff)
downloadscala-8a69a88c9a72aaf9971fb4feb92b1c25c106ff3d.tar.gz
scala-8a69a88c9a72aaf9971fb4feb92b1c25c106ff3d.tar.bz2
scala-8a69a88c9a72aaf9971fb4feb92b1c25c106ff3d.zip
fixed #1500 and #1501
Diffstat (limited to 'test/files/run/t1501.scala')
-rw-r--r--test/files/run/t1501.scala55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/files/run/t1501.scala b/test/files/run/t1501.scala
new file mode 100644
index 0000000000..07190a3b2c
--- /dev/null
+++ b/test/files/run/t1501.scala
@@ -0,0 +1,55 @@
+import scala.tools.nsc._
+
+object Test {
+
+ /**
+ * ...
+ */
+
+ val testCode = <code>
+
+ class xyz[A] extends TypeConstraint
+
+ def loopWhile[T](cond: =>Boolean)(body: =>(Unit @xyz[T])): Unit @ xyz[T] = {{
+ if (cond) {{
+ body
+ loopWhile[T](cond)(body)
+ }}
+ }}
+
+ def test() = {{
+ var x = 7
+ loopWhile(x != 0) {{
+ x = x - 1
+ (): @xyz[Int]
+ }}
+ }}
+
+ </code>.text
+
+ def main(args: Array[String]) = {
+
+ val tool = new Interpreter(new Settings())
+ val global = tool.compiler
+
+ import global._
+ import definitions._
+
+ object checker extends AnnotationChecker {
+
+ /** Check annotations to decide whether tpe1 <:< tpe2 */
+ def annotationsConform(tpe1: Type, tpe2: Type): Boolean = {
+
+ tpe1.attributes.forall(a1 => tpe2.attributes.forall(a2 => a1.atp <:< a2.atp))
+
+ }
+ }
+
+ global.addAnnotationChecker(checker)
+
+ tool.interpret(testCode)
+
+ }
+
+}
+