DottyPrimitives

dotty.tools.backend.jvm.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.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class JSPrimitives

Members list

Value members

Concrete methods

def getPrimitive(sym: Symbol): Int

Return the code for the given symbol.

Return the code for the given symbol.

Attributes

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 parameters

fun

The method symbol

tpe

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

Attributes

def isPrimitive(fun: Tree): Boolean