Browse Source

[Ast] CSharpUtil: extract negating a relational operator into a method

newNRvisualizers
Mansheng Yang 14 years ago
parent
commit
0b81174081
  1. 50
      ICSharpCode.NRefactory.CSharp/Ast/CSharpUtil.cs

50
ICSharpCode.NRefactory.CSharp/Ast/CSharpUtil.cs

@ -51,28 +51,11 @@ namespace ICSharpCode.NRefactory.CSharp @@ -51,28 +51,11 @@ namespace ICSharpCode.NRefactory.CSharp
if (condition is BinaryOperatorExpression) {
var bOp = (BinaryOperatorExpression)condition;
switch (bOp.Operator) {
case BinaryOperatorType.GreaterThan:
bOp.Operator = BinaryOperatorType.LessThanOrEqual;
return bOp;
case BinaryOperatorType.GreaterThanOrEqual:
bOp.Operator = BinaryOperatorType.LessThan;
return bOp;
case BinaryOperatorType.Equality:
bOp.Operator = BinaryOperatorType.InEquality;
return bOp;
case BinaryOperatorType.InEquality:
bOp.Operator = BinaryOperatorType.Equality;
return bOp;
case BinaryOperatorType.LessThan:
bOp.Operator = BinaryOperatorType.GreaterThanOrEqual;
return bOp;
case BinaryOperatorType.LessThanOrEqual:
bOp.Operator = BinaryOperatorType.GreaterThan;
return bOp;
default:
var negatedOp = NegateRelationalOperator (bOp.Operator);
if (negatedOp == BinaryOperatorType.Any)
return new UnaryOperatorExpression (UnaryOperatorType.Not, new ParenthesizedExpression (condition));
}
bOp.Operator = negatedOp;
return bOp;
}
if (condition is ConditionalExpression) {
var cEx = condition as ConditionalExpression;
@ -88,6 +71,31 @@ namespace ICSharpCode.NRefactory.CSharp @@ -88,6 +71,31 @@ namespace ICSharpCode.NRefactory.CSharp
return new UnaryOperatorExpression (UnaryOperatorType.Not, condition);
}
/// <summary>
/// Get negation of the specified relational operator
/// </summary>
/// <returns>
/// negation of the specified relational operator, or BinaryOperatorType.Any if it's not a relational operator
/// </returns>
public static BinaryOperatorType NegateRelationalOperator (BinaryOperatorType op)
{
switch (op) {
case BinaryOperatorType.GreaterThan:
return BinaryOperatorType.LessThanOrEqual;
case BinaryOperatorType.GreaterThanOrEqual:
return BinaryOperatorType.LessThan;
case BinaryOperatorType.Equality:
return BinaryOperatorType.InEquality;
case BinaryOperatorType.InEquality:
return BinaryOperatorType.Equality;
case BinaryOperatorType.LessThan:
return BinaryOperatorType.GreaterThanOrEqual;
case BinaryOperatorType.LessThanOrEqual:
return BinaryOperatorType.GreaterThan;
}
return BinaryOperatorType.Any;
}
}
}

Loading…
Cancel
Save