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)); }
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); }
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); } } }