@@ -12,6 +12,7 @@ import org.junit.Assert._
12
12
import scala .collection .JavaConverters ._
13
13
import scala .tools .asm .Opcodes
14
14
import scala .tools .asm .tree .ClassNode
15
+ import scala .tools .nsc .backend .jvm .opt .BytecodeUtils
15
16
import scala .tools .partest .ASMConverters ._
16
17
import scala .tools .testing .ClearAfterClass
17
18
@@ -221,7 +222,7 @@ class BytecodeTest extends ClearAfterClass {
221
222
222
223
def checkForwarder (c : ClassNode , target : String ) = {
223
224
val List (f) = findMethods(c, " f" )
224
- assertSameCode(f, List (VarOp (ALOAD , 0 ), Invoke (INVOKESPECIAL , target, " f" , " ( )I" , false ), Op (IRETURN )))
225
+ assertSameCode(f, List (VarOp (ALOAD , 0 ), Invoke (INVOKESTATIC , target, " f" , s " (L $target ; )I" , false ), Op (IRETURN )))
225
226
}
226
227
}
227
228
@@ -347,7 +348,7 @@ class BytecodeTest extends ClearAfterClass {
347
348
def invocationReceivers (): Unit = {
348
349
val List (c1, c2, t, u) = compileClasses(compiler)(invocationReceiversTestCode.definitions(" Object" ))
349
350
// mixin forwarder in C1
350
- assertSameCode(getSingleMethod(c1, " clone" ), List (VarOp (ALOAD , 0 ), Invoke (INVOKESPECIAL , " T" , " clone" , " ()Ljava/lang/Object;" , false ), Op (ARETURN )))
351
+ assertSameCode(getSingleMethod(c1, " clone" ), List (VarOp (ALOAD , 0 ), Invoke (INVOKESTATIC , " T" , " clone" , " (LT; )Ljava/lang/Object;" , false ), Op (ARETURN )))
351
352
assertInvoke(getSingleMethod(c1, " f1" ), " T" , " clone" )
352
353
assertInvoke(getSingleMethod(c1, " f2" ), " T" , " clone" )
353
354
assertInvoke(getSingleMethod(c1, " f3" ), " C1" , " clone" )
@@ -356,8 +357,8 @@ class BytecodeTest extends ClearAfterClass {
356
357
assertInvoke(getSingleMethod(c2, " f3" ), " C1" , " clone" )
357
358
358
359
val List (c1b, c2b, tb, ub) = compileClasses(compiler)(invocationReceiversTestCode.definitions(" String" ))
359
- def ms (c : ClassNode , n : String ) = c.methods.asScala.toList.filter(_.name == n)
360
- assert(ms(tb, " clone" ).length == 1 )
360
+ def ms (c : ClassNode , n : String ) = c.methods.asScala.toList.filter(_.name == n).filterNot( BytecodeUtils .isStaticMethod)
361
+ assert(ms(tb, " clone" ).length == 1 , tb.methods.asScala.map(_.name) )
361
362
assert(ms(ub, " clone" ).isEmpty)
362
363
val List (c1Clone) = ms(c1b, " clone" )
363
364
assertEquals(c1Clone.desc, " ()Ljava/lang/Object;" )
0 commit comments