Class DebugStatementNode
- Namespace
- RDCore.SDK.Model.AST.Statements
- Assembly
- RDCore.SDK.dll
A statement against the Debug object — Debug.Print or Debug.Assert.
public abstract record DebugStatementNode : StatementNode, IEquatable<SyntaxNode>, IExecutableNode, IEquatable<StatementNode>, IEquatable<DebugStatementNode>
- Inheritance
-
DebugStatementNode
- Implements
- Derived
- Inherited Members
Remarks
These parse as ordinary qualified call statements and are recognized as their own node afterwards,
because they are the only statements whose presence in a compiled program depends on the build:
lowering leaves them out entirely when the DEBUG conditional compilation constant is false,
so nothing about them survives into a release build's instructions. A qualified call that is
indistinguishable from every other qualified call cannot be left out that way — which is the whole
reason this node exists rather than a CallStatementNode that the runtime pattern-matches
on the spelling of its owner.
Debug is not part of MS-VBAL's standard library (§6.1 has no such module or class): it comes
from the host's own development environment, and it has exactly these two members. The object's
symbol is synthesized to match — see StdLibSymbolProvider.
Constructors
DebugStatementNode(SyntaxNodeId, SourceLocation, ImmutableArray<SyntaxNode>)
A statement against the Debug object — Debug.Print or Debug.Assert.
protected DebugStatementNode(SyntaxNodeId Identity, SourceLocation SourceLocation, ImmutableArray<SyntaxNode> Children)
Parameters
IdentitySyntaxNodeIdA unique identifier for this specific syntax node.
SourceLocationSourceLocationThe document location (
Uri+Range) of the statement.ChildrenImmutableArray<SyntaxNode>The statement's own operands.
Remarks
These parse as ordinary qualified call statements and are recognized as their own node afterwards,
because they are the only statements whose presence in a compiled program depends on the build:
lowering leaves them out entirely when the DEBUG conditional compilation constant is false,
so nothing about them survives into a release build's instructions. A qualified call that is
indistinguishable from every other qualified call cannot be left out that way — which is the whole
reason this node exists rather than a CallStatementNode that the runtime pattern-matches
on the spelling of its owner.
Debug is not part of MS-VBAL's standard library (§6.1 has no such module or class): it comes
from the host's own development environment, and it has exactly these two members. The object's
symbol is synthesized to match — see StdLibSymbolProvider.