Dotty Documentation


class DottyPrimitives
extends Object

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.

[-] Constructors

DottyPrimitives ( ctx: Context )

[-] Members

[+] private val ctx : Context
[+] private lazy val primitives : Map [ Symbol, Int ]
[+] def getPrimitive ( sym: Symbol ) : Int

Return the code for the given symbol.

[+] def getPrimitive ( app: Apply , tpe: Type ) ( implicit ctx: 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.

[+] private def init : Map [ Symbol, Int ]

Initialize the primitive map

[+] def isPrimitive ( fun: Tree ) : Boolean