From 68e12e4a749d7b4e6661eeed0017cb5c1fb10d4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 14 Jun 2012 08:24:24 +0200 Subject: [PATCH] [Completion] Filtered double added enums. --- .../Completion/CSharpCompletionEngine.cs | 13 +----------- .../Completion/CompletionDataWrapper.cs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index fcb8af2bba..f79afa9e86 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -2256,18 +2256,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion return; } string typeString = GetShortType(resolvedType, state); - if (typeString.Contains(".")) { - completionList.AddType(resolvedType, typeString); - } - foreach (var field in resolvedType.GetFields ()) { - if (field.IsConst || field.IsStatic) { - completionList.Result.Add(factory.CreateEntityCompletionData( - field, - typeString + "." + field.Name - ) - ); - } - } + completionList.AddEnumMembers (resolvedType, state, typeString); DefaultCompletionString = typeString; } diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs b/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs index 0782da3947..ad96b5a17f 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CompletionDataWrapper.cs @@ -28,6 +28,7 @@ using System.Collections.Generic; using ICSharpCode.NRefactory.Completion; using ICSharpCode.NRefactory.TypeSystem; using System.Linq; +using ICSharpCode.NRefactory.CSharp.Resolver; namespace ICSharpCode.NRefactory.CSharp.Completion { @@ -239,6 +240,25 @@ namespace ICSharpCode.NRefactory.CSharp.Completion return 1; } } + HashSet addedEnums = new HashSet (); + public void AddEnumMembers (IType resolvedType, CSharpResolver state, string typeString) + { + if (addedEnums.Contains (resolvedType)) + return; + addedEnums.Add (resolvedType); + if (typeString.Contains(".")) { + AddType(resolvedType, typeString); + } + foreach (var field in resolvedType.GetFields ()) { + if (field.IsConst || field.IsStatic) { + Result.Add(Factory.CreateEntityCompletionData( + field, + typeString + "." + field.Name + ) + ); + } + } + } } }