Browse Source

[CodeAction] Fixed some 'cast expression of incompatible type' issue

bugs.
newNRvisualizers
Mike Krüger 14 years ago
parent
commit
aad32a0e66
  1. 9
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CastExpressionOfIncompatibleTypeIssue.cs
  2. 16
      ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/CastExpressionOfIncompatibleTypeIssueTests.cs

9
ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/CastExpressionOfIncompatibleTypeIssue.cs

@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
using System.Collections.Generic;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Semantics;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
@ -43,9 +45,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -43,9 +45,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
class GatherVisitor : GatherVisitorBase
{
readonly CSharpConversions conversion;
public GatherVisitor (BaseRefactoringContext ctx)
: base (ctx)
{
conversion = new CSharpConversions(ctx.Compilation);
}
public override void VisitCastExpression (CastExpression castExpression)
@ -66,8 +71,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -66,8 +71,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
void VisitTypeCastExpression (Expression expression, IType exprType, IType castToType)
{
if (TypeCompatibilityHelper.CheckTypeCompatibility (exprType, castToType) ==
TypeCompatibilityHelper.TypeCompatiblity.NeverOfProvidedType)
var foundConversion = conversion.ExplicitConversion(exprType, castToType);
if (foundConversion == Conversion.None)
AddIssue (expression, ctx.TranslateString ("Type cast expression of incompatible type"));
}
}

16
ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/CastExpressionOfIncompatibleTypeIssueTests.cs

@ -46,5 +46,21 @@ class TestClass @@ -46,5 +46,21 @@ class TestClass
}";
Test<CastExpressionOfIncompatibleTypeIssue> (input, 2);
}
[Test]
public void TestCompatibleTypes ()
{
var input = @"
class TestClass
{
void TestMethod ()
{
var x1 = (int)123;
var x2 = (int)System.ConsoleKey.A;
}
}";
Test<CastExpressionOfIncompatibleTypeIssue> (input, 0);
}
}
}

Loading…
Cancel
Save