Enum ValueExpressionSemanticFlags
The semantic flags of an expression that yields a value: the facts of how it is bound and what it is written as.
[Flags]
public enum ValueExpressionSemanticFlags
Fields
AssignmentTarget = 256What it names is written to: it is the target of an assignment, the counter or control variable of a loop, the string a
Midstatement replaces a part of, or the array aReDimgives its dimensions. An element of an array is written through the array, which is what is flagged.CaseMismatch = 64The name is written in a different case than the declaration it refers to.
DefaultMember = 4It indexes an object, which is a call of the default member of its class:
c(1)isc.Item(1).DictionaryAccess = 16It is a dictionary access,
owner!Member: a call of the default member of the owner with the name of the member as its argument.EmptyLetToArray = 32768It is the
Emptyor theNullliteral, Let-assigned to an array: a variable, or the result of a function, declared as one. Its declared type isVariant(MS-VBAL §3.3.5.2), which is valid to Let-coerce to an array; the value it holds raises run-time error 13 (Type mismatch) whenever it runs, as MS-VBA has it.ExplicitCallKeyword = 128It is the callee of a
Callstatement written with theCallkeyword (IsExplicitCall), the obsolete form of the statement.IgnoredTypeCharacter = 8192It is a name of a reserved function of the library written with a type character that does not match the function's declared type (
Len$,CVar$,Abs%): MS-VBAL §5.6.10 makes the name invalid, and MS-VBA ignores the character.IsMissingAlwaysFalse = 65536A call of
IsMissing(MS-VBAL §6.1.2.7.1.6) of a parameter that can never be missing, so that the call is alwaysFalse: a parameter that is not aVariant, which an omitted argument does not leave missing, or anOptionalVariantwith a default value, which an omitted argument gives that value. AVariantparameter with no default can be missing, required or not (an omitted argument passed on to it), and so can aParamArraywith no elements, as MS-VBA has it.LateBound = 2The member it names is not one its owner's declared type says it has, and is bound when the expression runs: the owner is a
Variantor anObject.Literal = 1The expression is a literal: its value is what is written.
OverflowsWhereVariantWidens = 4096It is an addition, a subtraction or a multiplication of
Byte,IntegerorLongvalues, one of which isAbs,IntorFixof a number: MS-VBA types that call as the number's type, and the operation overflows (error 6) where MS-VBAL, which declares the callAs Variant, has aVariantoperation widen to a larger type (ArgumentTypedFunctions).PassedAsArgument = 512It is an argument of a call that may take it by reference: what the procedure does with it, reads it or writes to it, is not what the expression says. An argument that is passed by value, and an index of an array, is not.
ProcedureCall = 32It invokes a procedure, however it is written: a name with no argument list, or an index expression on a procedure.
RedundantByVal = 1024It is an argument written with
ByValfor a parameter that isByValalready: the keyword changes nothing. MS-VBA compiles it, where MS-VBAL §5.6.13.1 refuses it (RD-VBAL §5.6.13.1).SetHasNoDefaultMemberToSet = 2048It is a call of a function, or of a property that has no
Property Set, named as the target of aSetstatement outside its own body, of a class whose default member has noProperty Set: what it returns has nothing to Set, and theSetraises run-time error 438 (Object doesn't support this property or method) whenever it runs. MS-VBA compiles it (MS-VBAL §5.4.3.9).A call of a type that is neither an object nor a
Variantis a compile error as the target of aSetalready; one of anObjector aVariantfails or not by the value it returns, which only an evaluation of it can tell.ValueOfObjectWithNoDefaultMember = 16384It is an object of a class that has no default member, where a value is expected: the value of a
Letassignment, an operand of an operator other thanIs, an argument of a parameter declared with a value type. MS-VBAL §5.5.1.1 makes it statically invalid; MS-VBA compiles it, and raises run-time error 438 (Object doesn't support this property or method) whenever it runs, or 91 when the object isNothing.WithBlockRelative = 8It is written relative to the object of an enclosing
Withblock:.Memberor!Member.