IEnumerable<ICompletionData> CreateCaseCompletionData(TextLocation location)
{
var unit = ParseStub("a: break;");
if (unit == null) {
return null;
}
var s = unit.GetNodeAt<SwitchStatement>(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);
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;
}