From e6bc300e1eeb3378a7c71411a202623d385f3877 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 5 Oct 2012 02:23:55 +0200 Subject: [PATCH] Don't show "expression is never of the provided type" warning if the type could not be resolved. --- .../ExpressionIsNeverOfProvidedTypeIssue.cs | 2 ++ ...pressionIsNeverOfProvidedTypeIssueTests.cs | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionIsNeverOfProvidedTypeIssue.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionIsNeverOfProvidedTypeIssue.cs index ed10a12d8f..543b2bdb61 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionIsNeverOfProvidedTypeIssue.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeIssues/ExpressionIsNeverOfProvidedTypeIssue.cs @@ -61,6 +61,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring var exprType = ctx.Resolve (isExpression.Expression).Type; var providedType = ctx.ResolveType (isExpression.Type); + if (exprType.Kind == TypeKind.Unknown || providedType.Kind == TypeKind.Unknown) + return; if (IsValidReferenceOrBoxingConversion(exprType, providedType)) return; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionIsNeverOfProvidedTypeIssueTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionIsNeverOfProvidedTypeIssueTests.cs index e3c006fe2f..1270a20c3f 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionIsNeverOfProvidedTypeIssueTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeIssues/ExpressionIsNeverOfProvidedTypeIssueTests.cs @@ -270,6 +270,34 @@ sealed class TestClass { if (x is string[]) ; } +}"; + Test (input, 0); + } + + [Test] + public void UnknownExpression() + { + var input = @" +sealed class TestClass +{ + void TestMethod () + { + if (unknown is string) ; + } +}"; + Test (input, 0); + } + + [Test] + public void UnknownType() + { + var input = @" +sealed class TestClass +{ + void TestMethod (int x) + { + if (x is unknown) ; + } }"; Test (input, 0); }