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