diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs index 3fac874ea9..9439b62851 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/CSharpResolver.cs @@ -804,6 +804,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver } else { lhs = Convert(lhs, m.Parameters[0].Type, builtinOperatorOR.ArgumentConversions[0]); rhs = Convert(rhs, m.Parameters[1].Type, builtinOperatorOR.ArgumentConversions[1]); + if (builtinOperatorOR.BestCandidate is OverloadResolution.ILiftedOperator) { + return new OperatorResolveResult( + resultType, BinaryOperatorExpression.GetLinqNodeType(op, this.CheckForOverflow), + null, true, new[] { lhs, rhs }); + } return BinaryOperatorResolveResult(resultType, lhs, op, rhs); } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs index 4e8d5d23a6..d4c1287f9f 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/BinaryOperatorTests.cs @@ -671,5 +671,35 @@ class Test { Assert.IsFalse(irr.IsError); Assert.AreEqual(compilation.FindType(KnownTypeCode.Boolean), irr.Type); } + + [Test] + public void IsLiftedProperty() + { + string program = @" +class Test { + static void Inc() { + int? a = 0, b = 0; + int? c = $a + b$; + } +}"; + var irr = Resolve(program); + Assert.IsFalse(irr.IsError); + Assert.IsTrue(irr.IsLiftedOperator); + } + + [Test] + public void IsLiftedProperty2() + { + string program = @" +class Test { + static void Inc() { + int? a = 0, b = 0; + $b += a$; + } +}"; + var irr = Resolve(program); + Assert.IsFalse(irr.IsError); + Assert.IsTrue(irr.IsLiftedOperator); + } } } diff --git a/ICSharpCode.NRefactory.Tests/ICSharpCode.NRefactory.Tests.csproj b/ICSharpCode.NRefactory.Tests/ICSharpCode.NRefactory.Tests.csproj index 08973c8419..70e19cee9b 100644 --- a/ICSharpCode.NRefactory.Tests/ICSharpCode.NRefactory.Tests.csproj +++ b/ICSharpCode.NRefactory.Tests/ICSharpCode.NRefactory.Tests.csproj @@ -72,7 +72,8 @@ - False + ..\..\Mono.Cecil\Test\libs\nunit-2.5.10\nunit.framework.dll + True False