CodegenVisitor

com.digitalasset.transcode.codegen.CodegenVisitor
trait CodegenVisitor extends SchemaVisitor

Base type for code generators.

Define potentially mutable Context to store compilation units during schema traversal. Be aware that schema cases can be called multiple types in case of recursive definitions in daml model.

Instances of codegen visitors can be shared and reused. Any state should be stored in transient Context instances only

Note that Type and Result are Context Functions which provide implicit Context instance in every handler method.

Attributes

Graph
Supertypes
trait SchemaVisitor
class Object
trait Matchable
class Any

Members list

Type members

Types

type CodeUnit
type Context
final type Result = Context ?=> Map[RelPath, String]

Final result type

Final result type

Attributes

final type Type = Context ?=> CodeUnit

Visitor handler type for various DAML schema cases.

Visitor handler type for various DAML schema cases.

Attributes

Value members

Abstract methods

Concrete methods

final protected def ctx(using ctx: Context): Context

Inherited and Abstract methods

def application(value: Type, typeParams: Seq[TypeVarName], args: Seq[Type]): Type

Type Application

Type Application

Attributes

Inherited from:
SchemaVisitor
def bool: Type

Boolean

Boolean

Attributes

Inherited from:
SchemaVisitor
def collect(entities: Seq[Template[Type]]): Result

Attributes

Inherited from:
SchemaVisitor
def constructor(id: Identifier, typeParams: Seq[TypeVarName], value: => Type): Type

Wrap type into addressable DataType

Wrap type into addressable DataType

Attributes

Inherited from:
SchemaVisitor
def contractId(template: Type): Type

Contract ID, parametrized with the processor for corresponding template

Contract ID, parametrized with the processor for corresponding template

Attributes

Inherited from:
SchemaVisitor
def date: Type

Date

Date

Attributes

Inherited from:
SchemaVisitor
def enumeration(cases: Seq[EnumConName]): Type

ADT, Sum type - special case, where there are only named constructors without arguments

ADT, Sum type - special case, where there are only named constructors without arguments

Attributes

Inherited from:
SchemaVisitor
def genMap(key: Type, value: Type): Type

Map with keys and values of any type

Map with keys and values of any type

Attributes

Inherited from:
SchemaVisitor
def int64: Type

8-byte Integer

8-byte Integer

Attributes

Inherited from:
SchemaVisitor
def list(elem: Type): Type

Sequence of elements

Sequence of elements

Attributes

Inherited from:
SchemaVisitor
def numeric(scale: Int): Type

Numeric with scale

Numeric with scale

Attributes

Inherited from:
SchemaVisitor
def optional(elem: Type): Type

Optional element

Optional element

Attributes

Inherited from:
SchemaVisitor
def party: Type

Party

Party

Attributes

Inherited from:
SchemaVisitor
def record(fields: Seq[(FieldName, Type)]): Type

ADT, Product type

ADT, Product type

Attributes

Inherited from:
SchemaVisitor
def text: Type

Text

Text

Attributes

Inherited from:
SchemaVisitor
def textMap(value: Type): Type

Map with keys of String/Text type

Map with keys of String/Text type

Attributes

Inherited from:
SchemaVisitor
def timestamp: Type

Timestamp

Timestamp

Attributes

Inherited from:
SchemaVisitor
def unit: Type

Unit

Unit

Attributes

Inherited from:
SchemaVisitor
def variable(name: TypeVarName): Type

Type Variable.

Type Variable.

Codecs will use substitution, effectively replacing type variables with concrete types, while code generators will use type variable names.

Attributes

Inherited from:
SchemaVisitor
def variant(cases: Seq[(VariantConName, Type)]): Type

ADT, Sum type

ADT, Sum type

Attributes

Inherited from:
SchemaVisitor