Class TypeSlimDerivationVisitor
Expression slim visitor that recurses over the expression tree and attempts to return type information.
Inheritance
Inherited Members
Namespace: System.Linq.CompilerServices.Bonsai
Assembly: Nuqleon.Linq.Expressions.Bonsai.dll
Syntax
public class TypeSlimDerivationVisitor : ExpressionSlimVisitor<TypeSlim, TypeSlim, TypeSlim, TypeSlim, TypeSlim, TypeSlim>
Constructors
TypeSlimDerivationVisitor()
Creates a new TypeSlimDerivationVisitor with the default equality comparer for TypeSlim instances.
Declaration
public TypeSlimDerivationVisitor()
TypeSlimDerivationVisitor(IEqualityComparer<TypeSlim>)
Creates a new TypeSlimDerivationVisitor with the specified equality comparer for TypeSlim instances.
Declaration
public TypeSlimDerivationVisitor(IEqualityComparer<TypeSlim> typeSlimEqualityComparer)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEqualityComparer<TypeSlim> | typeSlimEqualityComparer | The equality comparer to use for TypeSlim equality checks. |
Methods
CheckDerivedType(TypeSlim, ExpressionSlim)
Hook to check the derivation result for an expression. Could be used to detect occurrences of null
results.
Declaration
protected virtual TypeSlim CheckDerivedType(TypeSlim type, ExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
TypeSlim | type | The derivation result. |
ExpressionSlim | node | The expression the result was derived from. |
Returns
Type | Description |
---|---|
TypeSlim | The derivation result. |
MakeBinary(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary expression.
Declaration
protected override TypeSlim MakeBinary(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
MakeBinaryArithmetic(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from an arithmetic binary expression.
Declaration
protected virtual TypeSlim MakeBinaryArithmetic(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBinaryArrayIndex(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary array index expression.
Declaration
protected virtual TypeSlim MakeBinaryArrayIndex(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBinaryBitwise(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary array index expression.
Declaration
protected virtual TypeSlim MakeBinaryBitwise(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBinaryCoalesce(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary coalesce expression.
Declaration
protected virtual TypeSlim MakeBinaryCoalesce(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBinaryComparison(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary comparison expression.
Declaration
protected virtual TypeSlim MakeBinaryComparison(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Remarks
There is a known issue for deriving incorrect types for user-defined binary operators.
MakeBinaryConditionalLogic(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a logical binary expression.
Declaration
protected virtual TypeSlim MakeBinaryConditionalLogic(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBinaryMethodBased(BinaryExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a binary expression with a defined method.
Declaration
protected virtual TypeSlim MakeBinaryMethodBased(BinaryExpressionSlim node, TypeSlim left, TypeSlim conversion, TypeSlim right)
Parameters
Type | Name | Description |
---|---|---|
BinaryExpressionSlim | node | The binary expression. |
TypeSlim | left | The type derived from the left expression. |
TypeSlim | conversion | The type derived from the conversion expression. |
TypeSlim | right | The type derived from the right expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeBlock(BlockExpressionSlim, ReadOnlyCollection<TypeSlim>, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a block expression.
Declaration
protected override TypeSlim MakeBlock(BlockExpressionSlim node, ReadOnlyCollection<TypeSlim> variables, ReadOnlyCollection<TypeSlim> expressions)
Parameters
Type | Name | Description |
---|---|---|
BlockExpressionSlim | node | The block expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | variables | The derived types of the variable expressions. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | expressions | The derived type of the body expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeCatchBlock(CatchBlockSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a catch block.
Declaration
protected override TypeSlim MakeCatchBlock(CatchBlockSlim node, TypeSlim variable, TypeSlim body, TypeSlim filter)
Parameters
Type | Name | Description |
---|---|---|
CatchBlockSlim | node | The catch block. |
TypeSlim | variable | The derived type of the variable expression. |
TypeSlim | body | The derived type of the body expression. |
TypeSlim | filter | The derived type of the filter expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeConditional(ConditionalExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a conditional expression.
Declaration
protected override TypeSlim MakeConditional(ConditionalExpressionSlim node, TypeSlim test, TypeSlim ifTrue, TypeSlim ifFalse)
Parameters
Type | Name | Description |
---|---|---|
ConditionalExpressionSlim | node | The conditional expression. |
TypeSlim | test | The derived type of the test expression. |
TypeSlim | ifTrue | The derived type of the if true branch expression. |
TypeSlim | ifFalse | The derived type of the if false branch expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeConstant(ConstantExpressionSlim)
Attempt to derive a type from a constant expression.
Declaration
protected override TypeSlim MakeConstant(ConstantExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
ConstantExpressionSlim | node | The constant expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeDefault(DefaultExpressionSlim)
Attempt to derive a type from a default expression.
Declaration
protected override TypeSlim MakeDefault(DefaultExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
DefaultExpressionSlim | node | The default expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeElementInit(ElementInitSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from an element init node.
Declaration
protected override TypeSlim MakeElementInit(ElementInitSlim node, ReadOnlyCollection<TypeSlim> arguments)
Parameters
Type | Name | Description |
---|---|---|
ElementInitSlim | node | The element init node. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | arguments | The arguments to the element init. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeGoto(GotoExpressionSlim, TypeSlim, TypeSlim)
Attempt to derive a type from an goto expression.
Declaration
protected override TypeSlim MakeGoto(GotoExpressionSlim node, TypeSlim target, TypeSlim value)
Parameters
Type | Name | Description |
---|---|---|
GotoExpressionSlim | node | The goto expression. |
TypeSlim | target | The derived type of the target label. |
TypeSlim | value | The derived type of the value expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeIndex(IndexExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from an index expression.
Declaration
protected override TypeSlim MakeIndex(IndexExpressionSlim node, TypeSlim object, ReadOnlyCollection<TypeSlim> arguments)
Parameters
Type | Name | Description |
---|---|---|
IndexExpressionSlim | node | The index expression. |
TypeSlim | object | The derived type of the object expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | arguments | The derived types of the argument expressions. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeInvocation(InvocationExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from an invocation expression.
Declaration
protected override TypeSlim MakeInvocation(InvocationExpressionSlim node, TypeSlim expression, ReadOnlyCollection<TypeSlim> arguments)
Parameters
Type | Name | Description |
---|---|---|
InvocationExpressionSlim | node | The invocation expression. |
TypeSlim | expression | The derived type of the invocation target. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | arguments | The derived types of the invocation arguments. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeLabel(LabelExpressionSlim, TypeSlim, TypeSlim)
Attempt to derive a type from an label expression.
Declaration
protected override TypeSlim MakeLabel(LabelExpressionSlim node, TypeSlim target, TypeSlim defaultValue)
Parameters
Type | Name | Description |
---|---|---|
LabelExpressionSlim | node | The label expression. |
TypeSlim | target | The derived type of the target label. |
TypeSlim | defaultValue | The derived type of the default value expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeLabelTarget(LabelTargetSlim)
Attempt to derive a type from an label target.
Declaration
protected override TypeSlim MakeLabelTarget(LabelTargetSlim node)
Parameters
Type | Name | Description |
---|---|---|
LabelTargetSlim | node | The label target. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeLambda(LambdaExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a lambda expression.
Declaration
protected override TypeSlim MakeLambda(LambdaExpressionSlim node, TypeSlim body, ReadOnlyCollection<TypeSlim> parameters)
Parameters
Type | Name | Description |
---|---|---|
LambdaExpressionSlim | node | The lambda expression. |
TypeSlim | body | The derived type of the body. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | parameters | The derived types of the parameters. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
MakeListInit(ListInitExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a list init expression.
Declaration
protected override TypeSlim MakeListInit(ListInitExpressionSlim node, TypeSlim newExpression, ReadOnlyCollection<TypeSlim> initializers)
Parameters
Type | Name | Description |
---|---|---|
ListInitExpressionSlim | node | The list init expression. |
TypeSlim | newExpression | The derived type of the new expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | initializers | The derived types of the element initializers |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeLoop(LoopExpressionSlim, TypeSlim, TypeSlim, TypeSlim)
Attempt to derive a type from a loop expression.
Declaration
protected override TypeSlim MakeLoop(LoopExpressionSlim node, TypeSlim body, TypeSlim breakLabel, TypeSlim continueLabel)
Parameters
Type | Name | Description |
---|---|---|
LoopExpressionSlim | node | The loop expression. |
TypeSlim | body | The derived type of the body expression. |
TypeSlim | breakLabel | The derived type of the break label. |
TypeSlim | continueLabel | The derived type of the continue label. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMember(MemberExpressionSlim, TypeSlim)
Attempt to derive a type from a member expression.
Declaration
protected override TypeSlim MakeMember(MemberExpressionSlim node, TypeSlim expression)
Parameters
Type | Name | Description |
---|---|---|
MemberExpressionSlim | node | The member expression. |
TypeSlim | expression | The derived type of the child expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMemberAssignment(MemberAssignmentSlim, TypeSlim)
Attempt to derive a type from a member assignment binding.
Declaration
protected override TypeSlim MakeMemberAssignment(MemberAssignmentSlim node, TypeSlim expression)
Parameters
Type | Name | Description |
---|---|---|
MemberAssignmentSlim | node | The member assignment binding. |
TypeSlim | expression | The derived type of the assigned expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMemberInit(MemberInitExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a member init expression.
Declaration
protected override TypeSlim MakeMemberInit(MemberInitExpressionSlim node, TypeSlim newExpression, ReadOnlyCollection<TypeSlim> bindings)
Parameters
Type | Name | Description |
---|---|---|
MemberInitExpressionSlim | node | The member init expression. |
TypeSlim | newExpression | The derived type of the new expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | bindings | The derived types of the member bindings. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMemberListBinding(MemberListBindingSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a member list binding.
Declaration
protected override TypeSlim MakeMemberListBinding(MemberListBindingSlim node, ReadOnlyCollection<TypeSlim> initializers)
Parameters
Type | Name | Description |
---|---|---|
MemberListBindingSlim | node | The member list binding. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | initializers | The derived types of the element initializers. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMemberMemberBinding(MemberMemberBindingSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a member member binding.
Declaration
protected override TypeSlim MakeMemberMemberBinding(MemberMemberBindingSlim node, ReadOnlyCollection<TypeSlim> bindings)
Parameters
Type | Name | Description |
---|---|---|
MemberMemberBindingSlim | node | The member member binding. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | bindings | The derived types of the child member bindings. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeMethodCall(MethodCallExpressionSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a method call expression.
Declaration
protected override TypeSlim MakeMethodCall(MethodCallExpressionSlim node, TypeSlim object, ReadOnlyCollection<TypeSlim> arguments)
Parameters
Type | Name | Description |
---|---|---|
MethodCallExpressionSlim | node | The method call expression. |
TypeSlim | object | The derived type of the instance. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | arguments | The derived types of the arguments. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeNew(NewExpressionSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a new expression.
Declaration
protected override TypeSlim MakeNew(NewExpressionSlim node, ReadOnlyCollection<TypeSlim> arguments)
Parameters
Type | Name | Description |
---|---|---|
NewExpressionSlim | node | The new expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | arguments | The derived types of the arguments. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeNewArray(NewArrayExpressionSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a new array expression.
Declaration
protected override TypeSlim MakeNewArray(NewArrayExpressionSlim node, ReadOnlyCollection<TypeSlim> expressions)
Parameters
Type | Name | Description |
---|---|---|
NewArrayExpressionSlim | node | The new array expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | expressions | The derived types of the arguments. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeParameter(ParameterExpressionSlim)
Attempt to derive a type from a parameter expression.
Declaration
protected override TypeSlim MakeParameter(ParameterExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
ParameterExpressionSlim | node | The parameter expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
MakeSwitch(SwitchExpressionSlim, TypeSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a switch expression.
Declaration
protected override TypeSlim MakeSwitch(SwitchExpressionSlim node, TypeSlim switchValue, TypeSlim defaultBody, ReadOnlyCollection<TypeSlim> cases)
Parameters
Type | Name | Description |
---|---|---|
SwitchExpressionSlim | node | The switch expression. |
TypeSlim | switchValue | The derived type of the switch value expression. |
TypeSlim | defaultBody | The derived types of the default body expressions. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | cases | The derived types of the switch cases. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeSwitchCase(SwitchCaseSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a switch case.
Declaration
protected override TypeSlim MakeSwitchCase(SwitchCaseSlim node, TypeSlim body, ReadOnlyCollection<TypeSlim> testValues)
Parameters
Type | Name | Description |
---|---|---|
SwitchCaseSlim | node | The switch case. |
TypeSlim | body | The derived type of the body expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | testValues | The derived types of the test value expressions. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeTry(TryExpressionSlim, TypeSlim, TypeSlim, TypeSlim, ReadOnlyCollection<TypeSlim>)
Attempt to derive a type from a try expression.
Declaration
protected override TypeSlim MakeTry(TryExpressionSlim node, TypeSlim body, TypeSlim finally, TypeSlim fault, ReadOnlyCollection<TypeSlim> handlers)
Parameters
Type | Name | Description |
---|---|---|
TryExpressionSlim | node | The try expression. |
TypeSlim | body | The derived type of the body expression. |
TypeSlim | finally | The derived type of the finally expression. |
TypeSlim | fault | The derived type of the fault expression. |
System.Collections.ObjectModel.ReadOnlyCollection<TypeSlim> | handlers | The derived types of the handler expressions. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeTypeBinary(TypeBinaryExpressionSlim, TypeSlim)
Attempt to derive a type from a type binary expression.
Declaration
protected override TypeSlim MakeTypeBinary(TypeBinaryExpressionSlim node, TypeSlim expression)
Parameters
Type | Name | Description |
---|---|---|
TypeBinaryExpressionSlim | node | The type binary expression. |
TypeSlim | expression | The derived type of the child expression. |
Returns
Type | Description |
---|---|
TypeSlim | Always throws exception. |
Overrides
MakeUnary(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from a unary expression.
Declaration
protected override TypeSlim MakeUnary(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
MakeUnaryArithmetic(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from an arithmetic unary expression.
Declaration
protected virtual TypeSlim MakeUnaryArithmetic(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeUnaryArithmeticSigned(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from an arithmetic unary expression on signed arithmetic types.
Declaration
protected virtual TypeSlim MakeUnaryArithmeticSigned(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeUnaryMethodBased(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from a method-based unary expression.
Declaration
protected virtual TypeSlim MakeUnaryMethodBased(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeUnaryNot(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from a unary not expression.
Declaration
protected virtual TypeSlim MakeUnaryNot(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
MakeUnaryOnesComplement(UnaryExpressionSlim, TypeSlim)
Attempt to derive a type from a unary ones complement expression.
Declaration
protected virtual TypeSlim MakeUnaryOnesComplement(UnaryExpressionSlim node, TypeSlim operand)
Parameters
Type | Name | Description |
---|---|---|
UnaryExpressionSlim | node | The unary expression. |
TypeSlim | operand | The derived type of the operand. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
VisitBlock(BlockExpressionSlim)
Attempt to derive a type from a block expression.
Declaration
protected override TypeSlim VisitBlock(BlockExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
BlockExpressionSlim | node | The block expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitConditional(ConditionalExpressionSlim)
Attempt to derive a type from a conditional expression.
Declaration
protected override TypeSlim VisitConditional(ConditionalExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
ConditionalExpressionSlim | node | The conditional expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitConstant(ConstantExpressionSlim)
Attempt to derive a type from a constant expression.
Declaration
protected override TypeSlim VisitConstant(ConstantExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
ConstantExpressionSlim | node | The constant expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitDefault(DefaultExpressionSlim)
Attempt to derive a type from a default expression.
Declaration
protected override TypeSlim VisitDefault(DefaultExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
DefaultExpressionSlim | node | The default expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitGoto(GotoExpressionSlim)
Attempt to derive a type from an goto expression.
Declaration
protected override TypeSlim VisitGoto(GotoExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
GotoExpressionSlim | node | The goto expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitIndex(IndexExpressionSlim)
Attempt to derive a type from an index expression.
Declaration
protected override TypeSlim VisitIndex(IndexExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
IndexExpressionSlim | node | The index expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitInvocation(InvocationExpressionSlim)
Attempt to derive a type from an invocation expression.
Declaration
protected override TypeSlim VisitInvocation(InvocationExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
InvocationExpressionSlim | node | The invocation expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitLabel(LabelExpressionSlim)
Attempt to derive a type from an label expression.
Declaration
protected override TypeSlim VisitLabel(LabelExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
LabelExpressionSlim | node | The label expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitLabelTarget(LabelTargetSlim)
Attempt to derive a type from an label target.
Declaration
protected override TypeSlim VisitLabelTarget(LabelTargetSlim node)
Parameters
Type | Name | Description |
---|---|---|
LabelTargetSlim | node | The label target. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitLambda(LambdaExpressionSlim)
Attempt to derive a type from a lambda expression.
Declaration
protected override TypeSlim VisitLambda(LambdaExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
LambdaExpressionSlim | node | The lambda expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitListInit(ListInitExpressionSlim)
Attempt to derive a type from a list init expression.
Declaration
protected override TypeSlim VisitListInit(ListInitExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
ListInitExpressionSlim | node | The list init expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitLoop(LoopExpressionSlim)
Attempt to derive a type from a loop expression.
Declaration
protected override TypeSlim VisitLoop(LoopExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
LoopExpressionSlim | node | The loop expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitMember(MemberExpressionSlim)
Attempt to derive a type from a member expression.
Declaration
protected override TypeSlim VisitMember(MemberExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
MemberExpressionSlim | node | The member expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitMemberInit(MemberInitExpressionSlim)
Attempt to derive a type from a member init expression.
Declaration
protected override TypeSlim VisitMemberInit(MemberInitExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
MemberInitExpressionSlim | node | The member init expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitMethodCall(MethodCallExpressionSlim)
Attempt to derive a type from a method call expression.
Declaration
protected override TypeSlim VisitMethodCall(MethodCallExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
MethodCallExpressionSlim | node | The method call expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitNew(NewExpressionSlim)
Attempt to derive a type from a new expression.
Declaration
protected override TypeSlim VisitNew(NewExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
NewExpressionSlim | node | The new expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitNewArray(NewArrayExpressionSlim)
Attempt to derive a type from a new array expression.
Declaration
protected override TypeSlim VisitNewArray(NewArrayExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
NewArrayExpressionSlim | node | The new array expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitSwitch(SwitchExpressionSlim)
Attempt to derive a type from a switch expression.
Declaration
protected override TypeSlim VisitSwitch(SwitchExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
SwitchExpressionSlim | node | The switch expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitSwitchCase(SwitchCaseSlim)
Attempt to derive a type from a switch case.
Declaration
protected override TypeSlim VisitSwitchCase(SwitchCaseSlim node)
Parameters
Type | Name | Description |
---|---|---|
SwitchCaseSlim | node | The switch case. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitTry(TryExpressionSlim)
Attempt to derive a type from a try expression.
Declaration
protected override TypeSlim VisitTry(TryExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
TryExpressionSlim | node | The try expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |
Overrides
VisitTypeBinary(TypeBinaryExpressionSlim)
Attempt to derive a type from a type binary expression.
Declaration
protected override TypeSlim VisitTypeBinary(TypeBinaryExpressionSlim node)
Parameters
Type | Name | Description |
---|---|---|
TypeBinaryExpressionSlim | node | The type binary expression. |
Returns
Type | Description |
---|---|
TypeSlim | The derived type, or null if it cannot be determined. |