2.4.3 Meta and Advanced Types
Meta types are introspective data types that can reflectively describe the type system itself.
Warning
Meta types must not be exposed directly to RD-VBA source code. Doing so would break the language on a fundamental level.
🧩 Meta types provide language-level extension possibilities.
The type system includes and uses meta types, such as VBTypeDescValue; see RD-VBAL §3.0.3 Binding Contexts.
The meta types are:
| Meta type | Section |
|---|---|
| VBTypeDesc | §2.4.3.1 |
| VBMemberDesc | §2.4.3.2 |
| VBParameterDesc | §2.4.3.3 |
2.4.3.1 VBTypeDesc
VBTypeDesc represents (describes) a VBType within the type system.
👉 A value of the VBTypeDesc meta type, a VBTypeDescValue, is used in the implementation of:
- the
Isrelational operator (see RD-VBAL §5.6.9.7 Is Operator); - let-coercion (see RD-VBAL §5.5.1.2 Runtime semantics).
Both use a VBTypeDescValue because their semantics demand knowledge of a data type where a value is normally required.
Warning
Because a VBTypeDescValue is a data value that represents a data type, the implementation of both static and runtime semantics must account for the possibility of pattern-matching such a type descriptor by accident.
Note
Not implemented. None of the descriptor types other than VBTypeDesc are in use.
2.4.3.2 VBMemberDesc
VBMemberDesc is an abstract descriptor that represents (describes) any VBTypeMemberSymbol.
RD-VBAL groups the following member descriptors under VBMemberDesc:
| Section | Descriptor |
|---|---|
| §2.4.3.2.1 | VBProcedureMemberDesc |
| §2.4.3.2.2 | VBPropertyLetProcedureDesc |
| §2.4.3.2.3 | VBPropertySetProcedureDesc |
| §2.4.3.2.4 | VBReturningMemberDesc |
2.4.3.2.1 VBProcedureMemberDesc
VBProcedureMemberDesc is a descriptor that represents (describes) any VBProcedureMemberSymbol.
2.4.3.2.2 VBPropertyLetProcedureDesc
VBPropertyLetProcedureDesc is a descriptor that represents (describes) a VBPropertyLetMemberSymbol.
2.4.3.2.3 VBPropertySetProcedureDesc
VBPropertySetProcedureDesc is a descriptor that represents (describes) a VBPropertySetMemberSymbol.
2.4.3.2.4 VBReturningMemberDesc
VBReturningMemberDesc is an abstract descriptor that represents (describes) any VBReturningMemberSymbol.
RD-VBAL groups the following descriptors under VBReturningMemberDesc:
| Section | Descriptor |
|---|---|
| §2.4.3.2.4.1 | VBFunctionProcedureDesc |
| §2.4.3.2.4.2 | VBPropertyGetProcedureDesc |
2.4.3.2.4.1 VBFunctionProcedureDesc
VBFunctionProcedureDesc is a descriptor that represents (describes) a VBFunctionMemberSymbol.
2.4.3.2.4.2 VBPropertyGetProcedureDesc
VBPropertyGetProcedureDesc is a descriptor that represents (describes) a VBPropertyGetMemberSymbol.
2.4.3.3 VBParameterDesc
VBParameterDesc is a descriptor that represents (describes) a VBParameterSymbol.
⏮️ RD-VBAL §2.4.2 Non-intrinsic Types | ⏭️ RD-VBAL §2.4.4 Deferred Types