Пример #1
0
        public static DParameterDataProvider Create(Document doc, IAbstractSyntaxTree SyntaxTree, CodeCompletionContext ctx)
        {
            var caretOffset   = ctx.TriggerOffset;
            var caretLocation = new CodeLocation(ctx.TriggerLineOffset, ctx.TriggerLine);

            IStatement stmt     = null;
            var        curBlock = DResolver.SearchBlockAt(SyntaxTree, caretLocation, out stmt);

            if (curBlock == null)
            {
                return(null);
            }


            //doc.Edito
            if (!(curBlock is D_Parser.Dom.DMethod))
            {
                return(null);
            }

            try

            {
                var argsResult = DResolver.ResolveArgumentContext(
                    doc.Editor.Text,
                    caretOffset,
                    caretLocation,
                    curBlock as D_Parser.Dom.DMethod,
                    DCodeCompletionSupport.EnumAvailableModules(doc), null);

                if (argsResult == null || argsResult.ResolvedTypesOrMethods == null || argsResult.ResolvedTypesOrMethods.Length < 1)
                {
                    return(null);
                }

                return(new DParameterDataProvider(doc, argsResult));
            }
            catch { return(null); }
        }