From e794e513264373bc73b0b338cb1fef647984e26a Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Sun, 9 Oct 2016 10:24:00 -0500 Subject: Fix the interface flag when re-writing a closure call to the body method When re-writing a closure invocation to the body method, the `itf` flag of the invocation instruction was incorrect: it needs to be true if the method is defined in an interface (including static methdos), not if the method is invoked through `INVOKEINTERFACE`. JDK 8 doesn't flag this inconsistency and executes the bytecode, but the verifier in JDK 9 throws an `IncompatibleClassChangeError`. Similar fixes went into e619b03. --- test/files/run/sd242.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 test/files/run/sd242.scala (limited to 'test/files') diff --git a/test/files/run/sd242.scala b/test/files/run/sd242.scala new file mode 100644 index 0000000000..acd51ec893 --- /dev/null +++ b/test/files/run/sd242.scala @@ -0,0 +1,13 @@ +trait T { + def test: Unit = { + byName("".toString) + () + } + + @inline + final def byName(action: => Unit) = action +} + +object Test extends App { + (new T {}).test +} -- cgit v1.2.3