Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2016-06-26 16:18:27 +0300
committerDaniel Grunwald <daniel@danielgrunwald.de>2016-06-26 16:18:36 +0300
commit8cf15ccebee89d589fbc23fbe61fcc9ff1878a67 (patch)
tree6682e0fab411ef16eef45e8f457c850d928d885a
parentf89093760da14a6f1c42161d0428c990434d1ecd (diff)
Fix resolving '0 - Enum'
-rw-r--r--ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs2
-rw-r--r--ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs6
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?));