Class 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.
public sealed record VBProjectSymbol : Symbol, IEquatable<Symbol>, IEquatable<VBProjectSymbol>
- Inheritance
-
VBProjectSymbol
- Implements
- Inherited Members
Remarks
Scoped to the enclosing (workspace) project only for now: a referenced project's own module namespace (MS-VBAL's further "Referenced Project" / "Module in Referenced Project" tiers) needs a library symbol provider that doesn't exist yet — qualifying by a referenced project's name isn't modeled here.
Constructors
VBProjectSymbol(Uri, string)
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.
public VBProjectSymbol(Uri WorkspaceRoot, string Name)
Parameters
WorkspaceRootUriA
Urirepresenting the absolute path to the workspace.NamestringThe project's own name (its
.rdproj/VBA project name).
Remarks
Scoped to the enclosing (workspace) project only for now: a referenced project's own module namespace (MS-VBAL's further "Referenced Project" / "Module in Referenced Project" tiers) needs a library symbol provider that doesn't exist yet — qualifying by a referenced project's name isn't modeled here.
Methods
ResolveQualifiedType(ISymbolResolver, string?, string, Uri)
Resolves the type name in the type binding context (MS-VBAL 5.6.4),
honoring an optional qualifier (a project name, e.g. the Project in
Project.ClassName).
public static SymbolResolutionResult ResolveQualifiedType(ISymbolResolver resolver, string? qualifier, string name, Uri handle)
Parameters
resolverISymbolResolverqualifierstringnamestringhandleUri
Returns
Remarks
The lookup is positional. A bare name, and the last part of a qualified one, is bound by
ResolveType(string, ScopeKind, Uri); the qualifier is a namespace, bound by
ResolveQualifier(string, ScopeKind, Uri), where neither a user-defined type nor an Enum type is a
candidate — neither can contain a type. A Type of the enclosing module that shares the project's
name therefore does not stand in for the project in Project.ClassName, though it is still what the bare
name Project means. When the qualifier is the enclosing project, name is looked up
from the project's own scope, not from handle, so nothing declared in the enclosing module
can hide the project's module or type it names. A qualifier that doesn't resolve to a
VBProjectSymbol stays unbound, rather than silently ignoring a qualifier that might have named
something real (a referenced project) this doesn't model yet.