Skip to content

Commit 327d688

Browse files
author
Andy Hanson
committed
Use different names for Options and GetCompletionsAtPositionOptions (todo: come up with better names)
1 parent 4d592ee commit 327d688

File tree

7 files changed

+65
-44
lines changed

7 files changed

+65
-44
lines changed

src/harness/fourslash.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2392,7 +2392,7 @@ Actual: ${stringify(fullActual)}`);
23922392
public applyCodeActionFromCompletion(markerName: string, options: FourSlashInterface.VerifyCompletionActionOptions) {
23932393
this.goToMarker(markerName);
23942394

2395-
const actualCompletion = this.getCompletionListAtCaret({ ...ts.defaultOptions, includeExternalModuleExports: true }).entries.find(e =>
2395+
const actualCompletion = this.getCompletionListAtCaret({ ...ts.defaultOptions, includeExternalModuleExportsInCompletionList: true }).entries.find(e =>
23962396
e.name === options.name && e.source === options.source);
23972397

23982398
if (!actualCompletion.hasAction) {

src/server/protocol.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2589,17 +2589,17 @@ namespace ts.server.protocol {
25892589
}
25902590

25912591
export interface Options {
2592-
quote?: "double" | "single";
2592+
readonly quote?: "double" | "single";
25932593
/**
25942594
* If enabled, TypeScript will search through all external modules' exports and add them to the completions list.
25952595
* This affects lone identifier completions but not completions on the right hand side of `obj.`.
25962596
*/
2597-
includeExternalModuleExports?: boolean;
2597+
readonly includeExternalModuleExportsInCompletionList?: boolean;
25982598
/**
25992599
* If enabled, the completion list will include completions with invalid identifier names.
26002600
* For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`.
26012601
*/
2602-
includeInsertTextCompletions?: boolean;
2602+
readonly includeInsertTextCompletionsInCompletionList?: boolean;
26032603
}
26042604

26052605
export interface CompilerOptions {

src/services/completions.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ namespace ts.Completions {
206206

207207
let insertText: string | undefined;
208208
let replacementSpan: TextSpan | undefined;
209-
if (options.includeInsertTextCompletions) {
209+
if (options.includeInsertTextCompletionsInCompletionList) {
210210
if (origin && origin.type === "this-type") {
211211
insertText = needsConvertPropertyAccess ? `this[${quote(name, options)}]` : `this.${name}`;
212212
}
@@ -227,7 +227,7 @@ namespace ts.Completions {
227227
}
228228
}
229229

230-
if (insertText !== undefined && !options.includeInsertTextCompletions) {
230+
if (insertText !== undefined && !options.includeInsertTextCompletionsInCompletionList) {
231231
return undefined;
232232
}
233233

@@ -479,7 +479,7 @@ namespace ts.Completions {
479479
{ name, source }: CompletionEntryIdentifier,
480480
allSourceFiles: ReadonlyArray<SourceFile>,
481481
): SymbolCompletion | { type: "request", request: Request } | { type: "none" } {
482-
const completionData = getCompletionData(typeChecker, log, sourceFile, position, allSourceFiles, { includeExternalModuleExports: true, includeInsertTextCompletions: true }, compilerOptions.target);
482+
const completionData = getCompletionData(typeChecker, log, sourceFile, position, allSourceFiles, { includeExternalModuleExportsInCompletionList: true, includeInsertTextCompletionsInCompletionList: true }, compilerOptions.target);
483483
if (!completionData) {
484484
return { type: "none" };
485485
}
@@ -746,7 +746,7 @@ namespace ts.Completions {
746746
sourceFile: SourceFile,
747747
position: number,
748748
allSourceFiles: ReadonlyArray<SourceFile>,
749-
options: Pick<Options, "includeExternalModuleExports" | "includeInsertTextCompletions">,
749+
options: Pick<Options, "includeExternalModuleExportsInCompletionList" | "includeInsertTextCompletionsInCompletionList">,
750750
target: ScriptTarget,
751751
): CompletionData | Request | undefined {
752752
let start = timestamp();
@@ -1150,7 +1150,7 @@ namespace ts.Completions {
11501150
symbols = Debug.assertEachDefined(typeChecker.getSymbolsInScope(scopeNode, symbolMeanings), "getSymbolsInScope() should all be defined");
11511151

11521152
// Need to insert 'this.' before properties of `this` type, so only do that if `includeInsertTextCompletions`
1153-
if (options.includeInsertTextCompletions && scopeNode.kind !== SyntaxKind.SourceFile) {
1153+
if (options.includeInsertTextCompletionsInCompletionList && scopeNode.kind !== SyntaxKind.SourceFile) {
11541154
const thisType = typeChecker.tryGetThisTypeAt(scopeNode);
11551155
if (thisType) {
11561156
for (const symbol of getPropertiesForCompletion(thisType, typeChecker, /*isForAccess*/ true)) {
@@ -1160,7 +1160,7 @@ namespace ts.Completions {
11601160
}
11611161
}
11621162

1163-
if (options.includeExternalModuleExports) {
1163+
if (options.includeExternalModuleExportsInCompletionList) {
11641164
getSymbolsFromOtherSourceFileExports(symbols, previousToken && isIdentifier(previousToken) ? previousToken.text : "", target);
11651165
}
11661166
filterGlobalCompletion(symbols);

src/services/services.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
namespace ts {
3434
/** The version of the language service API */
35-
export const servicesVersion = "0.7";
35+
export const servicesVersion = "0.8";
3636

3737
function createNode<TKind extends SyntaxKind>(kind: TKind, pos: number, end: number, parent?: Node): NodeObject | TokenObject<TKind> | IdentifierObject {
3838
const node = isNodeKind(kind) ? new NodeObject(kind, pos, end) :
@@ -1424,7 +1424,13 @@ namespace ts {
14241424
return [...program.getOptionsDiagnostics(cancellationToken), ...program.getGlobalDiagnostics(cancellationToken)];
14251425
}
14261426

1427-
function getCompletionsAtPosition(fileName: string, position: number, settings: Options = defaultOptions): CompletionInfo {
1427+
function getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions = defaultOptions): CompletionInfo {
1428+
// Convert from deprecated options names to new names
1429+
const fullOptions: Options = {
1430+
...identity<Options>(options), // avoid excess property check
1431+
includeExternalModuleExportsInCompletionList: options.includeExternalModuleExportsInCompletionList || options.includeExternalModuleExports,
1432+
includeInsertTextCompletionsInCompletionList: options.includeInsertTextCompletionsInCompletionList || options.includeInsertTextCompletions,
1433+
};
14281434
synchronizeHostData();
14291435
return Completions.getCompletionsAtPosition(
14301436
host,
@@ -1434,7 +1440,7 @@ namespace ts {
14341440
getValidSourceFile(fileName),
14351441
position,
14361442
program.getSourceFiles(),
1437-
settings);
1443+
fullOptions);
14381444
}
14391445

14401446
function getCompletionEntryDetails(fileName: string, position: number, name: string, formattingOptions?: FormatCodeSettings, source?: string): CompletionEntryDetails {
@@ -1814,7 +1820,7 @@ namespace ts {
18141820
return [];
18151821
}
18161822

1817-
function getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: ReadonlyArray<number>, formatOptions: FormatCodeSettings, options: Options): ReadonlyArray<CodeFixAction> {
1823+
function getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: ReadonlyArray<number>, formatOptions: FormatCodeSettings, options: Options = defaultOptions): ReadonlyArray<CodeFixAction> {
18181824
synchronizeHostData();
18191825
const sourceFile = getValidSourceFile(fileName);
18201826
const span = createTextSpanFromBounds(start, end);
@@ -1826,7 +1832,7 @@ namespace ts {
18261832
});
18271833
}
18281834

1829-
function getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, options: Options): CombinedCodeActions {
1835+
function getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, options: Options = defaultOptions): CombinedCodeActions {
18301836
synchronizeHostData();
18311837
Debug.assert(scope.type === "file");
18321838
const sourceFile = getValidSourceFile(scope.fileName);
@@ -1835,7 +1841,7 @@ namespace ts {
18351841
return codefix.getAllFixes({ fixId, sourceFile, program, host, cancellationToken, formatContext, options });
18361842
}
18371843

1838-
function organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options): ReadonlyArray<FileTextChanges> {
1844+
function organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options = defaultOptions): ReadonlyArray<FileTextChanges> {
18391845
synchronizeHostData();
18401846
Debug.assert(scope.type === "file");
18411847
const sourceFile = getValidSourceFile(scope.fileName);
@@ -2079,7 +2085,7 @@ namespace ts {
20792085
};
20802086
}
20812087

2082-
function getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, options: Options): ApplicableRefactorInfo[] {
2088+
function getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, options: Options = defaultOptions): ApplicableRefactorInfo[] {
20832089
synchronizeHostData();
20842090
const file = getValidSourceFile(fileName);
20852091
return refactor.getApplicableRefactors(getRefactorContext(file, positionOrRange, options));
@@ -2091,7 +2097,7 @@ namespace ts {
20912097
positionOrRange: number | TextRange,
20922098
refactorName: string,
20932099
actionName: string,
2094-
options: Options,
2100+
options: Options = defaultOptions,
20952101
): RefactorEditInfo {
20962102

20972103
synchronizeHostData();

src/services/types.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,8 @@ namespace ts {
216216

217217
export interface Options {
218218
readonly quote?: "double" | "single";
219-
readonly includeExternalModuleExports?: boolean;
220-
readonly includeInsertTextCompletions?: boolean;
219+
readonly includeExternalModuleExportsInCompletionList?: boolean;
220+
readonly includeInsertTextCompletionsInCompletionList?: boolean;
221221
}
222222
/* @internal */
223223
export const defaultOptions: Options = {};
@@ -250,7 +250,7 @@ namespace ts {
250250
getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
251251
getEncodedSemanticClassifications(fileName: string, span: TextSpan): Classifications;
252252

253-
getCompletionsAtPosition(fileName: string, position: number, settings: Options | undefined): CompletionInfo;
253+
getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined): CompletionInfo;
254254
// "options" and "source" are optional only for backwards-compatibility
255255
getCompletionEntryDetails(
256256
fileName: string,
@@ -314,9 +314,9 @@ namespace ts {
314314
applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
315315
/** @deprecated `fileName` will be ignored */
316316
applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
317-
getApplicableRefactors(fileName: string, positionOrRaneg: number | TextRange, options: Options): ApplicableRefactorInfo[];
318-
getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, options: Options): RefactorEditInfo | undefined;
319-
organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options): ReadonlyArray<FileTextChanges>;
317+
getApplicableRefactors(fileName: string, positionOrRaneg: number | TextRange, options: Options | undefined): ApplicableRefactorInfo[];
318+
getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, options: Options | undefined): RefactorEditInfo | undefined;
319+
organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options | undefined): ReadonlyArray<FileTextChanges>;
320320

321321
getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean): EmitOutput;
322322

@@ -338,7 +338,12 @@ namespace ts {
338338
export type OrganizeImportsScope = CombinedCodeFixScope;
339339

340340
/** @deprecated Use Options */
341-
export type GetCompletionsAtPositionOptions = Options;
341+
export interface GetCompletionsAtPositionOptions extends Options {
342+
/** @deprecated Use includeExternalModuleExportsInCompletionList */
343+
includeExternalModuleExports?: boolean;
344+
/** @deprecated Use includeInsertTextCompletionsInCompletionList */
345+
includeInsertTextCompletions?: boolean;
346+
}
342347

343348
export interface ApplyCodeActionCommandResult {
344349
successMessage: string;

tests/baselines/reference/api/tsserverlibrary.d.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4052,8 +4052,8 @@ declare namespace ts {
40524052
}
40534053
interface Options {
40544054
readonly quote?: "double" | "single";
4055-
readonly includeExternalModuleExports?: boolean;
4056-
readonly includeInsertTextCompletions?: boolean;
4055+
readonly includeExternalModuleExportsInCompletionList?: boolean;
4056+
readonly includeInsertTextCompletionsInCompletionList?: boolean;
40574057
}
40584058
interface LanguageService {
40594059
cleanupSemanticCache(): void;
@@ -4070,7 +4070,7 @@ declare namespace ts {
40704070
getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
40714071
getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
40724072
getEncodedSemanticClassifications(fileName: string, span: TextSpan): Classifications;
4073-
getCompletionsAtPosition(fileName: string, position: number, settings: Options | undefined): CompletionInfo;
4073+
getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined): CompletionInfo;
40744074
getCompletionEntryDetails(fileName: string, position: number, name: string, options: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined): CompletionEntryDetails;
40754075
getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol;
40764076
getQuickInfoAtPosition(fileName: string, position: number): QuickInfo;
@@ -4112,9 +4112,9 @@ declare namespace ts {
41124112
applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
41134113
/** @deprecated `fileName` will be ignored */
41144114
applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
4115-
getApplicableRefactors(fileName: string, positionOrRaneg: number | TextRange, options: Options): ApplicableRefactorInfo[];
4116-
getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, options: Options): RefactorEditInfo | undefined;
4117-
organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options): ReadonlyArray<FileTextChanges>;
4115+
getApplicableRefactors(fileName: string, positionOrRaneg: number | TextRange, options: Options | undefined): ApplicableRefactorInfo[];
4116+
getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, options: Options | undefined): RefactorEditInfo | undefined;
4117+
organizeImports(scope: OrganizeImportsScope, formatOptions: FormatCodeSettings, options: Options | undefined): ReadonlyArray<FileTextChanges>;
41184118
getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean): EmitOutput;
41194119
getProgram(): Program;
41204120
dispose(): void;
@@ -4125,7 +4125,12 @@ declare namespace ts {
41254125
}
41264126
type OrganizeImportsScope = CombinedCodeFixScope;
41274127
/** @deprecated Use Options */
4128-
type GetCompletionsAtPositionOptions = Options;
4128+
interface GetCompletionsAtPositionOptions extends Options {
4129+
/** @deprecated Use includeExternalModuleExportsInCompletionList */
4130+
includeExternalModuleExports?: boolean;
4131+
/** @deprecated Use includeInsertTextCompletionsInCompletionList */
4132+
includeInsertTextCompletions?: boolean;
4133+
}
41294134
interface ApplyCodeActionCommandResult {
41304135
successMessage: string;
41314136
}
@@ -4793,7 +4798,7 @@ declare namespace ts {
47934798
}
47944799
declare namespace ts {
47954800
/** The version of the language service API */
4796-
const servicesVersion = "0.7";
4801+
const servicesVersion = "0.8";
47974802
function toEditorSettings(options: EditorOptions | EditorSettings): EditorSettings;
47984803
function displayPartsToString(displayParts: SymbolDisplayPart[]): string;
47994804
function getDefaultCompilerOptions(): CompilerOptions;
@@ -7044,17 +7049,17 @@ declare namespace ts.server.protocol {
70447049
insertSpaceBeforeTypeAnnotation?: boolean;
70457050
}
70467051
interface Options {
7047-
quote?: "double" | "single";
7052+
readonly quote?: "double" | "single";
70487053
/**
70497054
* If enabled, TypeScript will search through all external modules' exports and add them to the completions list.
70507055
* This affects lone identifier completions but not completions on the right hand side of `obj.`.
70517056
*/
7052-
includeExternalModuleExports?: boolean;
7057+
readonly includeExternalModuleExportsInCompletionList?: boolean;
70537058
/**
70547059
* If enabled, the completion list will include completions with invalid identifier names.
70557060
* For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`.
70567061
*/
7057-
includeInsertTextCompletions?: boolean;
7062+
readonly includeInsertTextCompletionsInCompletionList?: boolean;
70587063
}
70597064
interface CompilerOptions {
70607065
allowJs?: boolean;

0 commit comments

Comments
 (0)