diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 79624c66a4..f0aa50cc08 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -1813,8 +1813,21 @@ namespace ICSharpCode.NRefactory.CSharp.Completion TypeResolveResult trr; if (state.IsVariableReferenceWithSameType (resolveResult, ((IdentifierExpression)resolvedNode).Identifier, out trr)) { - if (mrr.Member.IsStatic ^ currentMember.IsStatic) + if (mrr.Member.IsStatic ^ currentMember.IsStatic) { skipNonStaticMembers = true; + + if (trr.Type.Kind == TypeKind.Enum) { + foreach (var field in trr.Type.GetFields ()) { + result.AddMember (field); + } + foreach (var m in trr.Type.GetMethods ()) { + if (m.Name == "TryParse" && m.IsStatic) { + result.AddMember (m); + } + } + return result.Result; + } + } } // ADD Aliases var scope = CSharpParsedFile.GetUsingScope (location).Resolve (Compilation); @@ -1881,6 +1894,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } foreach (var member in filteredList) { +// Console.WriteLine ("add:" + member + "/" + member.IsStatic); result.AddMember (member); } } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs index 328bd2ae85..c170a62bcb 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs @@ -4540,9 +4540,9 @@ class Test } } "); + Assert.AreEqual (4, provider.Count); // 2xTryParse + 2 fields Assert.IsNotNull (provider.Find ("Value1"), "field 'Value1' not found."); Assert.IsNotNull (provider.Find ("Value2"), "field 'Value2' not found."); - Assert.IsNull (provider.Find ("ToString"), "'ToString' found."); } }