Struct LetCoercionStackFrame
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
NodeIdSyntaxNodeIdThe
Identityof the syntax node being evaluated.OperandIndexInputIndexEncodes the semantic index of the operand being evaluated.
SourceValueVBTypedValueThe source value being let-coerced in this frame.
DestinationTypeDescVBTypeDescValueDescribes the destination type of the let-coercion operation. The described data type must be unwrapped from the descriptor.
SiteConversionSiteThe 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
NodeId
The Identity of the syntax node being evaluated.
public SyntaxNodeId NodeId { get; init; }
Property Value
OperandIndex
Encodes the semantic index of the operand being evaluated.
public InputIndex OperandIndex { get; init; }
Property Value
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
SourceValue
The source value being let-coerced in this frame.
public VBTypedValue SourceValue { get; init; }