Browse Source

[CodeActions] Handle resolution errors in IterateViaForeachAction.

newNRvisualizers
Simon Lindgren 14 years ago
parent
commit
d69abeae95
  1. 6
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/IterateViaForeachAction.cs
  2. 11
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/IterateViaForeachTests.cs

6
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/IterateViaForeachAction.cs

@ -56,6 +56,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -56,6 +56,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (initializer == null)
return null;
var initializerRR = context.Resolve(initializer) as LocalResolveResult;
if (initializerRR == null)
return null;
var elementType = GetElementType(initializerRR, context);
if (elementType == null)
return null;
@ -83,6 +85,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -83,6 +85,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (initializer == null || initializer.Parent.Parent is ForStatement)
return null;
var initializerRR = context.Resolve(initializer) as LocalResolveResult;
if (initializerRR == null)
return null;
var elementType = GetElementType(initializerRR, context);
if (elementType == null)
return null;
@ -102,6 +106,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -102,6 +106,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (expression is AssignmentExpression)
expression = ((AssignmentExpression)expression).Left;
var expressionRR = context.Resolve(expression);
if (expressionRR == null)
return null;
var elementType = GetElementType(expressionRR, context);
if (elementType == null)
return null;

11
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/IterateViaForeachTests.cs

@ -317,6 +317,17 @@ class TestClass @@ -317,6 +317,17 @@ class TestClass
}
}
}
}");
}
[Test]
public void IgnoresFieldDeclarations()
{
TestWrongContext<IterateViaForeachAction>(@"
using System.Collections.Generic;
class TestClass
{
List<int> list = $new List<int>();
}");
}
}

Loading…
Cancel
Save