Table of Contents

Namespace RDCore.SDK.Model.Symbols

Classes

ClassLifecycleInterface

The interface every class module implicitly implements: its lifecycle (MS-VBAL §5.3.1.10).

CompositeSymbolResolver

Chains ISymbolResolvers: ResolveValue(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 BoundSymbol that is inferred from an unbound expression and accessible to IntelliSense and analyzers, but not yet materialized in source code.

GlobalSymbols

The symbols that belong to no declaration.

ImplementedInterfaceResolution

Resolves the interface names of the Implements directives of class modules (ImplementedInterfaceNames, MS-VBAL §5.2.4.2) to the classes they name.

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).

LocalDeclarationKindExtensions

Reads a LocalDeclarationKind.

PrecompilerConstantSymbol

A project-level conditional-compilation constant (MS-VBAL §3.4.1) — supplied by the .rdproj or a --define argument, 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 ISymbolProvider and resolved through ISymbolResolver like any other symbol (today the VBA intrinsics 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-Private members → 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 bare ReDim introduces) → that procedure's scope.

An enum constant is placed in the scope that declares its Enum, since that is where MS-VBAL §5.2.3.4 makes it accessible — it parents to the enum, not to a scope, so its placement is resolved through the enum. A user-defined type's fields are reached through member access rather than lexical scoping, and are not placed at all. Ordering referenced libraries by their .rdproj priority within the global scope is later work.

ScopeTreeSymbolResolver

The compile-time ISymbolResolver: binds an identifier by walking a ScopeTree from the scope a lookup originates in — the first tier that declares the name binds it (MS-VBAL §5.6.10, 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 TypedSymbol representing a procedure-local Const declaration (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-level Const is modelled by VBConstantMemberSymbol and an Enum member by VBEnumConstMemberSymbol.

VBLocalVariableSymbol

A TypedSymbol representing any local variable.

VBModuleSymbol

An unbound symbol representing any type of module.

VBPredeclaredInstanceSymbol

The default instance variable of a class module whose VB_PredeclaredId attribute is True (MS-VBAL §5.2.4.1.2): a variable named after the class, declared as that class, created with module extent as if declared As New — that is, an automatic instantiation variable (AutoInstantiated, §2.5.1) — without any code declaring it, so the class name itself can be used as if it were an automatic instantiation variable, the way UserForm1.Show names a form's default instance.

VBProjectSymbol

The enclosing VBA project itself, as a resolvable, named symbol — the Enclosing Project namespace tier of MS-VBAL 5.6.4's type binding context: a qualified type reference like Project.ClassName resolves Project here before looking up ClassName.

VBStandardModuleSymbol

An unbound symbol representing a standard module.

VBStaticLocalVariableSymbol

Represents a semantically Static local variable symbol.

Structs

ModuleDirectives

The resolved module-level directives a VBModuleSymbol was declared under — the Option ... statements (MS-VBAL §5.2.1) and Attribute 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

ImplementationAccess

What is done to a public variable of an interface, which is implemented by property declarations (MS-VBAL §5.3.1.9).

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.

OptionCompare

The comparison mode of a module: how the relational operators compare String values (MS-VBAL §5.2.1.1, §5.6.9.5).

VBAutomationKind

Whether a class module's own live object reference is COM Automation-capable (IDispatch, MS-VBAL 6.1.1.16's own vbObject VBVarType tag) or IUnknown-only (vbDataObject) — a static fact about the class itself, not about any one instance of it.