Namespace RDCore.SDK.Model.Symbols
Classes
- CompositeSymbolResolver
Chains ISymbolResolvers: Resolve(string, ScopeKind, Uri) tries each in order and returns the first result that is not IsUnbound — a bound symbol, or an error result (a duplicate or ambiguous name found by an earlier resolver is not masked by a later fallback). The result is unbound only when every resolver is unbound.
- DeferredSymbol
A
BoundSymbolthat is inferred from an unbound expression and accessible to IntelliSense and analyzers, but not yet materialized in source code.
- GlobalSymbols.ExtensionSymbols
Defines a number of static (unallocated) symbols used internally for semantic purposes.
- LexicalScope
One lexical scope of a composed workspace — a compile-time region a name lookup starts from and then walks outward, through the Parent chain, until the name binds or the global scope is reached (MS-VBAL §5.2 Name Binding, RD-VBAL §2.3.1.2).
- PrecompilerConstantSymbol
A project-level conditional-compilation constant (MS-VBAL §3.4.1) — supplied by the
.rdprojor a--defineargument, and shadowed by a module's own#Const.
- ReferencePriorityInfo
One entry in a workspace's ordered reference list, as the runtime sees it: a reference's source-visible name and its position in that list. Nothing more — a referenced library's members are not carried here. They are contributed by an
ISymbolProviderand resolved throughISymbolResolverlike any other symbol (today theVBAintrinsics come from the environment host; a dedicated library scope tier is planned). This type exists only so a name-resolution pass can break a cross-reference tie by list position.
- ScopeTree
The lexical-scope tree of a composed set of symbols: a Global scope at the root, a scope per module, and a scope per procedure body. Built by ScopeTreeBuilder; the static and run-time name resolvers walk it to bind an identifier (RD-VBAL §2.3.1.2).
- ScopeTreeBuilder
Builds a ScopeTree from a flat set of composed symbols. Placement is structural — a symbol's concrete type, its ParentUri, and its access modifier decide its scope:
- module symbols, project-level precompiler constants, global StaticSymbols, and anything the tree cannot otherwise place → the Global scope;
- a standard module's non-
Privatemembers → the project scope, where sibling modules see them; - every module's members — fields, constants, procedures, properties, enums, user-defined
types, events,
Declares → that module's own scope; - a procedure's parameters and its procedure-local
Dim/Static/Const(and the dynamic array a bareReDimintroduces) → that procedure's scope.
Enum members and user-defined-type fields are reached through member access, not lexical scoping, so they are not placed in the tree. Unqualified enum-member visibility, and ordering referenced libraries by their
.rdprojpriority within the global scope, are later work.
- ScopeTreeSymbolResolver
The compile-time ISymbolResolver: binds an identifier by walking a ScopeTree outward from the scope a lookup originates in — the first scope that declares the name binds it (MS-VBAL §5.2 name binding, RD-VBAL §2.3.1.2). A name declared more than once in a single module or procedure scope resolves as Duplicate(IEnumerable<Symbol>); more than once at the project or global tier resolves as Ambiguous(IEnumerable<Symbol>).
- VBClassModuleSymbol
An unbound symbol representing a class module.
- VBLocalConstantSymbol
A
TypedSymbolrepresenting a procedure-localConstdeclaration (MS-VBAL §5.4.3.2). A local constant statically evaluates to a value of a fixed VBType, is visible only within its declaring procedure, and cannot be assigned at run-time; a module-levelConstis modelled by VBConstantMemberSymbol and anEnummember by VBEnumConstMemberSymbol.
- VBLocalVariableSymbol
A
TypedSymbolrepresenting any local variable.
- VBModuleSymbol
An unbound symbol representing any type of module.
- VBStandardModuleSymbol
An unbound symbol representing a standard module.
- VBStaticLocalVariableSymbol
Represents a semantically
Staticlocal variable symbol.
Structs
- ModuleDirectives
The resolved module-level directives a VBModuleSymbol was declared under — the
Option ...statements (MS-VBAL §5.2.1) andAttribute VB_...declarations (MS-VBAL §4.2) a static-semantics pass needs to know about, plus RD-VBA's own annotation-driven dials (Option Strict).
Enums
- LexicalScopeKind
The tier of a LexicalScope in the resolution tree. Distinct from ScopeKind, which says where a symbol is allocated, not where a name binds. A lookup walks these outward: Procedure → Module → Project → Global (RD-VBAL §2.3.1.2).
- LocalDeclarationKind
How a VBLocalVariableSymbol first entered its procedure scope.