Browse Source

Add BinaryOperatorType.IsBitwise extension.

pull/940/merge
Siegfried Pammer 8 years ago
parent
commit
c683567a8c
  1. 3
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
  2. 10
      ICSharpCode.Decompiler/CSharp/NRefactoryExtensions.cs

3
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -694,8 +694,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -694,8 +694,7 @@ namespace ICSharpCode.Decompiler.CSharp
}
}
if ((op == BinaryOperatorType.BitwiseAnd || op == BinaryOperatorType.BitwiseOr || op == BinaryOperatorType.ExclusiveOr)
&& (left.Type.Kind == TypeKind.Enum || right.Type.Kind == TypeKind.Enum)) {
if (op.IsBitwise() && (left.Type.Kind == TypeKind.Enum || right.Type.Kind == TypeKind.Enum)) {
left = AdjustConstantExpressionToType(left, right.Type);
right = AdjustConstantExpressionToType(right, left.Type);
}

10
ICSharpCode.Decompiler/CSharp/NRefactoryExtensions.cs

@ -99,5 +99,15 @@ namespace ICSharpCode.Decompiler.CSharp @@ -99,5 +99,15 @@ namespace ICSharpCode.Decompiler.CSharp
var simpleType = type as SimpleType;
return simpleType != null && simpleType.Identifier == "__arglist";
}
/// <summary>
/// Returns true if <paramref name="operatorType"/> is bitwise and, bitwise or, or exclusive or.
/// </summary>
public static bool IsBitwise(this BinaryOperatorType operatorType)
{
return operatorType == BinaryOperatorType.BitwiseAnd
|| operatorType == BinaryOperatorType.BitwiseOr
|| operatorType == BinaryOperatorType.ExclusiveOr;
}
}
}

Loading…
Cancel
Save