diff options
author | Daniel Grunwald <daniel@danielgrunwald.de> | 2016-06-26 16:18:27 +0300 |
---|---|---|
committer | Daniel Grunwald <daniel@danielgrunwald.de> | 2016-06-26 16:18:36 +0300 |
commit | 8cf15ccebee89d589fbc23fbe61fcc9ff1878a67 (patch) | |
tree | 6682e0fab411ef16eef45e8f457c850d928d885a | |
parent | f89093760da14a6f1c42161d0428c990434d1ecd (diff) |
Fix resolving '0 - Enum'
-rw-r--r-- | ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs | 2 | ||||
-rw-r--r-- | ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs index ee5b84b0..eb949576 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs @@ -725,7 +725,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver } if (rhsType.Kind == TypeKind.Enum) { // U operator –(E x, E y); - if (TryConvertEnum(ref lhs, rhs.Type, ref isNullable, ref rhs, allowConversionFromConstantZero: false)) { + if (TryConvertEnum(ref lhs, rhs.Type, ref isNullable, ref rhs)) { return HandleEnumSubtraction(isNullable, rhsType, lhs, rhs); } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs index 35d57069..520bc189 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs @@ -193,6 +193,12 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver AssertConstant(StringComparison.InvariantCulture, resolver.ResolveBinaryOperator( BinaryOperatorType.Subtract, MakeConstant(StringComparison.InvariantCulture), MakeConstant(0))); + AssertConstant(0 - StringComparison.InvariantCulture, resolver.ResolveBinaryOperator( + BinaryOperatorType.Subtract, MakeConstant(0), MakeConstant(StringComparison.InvariantCulture))); + + AssertConstant(1 - StringComparison.InvariantCulture, resolver.ResolveBinaryOperator( + BinaryOperatorType.Subtract, MakeConstant(1), MakeConstant(StringComparison.InvariantCulture))); + TestOperator(MakeResult(typeof(StringComparison?)), BinaryOperatorType.Subtract, MakeResult(typeof(int)), Conversion.IdentityConversion, Conversion.ImplicitNullableConversion, typeof(StringComparison?)); |