Open
Description
Minimized code
object CtxFns {
abstract class Context:
def puts[T](t: T): Unit
def puts[T](t: T): Context ?=> Unit = summon[Context].puts(t)
}
Output
javap for CtxFns.puts
:
public <T extends java.lang.Object> scala.Function1<CtxFns$Context, scala.runtime.BoxedUnit> puts(T);
descriptor: (Ljava/lang/Object;LCtxFns$Context;)V
flags: ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: aload_2
1: aload_1
2: invokevirtual #36 // Method CtxFns$Context.puts:(Ljava/lang/Object;)V
5: return
Expectation
the user signature for puts should show that puts
was simplified to a method with two parameters and void return type