コード例 #1
0
        public Task <IEnumerable <CompletionThingy> > GetCompletions(string code, int location)
        {
            var script = _scriptState.Script.ContinueWith(code);

            script.Compile();
            var compilation = script.GetCompilation();
            var tree        = compilation.SyntaxTrees.Single();
            var completer   = new CodeCompleter(tree, compilation, location);
            var completions = completer.GetCompletions();

            return(Task.FromResult(completions));
        }
コード例 #2
0
        IEnumerable <SuggestItem> ResolveSuggestions(SuggestionDependentData suggestionData)
        {
            if (suggestionData.Compiler == null)
            {
                return(Enumerable.Empty <SuggestItem>());
            }

            var codeCompleter = new CodeCompleter(suggestionData.Compiler,
                                                  new Source(suggestionData.MainPackage, suggestionData.FilePath.NativePath),
                                                  new CodeReader(suggestionData.SrcCode, suggestionData.CaretOffset),
                                                  suggestionData.CaretOffset,
                                                  Parser.Parse(suggestionData.SrcCode));

            ConfidenceLevel level;
            var             suggestions = codeCompleter.SuggestCompletion("", out level);

            return(suggestions);
        }
コード例 #3
0
ファイル: Test.cs プロジェクト: yongaru/fuse-studio
        protected void AssertCode(string code, [CallerMemberName] string path = "")
        {
            int caret = 0;
            var assertCodeSnippets = GetAsserts(ref code, ref caret);

            var ubProject = _project;

            var filePath = AbsoluteDirectoryPath.Parse(Directory.GetCurrentDirectory()) / new FileName(path);

            _log = new DummyLogger();
            var editors     = new DummyEditorManager();
            var mainPackage = new PackageCache(new Log(_log.TextWriter), ubProject.Config).GetPackage(ubProject);

            mainPackage.SetCacheDirectory((AbsoluteDirectoryPath.Parse(mainPackage.CacheDirectory) / new DirectoryName("CodeCompletion")).NativePath);
            var build = new CodeNinjaBuild(_log, ubProject, editors, mainPackage, mainPackage.References.ToList(), code, filePath);

            build.Execute();

            var engine        = new DummyEngine(build.Compiler);
            var codeCompleter = new CodeCompleter(engine.Compiler,
                                                  new Source(build.ProjectPackage, filePath.NativePath),
                                                  new CodeReader(code, caret),
                                                  caret,
                                                  Parser.Parse(code));

            if (codeCompleter.Context.NodePath.Count < 1)
            {
                throw new TestException("Invalid node path was generated for the test case");
            }

            ConfidenceLevel confidenceLevel;
            var             suggestions = codeCompleter.SuggestCompletion("", out confidenceLevel);

            if (assertCodeSnippets != null)
            {
                foreach (var codeSnippet in assertCodeSnippets)
                {
                    OnAssert(code, codeSnippet, suggestions);
                }
            }
        }