slang::BindContext::AssertionInstanceDetails struct

Information required to instantiate a sequence or property instance.

Contents

Public variables

const Symbol* symbol
The assertion member being instantiated.
const BindContext* prevContext
SourceLocation instanceLoc
The location where the instance is being instantiated.
flat_hash_map<const Symbol*, std::tuple<const PropertyExprSyntax*, BindContext>> argumentMap
A map of formal argument symbols to their actual replacements.
flat_hash_map<string_view, const Symbol*> localVars
SourceLocation argExpansionLoc
const AssertionInstanceDetails* argDetails
bool isRecursive

Variable documentation

const BindContext* slang::BindContext::AssertionInstanceDetails::prevContext

The previous binding context used to start the instantiation. This effectively forms a linked list when expanding a nested stack of sequence and property instances.

flat_hash_map<string_view, const Symbol*> slang::BindContext::AssertionInstanceDetails::localVars

A map of local variables declared in the assertion item. These don't exist in any scope because their types can depend on the expanded arguments.

SourceLocation slang::BindContext::AssertionInstanceDetails::argExpansionLoc

If an argument to a sequence or property is being expanded, this member contains the source location where the argument was referenced.

const AssertionInstanceDetails* slang::BindContext::AssertionInstanceDetails::argDetails

If an argument is being expanded, this is the context in which the argument was originally being bound (as opposed to where it is being expanded now).

bool slang::BindContext::AssertionInstanceDetails::isRecursive

Indicates whether this particular instance has already been seen previously in the stack of assertion instances being expanded. Only applicable to properties, since this is illegal for sequences.