Microsoft.Cci.CodeModelToILConverter.TraverseAdditionRightOperandAndDoOperation C# (CSharp) Method

TraverseAdditionRightOperandAndDoOperation() private method

private TraverseAdditionRightOperandAndDoOperation ( IExpression expression ) : void
expression IExpression
return void
    private void TraverseAdditionRightOperandAndDoOperation(IExpression expression) {
      Contract.Assume(expression is IAddition);
      var addition = (IAddition)expression;
      this.Traverse(addition.RightOperand);
      OperationCode operationCode = OperationCode.Add;
      if (addition.CheckOverflow) {
        if (TypeHelper.IsSignedPrimitive(addition.Type))
          operationCode = OperationCode.Add_Ovf;
        else if (TypeHelper.IsUnsignedPrimitive(addition.Type))
          operationCode = OperationCode.Add_Ovf_Un;
        else if (addition.Type.TypeCode == PrimitiveTypeCode.Pointer
          || addition.Type.TypeCode == PrimitiveTypeCode.Reference) {
          if (TypeHelper.IsSignedPrimitive(addition.LeftOperand.Type) ||
            TypeHelper.IsSignedPrimitive(addition.RightOperand.Type))
            operationCode = OperationCode.Add_Ovf;
          else
            operationCode = OperationCode.Add_Ovf_Un;
        }
      }
      this.EmitSourceLocation(addition);
      this.generator.Emit(operationCode);
      this.StackSize--;
    }