diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index d96cdea403..56640a7c33 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -1900,7 +1900,12 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } if (type != null) { - // insert target type into compilation unit, to respect the + if (currentType == null) { + var tsvisitor2 = new TypeSystemConvertVisitor (this.CSharpParsedFile.FileName); + baseUnit.AcceptVisitor (tsvisitor2, null); + return Tuple.Create (tsvisitor2.ParsedFile, (AstNode)type.Target, baseUnit); + } + var target = type.Target; target.Remove (); var node = Unit.GetNodeAt (location) ?? Unit; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs index 8c39f519f7..549c620972 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs @@ -94,6 +94,19 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); } + [Test()] + public void TestCatchExceptionName () + { + var provider = CodeCompletionBugTests.CreateProvider (@"class MyClass { + void Test() + { + $try { + } catch (Exception e$ + } +}"); + Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); + } + } }