Table of Contents

Struct LetCoercionStackFrame

Namespace
RDCore.SDK.Runtime.Shared
Assembly
RDCore.SDK.dll

Represents a LetCoercionRuntimeSemantics evaluation frame.

public readonly record struct LetCoercionStackFrame : IStackFrame<InputIndex>, IStackFrame, IEquatable<LetCoercionStackFrame>
Implements
Inherited Members

Remarks

👉 This mechanism allows detecting recursive let-coercion and avoiding uncontrolled re-entry.

Constructors

LetCoercionStackFrame(SyntaxNodeId, InputIndex, VBTypedValue, VBTypeDescValue, ConversionSite)

Represents a LetCoercionRuntimeSemantics evaluation frame.

public LetCoercionStackFrame(SyntaxNodeId NodeId, InputIndex OperandIndex, VBTypedValue SourceValue, VBTypeDescValue DestinationTypeDesc, ConversionSite Site = ConversionSite.Unspecified)

Parameters

NodeId SyntaxNodeId

The Identity of the syntax node being evaluated.

OperandIndex InputIndex

Encodes the semantic index of the operand being evaluated.

SourceValue VBTypedValue

The source value being let-coerced in this frame.

DestinationTypeDesc VBTypeDescValue

Describes the destination type of the let-coercion operation. The described data type must be unwrapped from the descriptor.

Site ConversionSite

The construct that asks for the conversion. Only that construct knows, which is why it states it when it builds the frame.

Remarks

👉 This mechanism allows detecting recursive let-coercion and avoiding uncontrolled re-entry.

Properties

DestinationTypeDesc

Describes the destination type of the let-coercion operation. The described data type must be unwrapped from the descriptor.

public VBTypeDescValue DestinationTypeDesc { get; init; }

Property Value

VBTypeDescValue

NodeId

The Identity of the syntax node being evaluated.

public SyntaxNodeId NodeId { get; init; }

Property Value

SyntaxNodeId

OperandIndex

Encodes the semantic index of the operand being evaluated.

public InputIndex OperandIndex { get; init; }

Property Value

InputIndex

Site

The construct that asks for the conversion. Only that construct knows, which is why it states it when it builds the frame.

public ConversionSite Site { get; init; }

Property Value

ConversionSite

SourceValue

The source value being let-coerced in this frame.

public VBTypedValue SourceValue { get; init; }

Property Value

VBTypedValue