diff options
Diffstat (limited to 'test/files/run/bug2318.scala')
-rw-r--r-- | test/files/run/bug2318.scala | 37 |
1 files changed, 37 insertions, 0 deletions
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() + } +} |