private AP.Completion[] ToCompletions(MemberResult[] memberResult, GetMemberOptions options) { AP.Completion[] res = new AP.Completion[memberResult.Length]; for (int i = 0; i < memberResult.Length; i++) { var member = memberResult[i]; res[i] = new AP.Completion() { name = member.Name, completion = member.Completion, doc = member.Documentation, memberType = member.MemberType }; if (options.HasFlag(GetMemberOptions.DetailedInformation)) { List<AP.CompletionValue> values = new List<AnalysisProtocol.CompletionValue>(); foreach (var value in member.Values) { var descComps = Array.Empty<AP.DescriptionComponent>(); var hasDesc = value as IHasRichDescription; if (hasDesc != null) { descComps = hasDesc .GetRichDescription() .Select(kv => new AP.DescriptionComponent(kv.Value, kv.Key)) .ToArray(); } values.Add( new AP.CompletionValue() { description = descComps, doc = value.Documentation, locations = value.Locations.Select(x => MakeReference(x, VariableType.Definition)).ToArray() } ); } res[i].detailedValues = values.ToArray(); } } return res; }
private AP.Completion[] ToCompletions(MemberResult[] memberResult, GetMemberOptions options) { AP.Completion[] res = new AP.Completion[memberResult.Length]; for (int i = 0; i < memberResult.Length; i++) { var member = memberResult[i]; res[i] = new AP.Completion() { name = member.Name, completion = member.Completion, doc = member.Documentation, memberType = member.MemberType }; if (options.HasFlag(GetMemberOptions.DetailedInformation)) { List<AP.CompletionValue> values = new List<AnalysisProtocol.CompletionValue>(); foreach (var value in member.Values) { var descComps = new List<AP.DescriptionComponent>(); if (value is FunctionInfo) { var def = ((FunctionInfo)value).FunctionDefinition; ((FunctionInfo)value).GetDescription((text, kind) => { descComps.Add(new AP.DescriptionComponent(text, kind)); }); } else if (value is ClassInfo) { FillClassDescription(descComps, ((ClassInfo)value).ClassDefinition); } values.Add( new AP.CompletionValue() { description = descComps.ToArray(), doc = value.Documentation, locations = value.Locations.Select(x => MakeReference(x, VariableType.Definition)).ToArray() } ); } res[i].detailedValues = values.ToArray(); } } return res; }