Skip to content

Commit 76c7fdf

Browse files
committed
Add test for completionEntryDetails
1 parent 8944df1 commit 76c7fdf

3 files changed

Lines changed: 44 additions & 7 deletions

File tree

src/server/client.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ module ts.server {
66
writeMessage(message: string): void;
77
}
88

9+
interface CompletionEntry extends CompletionInfo {
10+
fileName: string;
11+
position: number;
12+
}
13+
914
interface RenameEntry extends RenameInfo {
1015
fileName: string;
1116
position: number;
@@ -19,6 +24,7 @@ module ts.server {
1924
private fileMapping: ts.Map<string> = {};
2025
private lineMaps: ts.Map<number[]> = {};
2126
private messages: string[] = [];
27+
private lastCompletionEntry: CompletionEntry;
2228
private lastRenameEntry: RenameEntry;
2329

2430
constructor(private host: SessionClientHost) {
@@ -195,13 +201,30 @@ module ts.server {
195201
var request = this.processRequest<ServerProtocol.CompletionsRequest>(CommandNames.Completions, args);
196202
var response = this.processResponse<ServerProtocol.CompletionsResponse>(request);
197203

198-
return {
204+
return this.lastCompletionEntry = {
199205
isMemberCompletion: false,
200206
isNewIdentifierLocation: false,
201-
entries: response.body.map(entry => ({ kind: entry.kind, kindModifiers: entry.kindModifiers, name: entry.name }))
207+
entries: response.body.map(entry => ({
208+
kind: entry.kind,
209+
kindModifiers: entry.kindModifiers,
210+
name: entry.name,
211+
displayParts: entry.displayParts,
212+
documentation: entry.documentation
213+
})),
214+
fileName: fileName,
215+
position: position
202216
};
203217
}
204218

219+
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails {
220+
debugger;
221+
if (!this.lastCompletionEntry || this.lastCompletionEntry.fileName !== fileName || this.lastCompletionEntry.position !== position) {
222+
this.getCompletionsAtPosition(fileName, position);
223+
}
224+
225+
return <CompletionEntryDetails>this.lastCompletionEntry.entries.filter(entry => entry.name === entryName)[0];
226+
}
227+
205228
getNavigateToItems(searchTerm: string): NavigateToItem[] {
206229
var args: ServerProtocol.NavtoRequestArgs = {
207230
searchTerm,
@@ -466,10 +489,6 @@ module ts.server {
466489
throw new Error("Not Implemented Yet.");
467490
}
468491

469-
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails {
470-
throw new Error("Not Implemented Yet.");
471-
}
472-
473492
getProgram(): Program {
474493
throw new Error("SourceFile objects are not serializable through the server protocol.");
475494
}

src/server/protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ module ts.server {
511511
protoEntry.documentation = details.documentation;
512512
}
513513
if (details && (details.displayParts) && (details.displayParts.length > 0)) {
514-
protoEntry.displayParts = details.documentation;
514+
protoEntry.displayParts = details.displayParts;
515515
}
516516
result.push(protoEntry);
517517
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
////class Foo {
4+
////}
5+
////module Foo {
6+
//// export var x: number;
7+
////}
8+
////Foo./**/
9+
10+
goTo.marker("");
11+
verify.completionListContains("x");
12+
13+
// Make an edit
14+
edit.insert("a");
15+
edit.backspace();
16+
17+
// Checking for completion details after edit should work too
18+
verify.completionEntryDetailIs("x", "(var) Foo.x: number");

0 commit comments

Comments
 (0)