From 5d614c052d6d3b0f8b9cb599257817347ddc39f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Mon, 24 Oct 2011 13:41:54 +0200 Subject: [PATCH] Fixed unit test. --- .../Completion/CSharpCompletionEngine.cs | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 8e6034d68a..ca2291fcb5 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -267,7 +267,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion if (resolveResult == null) return null; - if (resolveResult.Item1.Type.IsEnum ()) { + if (resolveResult.Item1.Type.Kind == TypeKind.Enum) { var wrapper = new CompletionDataWrapper (this); AddContextCompletion (wrapper, resolveResult.Item2, expressionOrVariableDeclaration.Item2); AddEnumMembers (wrapper, resolveResult.Item1.Type, resolveResult.Item2); @@ -604,8 +604,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion var wrapper = new CompletionDataWrapper (this); AddTypesAndNamespaces (wrapper, GetState (), t => false); return wrapper.Result; -// case "case": -// return CreateCaseCompletionData (location, result); + case "case": + return CreateCaseCompletionData (location); // case ",": // case ":": // if (result.ExpressionContext == ExpressionContext.InheritableType) { @@ -1377,6 +1377,28 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } } } + IEnumerable CreateCaseCompletionData (TextLocation location) + { + var unit = ParseStub ("a: break;"); + if (unit == null) + return null; + var s = unit.GetNodeAt (location); + if (s == null) + return null; + + var offset = document.GetOffset (s.Expression.StartLocation); + var expr = GetExpressionAt (offset); + if (expr == null) + return null; + + var resolveResult = ResolveExpression (expr.Item1, expr.Item2, expr.Item3); + if (resolveResult == null || resolveResult.Item1.Type.Kind != TypeKind.Enum) + return null; + var wrapper = new CompletionDataWrapper (this); + AddEnumMembers (wrapper, resolveResult.Item1.Type, resolveResult.Item2); + AutoCompleteEmptyMatch = false; + return wrapper.Result; + } #region Parsing methods