Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check auto-import completion for spread assignment #56247

Merged
merged 5 commits into from
Dec 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions src/services/completions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3415,7 +3415,6 @@ function getCompletionData(

const semanticStart = timestamp();
let completionKind = CompletionKind.None;
let isNonContextualObjectLiteral = false;
let hasUnresolvedAutoImports = false;
// This also gets mutated in nested-functions after the return
let symbols: Symbol[] = [];
Expand Down Expand Up @@ -3885,8 +3884,6 @@ function getCompletionData(
function shouldOfferImportCompletions(): boolean {
// If already typing an import statement, provide completions for it.
if (importStatementCompletion) return true;
// If current completion is for non-contextual Object literal shortahands, ignore auto-import symbols
if (isNonContextualObjectLiteral) return false;
// If not already a module, must have modules enabled.
if (!preferences.includeCompletionsForModuleExports) return false;
// If already using ES modules, OK to continue using them.
Expand Down Expand Up @@ -4331,7 +4328,6 @@ function getCompletionData(
if (objectLikeContainer.flags & NodeFlags.InWithStatement) {
return GlobalsSearch.Fail;
}
isNonContextualObjectLiteral = true;
return GlobalsSearch.Continue;
}
const completionsType = typeChecker.getContextualType(objectLikeContainer, ContextFlags.Completions);
Expand All @@ -4344,7 +4340,6 @@ function getCompletionData(
if (typeMembers.length === 0) {
// Edge case: If NumberIndexType exists
if (!hasNumberIndextype) {
isNonContextualObjectLiteral = true;
return GlobalsSearch.Continue;
}
}
Expand Down
70 changes: 70 additions & 0 deletions tests/cases/fourslash/completionForObjectProperty.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/// <reference path="fourslash.ts" />

// @Filename: /a.ts
//// export const foo = { bar: 'baz' };

// @Filename: /b.ts
//// const test = foo/*1*/

// @Filename: /c.ts
//// const test2 = {...foo/*2*/}

// @Filename: /d.ts
//// const test3 = [{...foo/*3*/}]

// @Filename: /e.ts
//// const test4 = { foo/*4*/ }
hanzooo marked this conversation as resolved.
Show resolved Hide resolved

// @Filename: /f.ts
//// const test5 = { foo: /*5*/ }

// @Filename: /g.ts
//// const test6 = { unrelated: foo/*6*/ }

// @Filename: /i.ts
//// const test7: { foo/*7*/: "unrelated" }

// @Filename: /h.ts
//// const test8: { foo: string } = { foo/*8*/ }

verify.completions({
marker: "1",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: true,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "2",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: false,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "3",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: false,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "4",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: true,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "5",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: false,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "6",
includes: { name: "foo", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: false,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "7",
excludes: "foo",
isNewIdentifierLocation: true,
preferences: { includeCompletionsForModuleExports: true }
}, {
marker: "8",
includes: { name: "foo", sortText: completion.SortText.LocationPriority },
isNewIdentifierLocation: false,
preferences: { includeCompletionsForModuleExports: true }
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

verify.completions({
marker: "",
exact: completion.globalsPlus(["foo"]),
includes: { name: "exportedConstant", source: "/a", hasAction: true, sortText: completion.SortText.AutoImportSuggestions },
isNewIdentifierLocation: true,
preferences: { includeCompletionsForModuleExports: true },
});
Loading