mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Add test for completionEntryDetails
This commit is contained in:
parent
8944df18d4
commit
76c7fdf6d1
@ -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.");
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
18
tests/cases/fourslash/server/completions2.ts
Normal file
18
tests/cases/fourslash/server/completions2.ts
Normal 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");
|
||||
Loading…
x
Reference in New Issue
Block a user