Lambda_Capture_Field

class Lambda_Capture_Field (concrete, logical)
Implemented interfaces:
Direct parents:
Ancestor classes and implemented interfaces:

Declarative_Node, Field, General_Object_Interface, Initialization_Start_End_Interface, Logical_IR_Root, Member, Named_Entity, Named_Field, Normal_Field, Object, Symbol, Typed_Object, Unmutable_Named_Field

Field

Kind

Type

Description

Captured_Variable

semantic

class Typed_Object

Offset (from Field)

attribute

builtin Natural

Starting position of this field inside the parent composite. Equal to the value of offsetof(Parent, Field). The Offset does not include the Bit_Position for bit-fields.

Note: multiple fields can share the same offset in these circumstances:

  • In a union, all fields will have offset 0.

  • Neighboring bit-fields will have the same offset if they are stored together.

  • C++20 [[no_unique_address]]

Offset_In_Bits (from Field)

attribute

builtin UInt64

Offset to the field in bits. This is equal to offsetof(Parent, Field) * CHAR_BIT. The Offset_In_Bits does not include the Bit_Position for bit-fields.

Its_Type (from Typed_Object)

semantic

class Type

the normalized, ‘underlying’ type

Object_Flags (from Typed_Object)

attribute

bitfield Object_Flags_Type

bits like “address taken” and “is pointer”

Parent (from Logical_IR_Root)

semantic

class Logical_IR_Root

Physical (from Logical_IR_Root)

semantic to physical

class Physical_IR_Root

Initialization_Start (from Initialization_Start_End_Interface)

semantic

class Execution_Node

Start of the variable’s initialization. If set to an instruction, that instruction is part of the variable’s initialization. If set to a block, the variable’s initialization begins with the tail jump of that block, but does not include the block’s code. Use is_part_of_variable_initialization() to determine if an instruction is between Initialization_Start and Initialization_End.

Initialization_End (from Initialization_Start_End_Interface)

semantic

class Execution_Node

If set to an instruction, it is the first instruction after those responsible for the variable’s initialization. If set to a block, the initialization includes all instructions in that block but not the block’s tail jump. In other words: A block is used to refer to the “instruction-after-last” in that block; all instructions between Initialization_Start (inclusive) to Initialization_End (exclusive) belong to the variable’s initializer. If Initialization_Start==Initialization_End, then the variable has no initializer.

Visibility (from Member)

attribute

enum Visibility_Type

Name (from Named_Entity)

attribute

builtin String