ExpandSAMs

object ExpandSAMs

Expand SAM closures that cannot be represented by the JVM as lambdas to anonymous classes. These fall into five categories

  1. Partial function closures, we need to generate isDefinedAt and applyOrElse methods for these.
  2. Closures implementing non-trait classes
  3. Closures implementing classes that inherit from a class other than Object (a lambda cannot not be a run-time subtype of such a class)
  4. Closures that implement traits which run initialization code.
  5. Closures that get synthesized abstract methods in the transformation pipeline. These methods can be (1) superaccessors, (2) outer references, (3) accessors for fields.

However, implicit function types do not count as SAM types.

Companion
class
class Object
trait Matchable
class Any

Value members

Concrete methods

Is the SAMType cls also a SAM under the rules of the platform?

Is the SAMType cls also a SAM under the rules of the platform?

Concrete fields

val name: String