Mono.CSharp.Evaluator.GetCompletions C# (CSharp) Method

GetCompletions() public method

public GetCompletions ( string input, string &prefix ) : string[]
input string
prefix string
return string[]
        public string[] GetCompletions(string input, out string prefix)
        {
            prefix = "";
            if (input == null || input.Length == 0)
                return null;

            lock (evaluator_lock){
                if (!inited)
                    Init ();

                bool partial_input;
                CSharpParser parser = ParseString (ParseMode.GetCompletions, input, out partial_input);
                if (parser == null){
                    if (CSharpParser.yacc_verbose_flag != 0)
                        Console.WriteLine ("DEBUG: No completions available");
                    return null;
                }

                Class parser_result = parser.InteractiveResult;

            #if NET_4_0
                var access = AssemblyBuilderAccess.Run;
            #else
                var access = AssemblyBuilderAccess.Run;
            #endif
                var a = new AssemblyDefinitionDynamic (module, "completions");
                a.Create (AppDomain.CurrentDomain, access);
                module.SetDeclaringAssembly (a);

                // Need to setup MemberCache
                parser_result.CreateType ();

                var method = parser_result.Methods[0] as Method;
                BlockContext bc = new BlockContext (method, method.Block, TypeManager.void_type);

                try {
                    method.Block.Resolve (null, bc, method);
                } catch (CompletionResult cr) {
                    prefix = cr.BaseText;
                    return cr.Result;
                }
            }
            return null;
        }