Managed_Setter_Method

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

Declarative_Node, General_Object_Interface, Local_Scope, Logical_IR_Root, Managed_Accessor_Method_Interface, Managed_Attributes_Interface, Managed_Explicit_Interface_Implementation_Interface, Managed_Method_Interface, Managed_Property_Or_Indexer_Accessor_Method_Interface, Managed_Routine_Interface, Managed_Setter_Interface, Member, Member_Routine, Method, Named_Entity, Parameters_Interface, Primary_Link_Object_Interface, Routine, Scope, Symbol, Template_Base_Interface, Template_Or_Member_Routine_Interface

Field

Kind

Type

Description

Redefines (from Method)

semantic

list of class Method

redefined methods, if any

Routines (from Routine)

syntactic

set of class Routine

replace inherited field with default value

Return_Type (from Routine)

semantic

class Type

Always semantic reference as we move anonymous types into special part of the AST

Attributes (from Routine)

attribute

bitfield Logical_Routine_Attributes_Type

Bitfield of flags like is_inline, is_const etc.

Calling_Convention (from Routine)

attribute

enum Calling_Convention_Kind

esp. MS-specific conventions like __stdcall

Friend_Of (from Routine)

semantic

set of class Type

Classes this routine is a friend of (and can therefore access their members).

Basic_Blocks (from Routine)

syntactic

list of class CFG_Block

Basic_Blocks[0] is CFG_Entry_Block, Basic_Blocks[-1] is CFG_Exit_Block. The blocks/instructions appear approximately in syntactic order. Statements are emitted in exactly syntactic order; expressions within a statement will generate instructions in evaluation order.

  • In for (int i = 0; i < 10; i++) body;, the loop-expression i++ will appear after the loop body.

  • In f()->field = g();, the call to g() will appear before the call to f() according to the C++17 evaluation order.

  • Code after a goto (whether unreachable or reachable via label) will be placed directly after the goto block.

  • For any statement/expression, all instructions from that stmt/expr will form a contiguous region (which may spread across multiple blocks), and will not be interleaved with the instructions from a different statement/expression. This makes it possible to use a pair of start/end edges to instructions to mark the whole region of code responsible, e.g., for the initialization of a variable.

The Basic_Blocks list does not contain the exceptional exit block or the coroutine destroy exit block – if these are present, they are stored in separate syntactic fields.

Exceptional_Exit_Block (from Routine)

syntactic

class CFG_Exceptional_Exit_Block

in case an exception propagates from within the routine

Coroutine_Destroy_Exit_Block (from Routine)

syntactic

class CFG_Coroutine_Destroy_Exit_Block

coroutine destroy exit block syntactic Control_Tree_Root : class Control_Tree_Block; semantic Unreachable_Blocks : set of class CFG_Standard_Block; those with no predecessors (except the entry node); they could still be the target of a local computed goto

Return_Value (from Routine)

syntactic

class Return_Helper_Variable

the object which represents the return value, or NULL if none

Cuda_Architecture (from Routine)

attribute

builtin Byte

If non-zero, the CUDA device architecture for which the routine was compiled. E.g., a __device__ function compiled with -arch=compute_70 has Cuda_Architecture=70. Host code has Cuda_Architecture=0.

Nested_Scopes (from Local_Scope)

syntactic

list of class Local_Scope

Nested block and temporary scopes.

Helpers (from Local_Scope)

syntactic

list of class Helper_Variable

Temporary variables.

Usings (from Scope)

semantic

set of class Symbol

using <namespace> and using <declaration>

Types (from Scope)

syntactic

set of class Type

Variables (from Scope)

syntactic

set of class Variable

Concepts (from Scope)

syntactic

set of class Concept

Template_Composites (from Scope)

syntactic

set of interface Template_Composite_Type_Interface

Template_Routines (from Scope)

syntactic

set of interface Template_Routine_Interface

Parent (from Logical_IR_Root)

semantic

class Logical_IR_Root

Physical (from Logical_IR_Root)

semantic to physical

class Physical_IR_Root

Explicit_Interface_Implementation_Of (from Managed_Explicit_Interface_Implementation_Interface)

semantic

class Declarative_Node

If the entity is an explicit implementation, this field stores the corresponding interface entity (method/property accessor etc.).

Property_Or_Indexer (from Managed_Property_Or_Indexer_Accessor_Method_Interface)

semantic

class Managed_Property_Or_Indexer

Custom_Attributes (from Managed_Attributes_Interface)

syntactic

set of class Managed_Attribute

Mangled_Trailing_Requires_Clause (from Template_Or_Member_Routine_Interface)

attribute

builtin String

Visibility (from Member)

attribute

enum Visibility_Type

Link_Flags (from Primary_Link_Object_Interface)

attribute

bitfield Link_Flags_Type

Component (from Primary_Link_Object_Interface)

attribute

builtin String

for local-to-library elements: name of DLL/.so when linked (sealed) for unit-local constexpr variables: name of file

Base_Template (from Template_Base_Interface)

semantic

class Symbol

usually, a Template_Interface, but could also be a normal method/nested class inside a template

Template_Arguments (from Template_Base_Interface)

syntactic

list of class Template_Argument

Is_Partial_Specialization (from Template_Base_Interface)

attribute

builtin Boolean

Is_Full_Specialization (from Template_Base_Interface)

attribute

builtin Boolean

Is_Template_Instance (from Template_Base_Interface)

attribute

builtin Boolean

Parameters (from Parameters_Interface)

syntactic

list of class Parameter

Name (from Named_Entity)

attribute

builtin String