DottyPrimitives

class DottyPrimitives(ictx: Context)

Scala primitive operations are represented as methods in Any and AnyVal subclasses. Here we demultiplex them by providing a mapping from their symbols to integers. Different methods exist for different value types, but with the same meaning (like plus, minus, etc.). They will all be mapped to the same int.

Note: The three equal methods have the following semantics:

  • "==" checks for null, and if non-null, calls java.lang.Object.equals (class: Any; modifier: final). Primitive: EQ
  • "eq" usual reference comparison (class: AnyRef; modifier: final). Primitive: ID
  • "equals" user-defined equality (Java semantics) (class: Object; modifier: none). Primitive: EQUALS

Inspired from the scalac compiler.

class Object
trait Matchable
class Any

Value members

Concrete methods

def getPrimitive(sym: Symbol): Int

Return the code for the given symbol.

Return the code for the given symbol.

def getPrimitive(app: Apply, tpe: Type)(using Context): Int

Return the primitive code of the given operation. If the operation is an array get/set, we inspect the type of the receiver to demux the operation.

Return the primitive code of the given operation. If the operation is an array get/set, we inspect the type of the receiver to demux the operation.

Value Params
fun

The method symbol

tpe

The type of the receiver object. It is used only for array operations