Browse Source

ExpressionOfCompatibleTypeCastIssue no longer warns on implicit

conversions.
pull/45/merge
Mike Krüger 12 years ago
parent
commit
5b30dbb1e2
  1. 3
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionOfCompatibleTypeCastIssue.cs
  2. 23
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionOfCompatibleTypeCastIssueTests.cs

3
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionOfCompatibleTypeCastIssue.cs

@ -78,6 +78,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return; return;
if (!foundConversion.IsExplicit) if (!foundConversion.IsExplicit)
return; return;
var implicitConversion = conversion.ImplicitConversion(exprType, castToType);
if (implicitConversion != Conversion.None)
return;
AddIssue(expression, string.Format(ctx.TranslateString("Cast to '{0}'"), castToType.Name), AddIssue(expression, string.Format(ctx.TranslateString("Cast to '{0}'"), castToType.Name),
script => { script => {

23
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionOfCompatibleTypeCastIssueTests.cs

@ -132,6 +132,29 @@ class TestClass
Point p = new Point(); Point p = new Point();
$p += new Vector(); $p += new Vector();
} }
}";
Test<ExpressionOfCompatibleTypeCastIssue>(input, 0);
}
[Test]
public void TestImplicitOperator()
{
var input = @"
struct Vector {
public static implicit operator Point(Vector v) { return new Point(); }
}
struct Point {
}
class TestClass
{
void TestMethod ()
{
Point p;
p = new Vector ();
}
}"; }";
Test<ExpressionOfCompatibleTypeCastIssue>(input, 0); Test<ExpressionOfCompatibleTypeCastIssue>(input, 0);
} }

Loading…
Cancel
Save