diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-11-14 17:19:15 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-11-14 17:19:15 +0000 |
commit | 872f147d845b4585d9e288cb2bc38ffd4c71dd11 (patch) | |
tree | 15757acaaeec565f63c22d2d74d43d37eb219409 /test/pending/jvm/javasigs.scala | |
parent | ff5acd0dbb714445d01c0347beace11c735ea231 (diff) | |
download | scala-872f147d845b4585d9e288cb2bc38ffd4c71dd11.tar.gz scala-872f147d845b4585d9e288cb2bc38ffd4c71dd11.tar.bz2 scala-872f147d845b4585d9e288cb2bc38ffd4c71dd11.zip |
Moved failing test to pending until I figure ou...
Moved failing test to pending until I figure out how hudson is running
on chara
Diffstat (limited to 'test/pending/jvm/javasigs.scala')
-rw-r--r-- | test/pending/jvm/javasigs.scala | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/pending/jvm/javasigs.scala b/test/pending/jvm/javasigs.scala new file mode 100644 index 0000000000..937b46d1d4 --- /dev/null +++ b/test/pending/jvm/javasigs.scala @@ -0,0 +1,78 @@ +import java.io._ + +object Scalatest { + val outputdir = System.getProperty("partest.output", "inner.obj") + val scalalib = System.getProperty("partest.lib", "") + val classpath = outputdir + File.pathSeparator + scalalib + val javacmd = System.getProperty("javacmd", "java") + val javac = javacmd + "c" + + def javac(src: String, opts: String, fname: String) { + val tmpfilename = outputdir + File.separator + fname + val tmpfile = new FileWriter(tmpfilename) + tmpfile.write(src) + tmpfile.close + exec(javac + " -d " + outputdir + " -classpath " + classpath + " " + opts + tmpfilename) + } + + def java(cname: String) = + exec(javacmd + " -cp " + classpath + " " + cname) + + class Slurp(in: BufferedReader) extends Thread("slurper") { + var done = false + override def run() { + while (!done) if (in.ready) println(in.readLine()) + } + } + + def slurp(in: BufferedReader): Slurp = { + val s = new Slurp(in) + s.start() + s + } + + + /** Execute cmd, wait for the process to end and pipe it's output to stdout */ + def exec(cmd: String) { + val proc = Runtime.getRuntime().exec(cmd) + val inp = new BufferedReader(new InputStreamReader(proc.getInputStream)) + val errp = new BufferedReader(new InputStreamReader(proc.getErrorStream)) + val t1 = slurp(inp) + val t2 = slurp(errp) + proc.waitFor() + t1.done = true + t2.done = true + t1.join() + t2.join() + } +} + +// Test correct java signatures for anonymous classes. Enclosing method attributes should +// allow javac to see the type parameters in foo. See #3249. + +class A[U] { + def bar[B](x : => B) = x + def foo[C](c : C) : C = bar(c) +} + +object B { + def bar[B](x : => B) = x + def foo[C](c : C) : C = { + class InnerB(x: C) + c + } +} + +class B { + def foo {} +} + +object Test { + def main(args: Array[String]) { + import Scalatest._ + exec("%s -Xprint -cp %s A".format(javac, classpath)) + exec("%s -Xprint -cp %s B".format(javac, classpath)) + exec("%s -Xprint -cp %s A$$anonfun$foo$1".format(javac, classpath)) + exec("%s -Xprint -cp %s scala.actors.Actor".format(javac, classpath)) + } +} |