From 402d96dd3fab6ae677966a9a258c00b3f34a37ed Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 30 Nov 2010 06:04:33 +0000 Subject: It looks like the fix for #2318 was causing pro... It looks like the fix for #2318 was causing problems, so I gave it some more graceful failure. Leaving #2318 open because the implementation could still work harder to find the right method. No review. --- test/files/run/bug2318.check | 2 ++ test/files/run/bug2318.scala | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 test/files/run/bug2318.check create mode 100644 test/files/run/bug2318.scala (limited to 'test') diff --git a/test/files/run/bug2318.check b/test/files/run/bug2318.check new file mode 100644 index 0000000000..a486f1ac47 --- /dev/null +++ b/test/files/run/bug2318.check @@ -0,0 +1,2 @@ +bar +bar diff --git a/test/files/run/bug2318.scala b/test/files/run/bug2318.scala new file mode 100644 index 0000000000..8347ed8e7b --- /dev/null +++ b/test/files/run/bug2318.scala @@ -0,0 +1,37 @@ +import java.security._ + +object Test { + trait Bar { def bar: Unit } + + object Mgr extends SecurityManager { + override def checkPermission(perm: Permission) = perm match { + case _: java.lang.RuntimePermission => () + case _: java.io.FilePermission => () + case _ => super.checkPermission(perm) + } + } + + def bug1() = { + val p = Runtime.getRuntime().exec("ls"); + type Destroyable = { def destroy() : Unit } + def doDestroy( obj : Destroyable ) : Unit = obj.destroy(); + doDestroy( p ); + } + def bug2() = { + System.setSecurityManager(Mgr) + + val b = new Bar { def bar = println("bar") } + b.bar + + val structural = b.asInstanceOf[{ def bar: Unit }] + structural.bar + } + + def main(args: Array[String]) { + // figuring this will otherwise break on windows + try bug1() + catch { case _: java.io.IOException => () } + + bug2() + } +} -- cgit v1.2.3