@@ -16,6 +16,7 @@ class Foo {
16
16
def id [T ](x : T ): T = x
17
17
18
18
val l = MethodHandles .lookup()
19
+ val self = new Foo ()
19
20
val mhNeg = l.findVirtual(classOf [Foo ], " neg" , methodType(classOf [Int ], classOf [Int ]))
20
21
val mhRev = l.findVirtual(classOf [Foo ], " rev" , methodType(classOf [String ], classOf [String ]))
21
22
val mhOverL = l.findVirtual(classOf [Foo ], " over" , methodType(classOf [String ], classOf [Long ]))
@@ -24,25 +25,25 @@ class Foo {
24
25
val mhObj = l.findVirtual(classOf [Foo ], " obj" , methodType(classOf [Any ], classOf [String ]))
25
26
val mhCL = l.findStatic(classOf [ClassLoader ], " getPlatformClassLoader" , methodType(classOf [ClassLoader ]))
26
27
27
- val testNeg1 = assert(- 42 == (mhNeg.invokeExact(this , 42 ): Int ))
28
- val testNeg2 = assert(- 33 == (mhNeg.invokeExact(this , 33 ): Int ))
28
+ val testNeg1 = assert(- 42 == (mhNeg.invokeExact(self , 42 ): Int ))
29
+ val testNeg2 = assert(- 33 == (mhNeg.invokeExact(self , 33 ): Int ))
29
30
30
- val testRev1 = assert(" oof" == (mhRev.invokeExact(this , " foo" ): String ))
31
- val testRev2 = assert(" rab" == (mhRev.invokeExact(this , " bar" ): String ))
31
+ val testRev1 = assert(" oof" == (mhRev.invokeExact(self , " foo" ): String ))
32
+ val testRev2 = assert(" rab" == (mhRev.invokeExact(self , " bar" ): String ))
32
33
33
- val testOverL = assert(" long" == (mhOverL.invokeExact(this , 1L ): String ))
34
- val testOVerI = assert(" int" == (mhOverI.invokeExact(this , 1 ): String ))
34
+ val testOverL = assert(" long" == (mhOverL.invokeExact(self , 1L ): String ))
35
+ val testOVerI = assert(" int" == (mhOverI.invokeExact(self , 1 ): String ))
35
36
36
- val testNeg_tvar = assert(- 3 == (id(mhNeg.invokeExact(this , 3 )): Int ))
37
- val testNeg_obj = expectWrongMethod(mhNeg.invokeExact(this , 4 ))
37
+ val testNeg_tvar = assert(- 3 == (id(mhNeg.invokeExact(self , 3 )): Int ))
38
+ val testNeg_obj = expectWrongMethod(mhNeg.invokeExact(self , 4 ))
38
39
39
- val testUnit_exp = { mhUnit.invokeExact(this , " hi" ): Unit ; () }
40
- val testUnit_val = { val hi2 : Unit = mhUnit.invokeExact(this , " hi2" ); assert((()) == hi2) }
41
- val testUnit_def = { def hi3 : Unit = mhUnit.invokeExact(this , " hi3" ); assert((()) == hi3) }
40
+ val testUnit_exp = { mhUnit.invokeExact(self , " hi" ): Unit ; () }
41
+ val testUnit_val = { val hi2 : Unit = mhUnit.invokeExact(self , " hi2" ); assert((()) == hi2) }
42
+ val testUnit_def = { def hi3 : Unit = mhUnit.invokeExact(self , " hi3" ); assert((()) == hi3) }
42
43
43
- val testObj_exp = { mhObj.invokeExact(this , " any" ); () }
44
- val testObj_val = { val any2 = mhObj.invokeExact(this , " any2" ); assert(" any2" == any2) }
45
- val testObj_def = { def any3 = mhObj.invokeExact(this , " any3" ); assert(" any3" == any3) }
44
+ val testObj_exp = { mhObj.invokeExact(self , " any" ); () }
45
+ val testObj_val = { val any2 = mhObj.invokeExact(self , " any2" ); assert(" any2" == any2) }
46
+ val testObj_def = { def any3 = mhObj.invokeExact(self , " any3" ); assert(" any3" == any3) }
46
47
47
48
val testCl_pass = assert(null != (mhCL.invoke(): ClassLoader ))
48
49
val testCl_cast = assert(null != (mhCL.invoke().asInstanceOf [ClassLoader ]: ClassLoader ))
@@ -51,10 +52,10 @@ class Foo {
51
52
52
53
val testNeg_inline_obj = expectWrongMethod(l
53
54
.findVirtual(classOf [Foo ], " neg" , methodType(classOf [Int ], classOf [Int ]))
54
- .invokeExact(this , 3 ))
55
+ .invokeExact(self , 3 ))
55
56
val testNeg_inline_pass = assert(- 4 == (l
56
57
.findVirtual(classOf [Foo ], " neg" , methodType(classOf [Int ], classOf [Int ]))
57
- .invokeExact(this , 4 ): Int ))
58
+ .invokeExact(self , 4 ): Int ))
58
59
59
60
def expectWrongMethod (op : => Any ) = try {
60
61
op
0 commit comments