diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index fe034004b9..fc90f4ed52 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -451,10 +451,12 @@ namespace ICSharpCode.NRefactory.CSharp.Completion // Do not pop up completion on identifier identifier (should be handled by keyword completion). tokenIndex = offset - 1; token = GetPreviousToken (ref tokenIndex, false); - if (token == "class" || token == "namespace") // after these always follows a name + if (token == "class" || token == "interface" || token == "struct" || token == "enum" || token == "namespace") // after these always follows a name return null; int prevTokenIndex = tokenIndex; var prevToken2 = GetPreviousToken (ref prevTokenIndex, false); + if (prevToken2 == "delegate") // after these always follows a name + return null; if (identifierStart == null && !string.IsNullOrEmpty (token) && !(IsInsideComment (tokenIndex) || IsInsideString (tokenIndex)) && (prevToken2 == ";" || prevToken2 == "{" || prevToken2 == "}")) { char last = token [token.Length - 1]; if (char.IsLetterOrDigit (last) || last == '_' || token == ">") { diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs index 549c620972..45a736f5c8 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs @@ -45,6 +45,34 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); } + [Test()] + public void TestStructName () + { + var provider = CodeCompletionBugTests.CreateProvider (@"$struct n$"); + Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); + } + + [Test()] + public void TestInterfaceName () + { + var provider = CodeCompletionBugTests.CreateProvider (@"$interface n$"); + Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); + } + + [Test()] + public void TestEnumName () + { + var provider = CodeCompletionBugTests.CreateProvider (@"$enum n$"); + Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); + } + + [Test()] + public void TestDelegateName () + { + var provider = CodeCompletionBugTests.CreateProvider (@"$delegate void n$"); + Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty."); + } + [Test()] public void TestClassTypeParameter () {