Add test for completionEntryDetails

This commit is contained in:
Mohamed Hegazy 2015-02-15 18:24:30 -08:00
parent 8944df18d4
commit 76c7fdf6d1
3 changed files with 44 additions and 7 deletions

View File

@ -6,6 +6,11 @@ module ts.server {
writeMessage(message: string): void;
}
interface CompletionEntry extends CompletionInfo {
fileName: string;
position: number;
}
interface RenameEntry extends RenameInfo {
fileName: string;
position: number;
@ -19,6 +24,7 @@ module ts.server {
private fileMapping: ts.Map<string> = {};
private lineMaps: ts.Map<number[]> = {};
private messages: string[] = [];
private lastCompletionEntry: CompletionEntry;
private lastRenameEntry: RenameEntry;
constructor(private host: SessionClientHost) {
@ -195,13 +201,30 @@ module ts.server {
var request = this.processRequest<ServerProtocol.CompletionsRequest>(CommandNames.Completions, args);
var response = this.processResponse<ServerProtocol.CompletionsResponse>(request);
return {
return this.lastCompletionEntry = {
isMemberCompletion: false,
isNewIdentifierLocation: false,
entries: response.body.map(entry => ({ kind: entry.kind, kindModifiers: entry.kindModifiers, name: entry.name }))
entries: response.body.map(entry => ({
kind: entry.kind,
kindModifiers: entry.kindModifiers,
name: entry.name,
displayParts: entry.displayParts,
documentation: entry.documentation
})),
fileName: fileName,
position: position
};
}
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails {
debugger;
if (!this.lastCompletionEntry || this.lastCompletionEntry.fileName !== fileName || this.lastCompletionEntry.position !== position) {
this.getCompletionsAtPosition(fileName, position);
}
return <CompletionEntryDetails>this.lastCompletionEntry.entries.filter(entry => entry.name === entryName)[0];
}
getNavigateToItems(searchTerm: string): NavigateToItem[] {
var args: ServerProtocol.NavtoRequestArgs = {
searchTerm,
@ -466,10 +489,6 @@ module ts.server {
throw new Error("Not Implemented Yet.");
}
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails {
throw new Error("Not Implemented Yet.");
}
getProgram(): Program {
throw new Error("SourceFile objects are not serializable through the server protocol.");
}

View File

@ -511,7 +511,7 @@ module ts.server {
protoEntry.documentation = details.documentation;
}
if (details && (details.displayParts) && (details.displayParts.length > 0)) {
protoEntry.displayParts = details.documentation;
protoEntry.displayParts = details.displayParts;
}
result.push(protoEntry);
}

View File

@ -0,0 +1,18 @@
/// <reference path="fourslash.ts" />
////class Foo {
////}
////module Foo {
//// export var x: number;
////}
////Foo./**/
goTo.marker("");
verify.completionListContains("x");
// Make an edit
edit.insert("a");
edit.backspace();
// Checking for completion details after edit should work too
verify.completionEntryDetailIs("x", "(var) Foo.x: number");