scalus.compiler.sir.linking

Members list

Type members

Classlikes

object SIRLinker

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
SIRLinker.type
class SIRLinker(options: SIRLinkerOptions, moduleDefs: Map[String, Module])

Links SIR definitions and data declarations into a single SIR module.

Links SIR definitions and data declarations into a single SIR module.

This class is responsible for linking SIR definitions and data declarations to create a single SIR module.

It traverses the SIR tree and links external definitions and data declarations to the global definitions and data declarations.

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
case class SIRLinkerOptions(useUniversalDataConversion: Boolean, printErrors: Boolean, debugLevel: Int)

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
final case class Wrappers(layers: List[Layer])

What is around an expression, outermost first: data declarations and lets.

What is around an expression, outermost first: data declarations and lets.

Linking gives a program this shape: the data declarations it uses, inside them the definitions it uses, each in a let, and inside those its expression. What reads a linked program takes the expression out, and puts what it makes of it back inside the same wrappers.

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object Wrappers

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
Wrappers.type