diff --git a/src/services/completions.ts b/src/services/completions.ts
index a60adcbbe9c..1c9b10096a6 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -1,13 +1,14 @@
/* @internal */
namespace ts.Completions {
export enum SortText {
- LocationPriority = "0",
- OptionalMember = "1",
- MemberDeclaredBySpreadAssignment = "2",
- SuggestedClassMembers = "3",
- GlobalsOrKeywords = "4",
- AutoImportSuggestions = "5",
- JavascriptIdentifiers = "6"
+ LocalDeclarationPriority = "0",
+ LocationPriority = "1",
+ OptionalMember = "2",
+ MemberDeclaredBySpreadAssignment = "3",
+ SuggestedClassMembers = "4",
+ GlobalsOrKeywords = "5",
+ AutoImportSuggestions = "6",
+ JavascriptIdentifiers = "7"
}
export type Log = (message: string) => void;
@@ -1270,7 +1271,7 @@ namespace ts.Completions {
else {
for (const symbol of type.getApparentProperties()) {
if (typeChecker.isValidPropertyAccessForCompletions(propertyAccess, type, symbol)) {
- addPropertySymbol(symbol, /*insertAwait*/ false, insertQuestionDot);
+ addPropertySymbol(symbol, /* insertAwait */ false, insertQuestionDot);
}
}
}
@@ -1307,14 +1308,22 @@ namespace ts.Completions {
}
else if (preferences.includeCompletionsWithInsertText) {
addSymbolOriginInfo(symbol);
+ addSymbolSortInfo(symbol);
symbols.push(symbol);
}
}
else {
addSymbolOriginInfo(symbol);
+ addSymbolSortInfo(symbol);
symbols.push(symbol);
}
+ function addSymbolSortInfo(symbol: Symbol) {
+ if (isStaticProperty(symbol)) {
+ symbolToSortTextMap[getSymbolId(symbol)] = SortText.LocalDeclarationPriority;
+ }
+ }
+
function addSymbolOriginInfo(symbol: Symbol) {
if (preferences.includeCompletionsWithInsertText) {
if (insertAwait && !symbolToOriginInfoMap[getSymbolId(symbol)]) {
@@ -2817,4 +2826,8 @@ namespace ts.Completions {
}
return false;
}
+
+ function isStaticProperty(symbol: Symbol) {
+ return !!(symbol.valueDeclaration && getEffectiveModifierFlags(symbol.valueDeclaration) & ModifierFlags.Static && isClassLike(symbol.valueDeclaration.parent));
+ }
}
diff --git a/src/services/jsDoc.ts b/src/services/jsDoc.ts
index f011bac8595..11b876a6841 100644
--- a/src/services/jsDoc.ts
+++ b/src/services/jsDoc.ts
@@ -164,7 +164,7 @@ namespace ts.JsDoc {
name: tagName,
kind: ScriptElementKind.keyword,
kindModifiers: "",
- sortText: "0",
+ sortText: Completions.SortText.LocationPriority,
};
}));
}
@@ -177,7 +177,7 @@ namespace ts.JsDoc {
name: `@${tagName}`,
kind: ScriptElementKind.keyword,
kindModifiers: "",
- sortText: "0"
+ sortText: Completions.SortText.LocationPriority
};
}));
}
@@ -212,7 +212,7 @@ namespace ts.JsDoc {
return undefined;
}
- return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText: "0" };
+ return { name, kind: ScriptElementKind.parameterElement, kindModifiers: "", sortText: Completions.SortText.LocationPriority };
});
}
diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts
index 5c51f0c3b38..c9d57642ec1 100644
--- a/src/services/stringCompletions.ts
+++ b/src/services/stringCompletions.ts
@@ -42,7 +42,7 @@ namespace ts.Completions.StringCompletions {
name: type.value,
kindModifiers: ScriptElementKindModifier.none,
kind: ScriptElementKind.string,
- sortText: "0",
+ sortText: SortText.LocationPriority,
replacementSpan: getReplacementSpanForContextToken(contextToken)
}));
return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: completion.isNewIdentifier, optionalReplacementSpan, entries };
diff --git a/src/testRunner/unittests/tsserver/metadataInResponse.ts b/src/testRunner/unittests/tsserver/metadataInResponse.ts
index 966f2662ee8..2ca20ff4046 100644
--- a/src/testRunner/unittests/tsserver/metadataInResponse.ts
+++ b/src/testRunner/unittests/tsserver/metadataInResponse.ts
@@ -55,8 +55,8 @@ namespace ts.projectSystem {
offset: aTs.content.indexOf("this.") + 1 + "this.".length
};
const expectedCompletionEntries: readonly protocol.CompletionEntry[] = [
- { name: "foo", kind: ScriptElementKind.memberFunctionElement, kindModifiers: "", sortText: "0" },
- { name: "prop", kind: ScriptElementKind.memberVariableElement, kindModifiers: "", sortText: "0" }
+ { name: "foo", kind: ScriptElementKind.memberFunctionElement, kindModifiers: "", sortText: Completions.SortText.LocationPriority },
+ { name: "prop", kind: ScriptElementKind.memberVariableElement, kindModifiers: "", sortText: Completions.SortText.LocationPriority }
];
it("can pass through metadata when the command returns array", () => {
diff --git a/tests/cases/fourslash/cloduleAsBaseClass.ts b/tests/cases/fourslash/cloduleAsBaseClass.ts
index 15b991f8633..09929e84172 100644
--- a/tests/cases/fourslash/cloduleAsBaseClass.ts
+++ b/tests/cases/fourslash/cloduleAsBaseClass.ts
@@ -25,6 +25,16 @@
verify.completions({ marker: "1", exact: ["foo2", "foo"] });
edit.insert('foo()');
-verify.completions({ marker: "2", exact: ["prototype", "bar2", "bar", "baz", "x", ...completion.functionMembers] });
+verify.completions({
+ marker: "2",
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "bar2", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "bar", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "baz", sortText: completion.SortText.LocationPriority },
+ { name: "x", sortText: completion.SortText.LocationPriority },
+ ...completion.functionMembers
+ ]
+});
edit.insert('bar()');
verify.noErrors();
diff --git a/tests/cases/fourslash/cloduleAsBaseClass2.ts b/tests/cases/fourslash/cloduleAsBaseClass2.ts
index 273ac2a0f92..4053bfb2c02 100644
--- a/tests/cases/fourslash/cloduleAsBaseClass2.ts
+++ b/tests/cases/fourslash/cloduleAsBaseClass2.ts
@@ -31,7 +31,16 @@
verify.completions({ marker: "1", exact: ["foo2", "foo"] });
edit.insert('foo()');
-verify.completions({ marker: "2", includes: ["bar", "bar2", "baz", "x"], excludes: ["foo", "foo2"] });
+verify.completions({
+ marker: "2",
+ includes: [
+ { name: "bar", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "bar2", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "baz", sortText: completion.SortText.LocationPriority },
+ { name: "x", sortText: completion.SortText.LocationPriority }
+ ],
+ excludes: ["foo", "foo2"]
+});
edit.insert('bar()');
verify.noErrors();
diff --git a/tests/cases/fourslash/cloduleTypeOf1.ts b/tests/cases/fourslash/cloduleTypeOf1.ts
index 4f936f4365e..a17c3fa987c 100644
--- a/tests/cases/fourslash/cloduleTypeOf1.ts
+++ b/tests/cases/fourslash/cloduleTypeOf1.ts
@@ -14,7 +14,13 @@
//// }
////}
-verify.completions({ marker: "1", includes: ["f", "foo"] });
+verify.completions({
+ marker: "1",
+ includes: [
+ { name: "f", sortText: completion.SortText.LocationPriority },
+ { name: "foo", sortText: completion.SortText.LocalDeclarationPriority }
+ ]
+});
edit.insert('foo(1);');
verify.completions({ marker: "2", includes: "x" });
diff --git a/tests/cases/fourslash/commentsClassMembers.ts b/tests/cases/fourslash/commentsClassMembers.ts
index 718b9e7816e..1e17f0327fe 100644
--- a/tests/cases/fourslash/commentsClassMembers.ts
+++ b/tests/cases/fourslash/commentsClassMembers.ts
@@ -190,13 +190,13 @@ verify.completions(
{
marker: ["30", "34", "36", "39", "41", "88"],
exact: [
- "prototype",
- { name: "s1", text: "(property) c1.s1: number", documentation: "s1 is static property of c1" },
- { name: "s2", text: "(method) c1.s2(b: number): number", documentation: "static sum with property" },
- { name: "s3", text: "(property) c1.s3: number", documentation: "static getter property\nsetter property 3" },
- { name: "nc_s1", text: "(property) c1.nc_s1: number" },
- { name: "nc_s2", text: "(method) c1.nc_s2(b: number): number" },
- { name: "nc_s3", text: "(property) c1.nc_s3: number" },
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "s1", text: "(property) c1.s1: number", documentation: "s1 is static property of c1", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "s2", text: "(method) c1.s2(b: number): number", documentation: "static sum with property", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "s3", text: "(property) c1.s3: number", documentation: "static getter property\nsetter property 3", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "nc_s1", text: "(property) c1.nc_s1: number", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "nc_s2", text: "(method) c1.nc_s2(b: number): number", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "nc_s3", text: "(property) c1.nc_s3: number", sortText: completion.SortText.LocalDeclarationPriority },
...completion.functionMembers,
],
},
diff --git a/tests/cases/fourslash/completionListCladule.ts b/tests/cases/fourslash/completionListCladule.ts
index 1040446f4d0..779ac02c9c9 100644
--- a/tests/cases/fourslash/completionListCladule.ts
+++ b/tests/cases/fourslash/completionListCladule.ts
@@ -14,7 +14,13 @@
goTo.marker("c1");
edit.insert(".");
-verify.completions({ includes: ["x", "prototype", "staticMethod"] });
+verify.completions({
+ includes: [
+ { name: "x", sortText: completion.SortText.LocationPriority },
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "staticMethod", sortText: completion.SortText.LocalDeclarationPriority }
+ ]
+});
goTo.marker("c2");
edit.insert(".");
diff --git a/tests/cases/fourslash/completionListClassMembers.ts b/tests/cases/fourslash/completionListClassMembers.ts
index 6a51ce7e71d..f2740963b67 100644
--- a/tests/cases/fourslash/completionListClassMembers.ts
+++ b/tests/cases/fourslash/completionListClassMembers.ts
@@ -26,7 +26,14 @@
verify.completions(
{
marker: "staticsInsideClassScope",
- exact: ["prototype", "privateStaticProperty", "publicStaticProperty", "privateStaticMethod", "publicStaticMethod", ...completion.functionMembers],
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "privateStaticProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicStaticProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "privateStaticMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicStaticMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ],
},
{
marker: "instanceMembersInsideClassScope",
@@ -34,7 +41,12 @@ verify.completions(
},
{
marker: "staticsOutsideClassScope",
- exact: ["prototype", "publicStaticProperty", "publicStaticMethod", ...completion.functionMembers],
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "publicStaticProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicStaticMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ],
},
{
marker: "instanceMembersOutsideClassScope",
diff --git a/tests/cases/fourslash/completionListErrorRecovery.ts b/tests/cases/fourslash/completionListErrorRecovery.ts
index 69eb8004f47..345c1384668 100644
--- a/tests/cases/fourslash/completionListErrorRecovery.ts
+++ b/tests/cases/fourslash/completionListErrorRecovery.ts
@@ -5,5 +5,8 @@
////Foo./**/;
/////*1*/var bar;
-verify.completions({ marker: "", includes: "fun" });
+verify.completions({
+ marker: "",
+ includes: [{ name: "fun", sortText: completion.SortText.LocalDeclarationPriority }]
+});
verify.not.errorExistsAfterMarker("1");
diff --git a/tests/cases/fourslash/completionListInExtendsClause.ts b/tests/cases/fourslash/completionListInExtendsClause.ts
index f5b1ce4384e..c9ff3ff4a6f 100644
--- a/tests/cases/fourslash/completionListInExtendsClause.ts
+++ b/tests/cases/fourslash/completionListInExtendsClause.ts
@@ -9,16 +9,19 @@
//// method() { }
//// static staticMethod() { }
////}
-
////class test1 extends Foo./*1*/ {}
-
////class test2 implements IFoo./*2*/ {}
-
////interface test3 extends IFoo./*3*/ {}
-
////interface test4 implements Foo./*4*/ {}
verify.completions(
- { marker: "1", exact: ["prototype", "staticMethod", ...completion.functionMembers] },
+ {
+ marker: "1",
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "staticMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ]
+ },
{ marker: ["2", "3", "4"], exact: undefined },
);
diff --git a/tests/cases/fourslash/completionListOnAliases2.ts b/tests/cases/fourslash/completionListOnAliases2.ts
index ffa1c212a8d..44694c7bfdd 100644
--- a/tests/cases/fourslash/completionListOnAliases2.ts
+++ b/tests/cases/fourslash/completionListOnAliases2.ts
@@ -39,7 +39,14 @@ verify.completions(
{ marker: ["1", "7"], exact: ["F", "C", "E", "N", "V", "A"] },
{ marker: ["1Type", "7Type"], exact: ["I", "C", "E", "A"] },
// Class C
- { marker: "2", exact: ["prototype", "property", ...completion.functionMembers] },
+ {
+ marker: "2",
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "property", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ]
+ },
// Enum E
{ marker: "3", exact: "value" },
// Module N
diff --git a/tests/cases/fourslash/completionListStaticMembers.ts b/tests/cases/fourslash/completionListStaticMembers.ts
new file mode 100644
index 00000000000..a4b5b192fa5
--- /dev/null
+++ b/tests/cases/fourslash/completionListStaticMembers.ts
@@ -0,0 +1,17 @@
+///
+
+////class Foo {
+//// static a() {}
+//// static b() {}
+////}
+////Foo./**/
+
+verify.completions({
+ marker: "",
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "a", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "b", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ]
+});
diff --git a/tests/cases/fourslash/completionListStaticProtectedMembers.ts b/tests/cases/fourslash/completionListStaticProtectedMembers.ts
index 9b93d93a392..504b8beca52 100644
--- a/tests/cases/fourslash/completionListStaticProtectedMembers.ts
+++ b/tests/cases/fourslash/completionListStaticProtectedMembers.ts
@@ -29,11 +29,27 @@ verify.completions(
{
marker: ["1", "2"],
// Same class, everything is visible
- includes: ["privateMethod", "privateProperty", "protectedMethod", "protectedProperty", "publicMethod", "publicProperty", "protectedOverriddenMethod", "protectedOverriddenProperty"],
+ includes: [
+ { name: "privateMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "privateProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority},
+ { name: "protectedOverriddenProperty", sortText: completion.SortText.LocalDeclarationPriority }
+ ],
},
{
marker: "3",
- includes: ["privateMethod", "privateProperty", "protectedMethod", "protectedProperty", "publicMethod", "publicProperty"],
+ includes: [
+ { name: "privateMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "privateProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority }
+ ],
// Can not access protected properties overridden in subclass
excludes: ["protectedOverriddenMethod", "protectedOverriddenProperty"],
},
diff --git a/tests/cases/fourslash/completionListStaticProtectedMembers2.ts b/tests/cases/fourslash/completionListStaticProtectedMembers2.ts
index aff0c075faa..e3ab6a57f43 100644
--- a/tests/cases/fourslash/completionListStaticProtectedMembers2.ts
+++ b/tests/cases/fourslash/completionListStaticProtectedMembers2.ts
@@ -31,27 +31,27 @@ verify.completions(
// Same class, everything is visible
marker: ["1"],
exact: [
- "prototype",
- "protectedMethod",
- "protectedProperty",
- "publicMethod",
- "publicProperty",
- "protectedOverriddenMethod",
- "protectedOverriddenProperty",
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenProperty", sortText: completion.SortText.LocalDeclarationPriority},
...completion.functionMembers,
],
},
{
marker: ["2", "3"],
exact: [
- "prototype",
- "protectedOverriddenMethod",
- "protectedOverriddenProperty",
- "test",
- "protectedMethod",
- "protectedProperty",
- "publicMethod",
- "publicProperty",
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "test", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority },
...completion.functionMembers,
],
},
@@ -59,13 +59,13 @@ verify.completions(
// only public and protected methods of the base class are accessible through super
marker: "4",
exact: [
- "protectedMethod",
- "publicMethod",
- "protectedOverriddenMethod",
- "apply",
- "call",
- "bind",
- "toString",
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "apply", sortText: completion.SortText.LocationPriority },
+ { name: "call", sortText: completion.SortText.LocationPriority },
+ { name: "bind", sortText: completion.SortText.LocationPriority },
+ { name: "toString", sortText: completion.SortText.LocationPriority },
],
},
);
diff --git a/tests/cases/fourslash/completionListStaticProtectedMembers3.ts b/tests/cases/fourslash/completionListStaticProtectedMembers3.ts
index 57cf38dcb4f..a98ff4afea5 100644
--- a/tests/cases/fourslash/completionListStaticProtectedMembers3.ts
+++ b/tests/cases/fourslash/completionListStaticProtectedMembers3.ts
@@ -25,5 +25,10 @@
// Only public properties are visible outside the class
verify.completions({
marker: ["1", "2"],
- exact: ["prototype", "publicMethod", "publicProperty", ...completion.functionMembers],
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ],
});
diff --git a/tests/cases/fourslash/completionListStaticProtectedMembers4.ts b/tests/cases/fourslash/completionListStaticProtectedMembers4.ts
index a34a3cda3ac..91b54f73ce7 100644
--- a/tests/cases/fourslash/completionListStaticProtectedMembers4.ts
+++ b/tests/cases/fourslash/completionListStaticProtectedMembers4.ts
@@ -26,18 +26,22 @@
////}
//// Derived./*2*/
-const publicCompletions: ReadonlyArray = ["publicMethod", "publicProperty", ...completion.functionMembers];
+const publicCompletions: ReadonlyArray = [
+ { name: "publicMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "publicProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+];
verify.completions(
{
// Sub class, everything but private is visible
marker: "1",
exact: [
- "prototype",
- "protectedOverriddenMethod",
- "protectedOverriddenProperty",
- "protectedMethod",
- "protectedProperty",
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenProperty", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedProperty", sortText: completion.SortText.LocalDeclarationPriority },
...publicCompletions
],
},
@@ -45,9 +49,9 @@ verify.completions(
// Can see protected methods elevated to public
marker: "2",
exact: [
- "prototype",
- "protectedOverriddenMethod",
- "protectedOverriddenProperty",
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "protectedOverriddenMethod", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "protectedOverriddenProperty", sortText: completion.SortText.LocalDeclarationPriority },
...publicCompletions,
],
},
diff --git a/tests/cases/fourslash/completionListsThroughTransitiveBaseClasses.ts b/tests/cases/fourslash/completionListsThroughTransitiveBaseClasses.ts
index 9bf2827e392..f4fd2765028 100644
--- a/tests/cases/fourslash/completionListsThroughTransitiveBaseClasses.ts
+++ b/tests/cases/fourslash/completionListsThroughTransitiveBaseClasses.ts
@@ -15,8 +15,12 @@
////A./*3*/
goTo.eachMarker((_, i) => {
- const all = ["foo", "bar", "baz"];
- verify.completions({ includes: all.slice(0, 3 - i), excludes: all.slice(3 - i) });
+ const all = [
+ { name: "foo", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "bar", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "baz", sortText: completion.SortText.LocalDeclarationPriority }
+ ];
+ verify.completions({ includes: all.slice(0, 3 - i), excludes: all.slice(3 - i).map(e => e.name) });
edit.insert("foo;");
});
diff --git a/tests/cases/fourslash/completionsNamespaceMergedWithClass.ts b/tests/cases/fourslash/completionsNamespaceMergedWithClass.ts
index 109b6f72b1b..ed624ff1042 100644
--- a/tests/cases/fourslash/completionsNamespaceMergedWithClass.ts
+++ b/tests/cases/fourslash/completionsNamespaceMergedWithClass.ts
@@ -14,5 +14,12 @@
verify.completions(
{ marker: "type", exact: "T" },
- { marker: "value", exact: ["prototype", "m", ...completion.functionMembers] },
+ {
+ marker: "value",
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "m", sortText: completion.SortText.LocalDeclarationPriority },
+ ...completion.functionMembers
+ ]
+ },
);
diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts
index 716589e32af..fc61f9831e3 100644
--- a/tests/cases/fourslash/fourslash.ts
+++ b/tests/cases/fourslash/fourslash.ts
@@ -769,13 +769,14 @@ declare function classification(format: "2020"): FourSlashInterface.ModernClassi
declare namespace completion {
type Entry = FourSlashInterface.ExpectedCompletionEntryObject;
export const enum SortText {
- LocationPriority = "0",
- OptionalMember = "1",
- MemberDeclaredBySpreadAssignment = "2",
- SuggestedClassMembers = "3",
- GlobalsOrKeywords = "4",
- AutoImportSuggestions = "5",
- JavascriptIdentifiers = "6"
+ LocalDeclarationPriority = "0",
+ LocationPriority = "1",
+ OptionalMember = "2",
+ MemberDeclaredBySpreadAssignment = "3",
+ SuggestedClassMembers = "4",
+ GlobalsOrKeywords = "5",
+ AutoImportSuggestions = "6",
+ JavascriptIdentifiers = "7"
}
export const enum CompletionSource {
ThisProperty = "ThisProperty/"
diff --git a/tests/cases/fourslash/jsdocTypedefTagTypeExpressionCompletion.ts b/tests/cases/fourslash/jsdocTypedefTagTypeExpressionCompletion.ts
index 7beeab84c57..0e59153981d 100644
--- a/tests/cases/fourslash/jsdocTypedefTagTypeExpressionCompletion.ts
+++ b/tests/cases/fourslash/jsdocTypedefTagTypeExpressionCompletion.ts
@@ -70,8 +70,8 @@ verify.completions(
{
marker: "valueMemberOfFoo",
exact: [
- "prototype",
- { name: "method1", kind: "method", kindModifiers: "static" },
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "method1", kind: "method", kindModifiers: "static", sortText: completion.SortText.LocalDeclarationPriority },
...completion.functionMembers,
],
},
diff --git a/tests/cases/fourslash/memberListErrorRecovery.ts b/tests/cases/fourslash/memberListErrorRecovery.ts
index a7414b4769e..27ee634a9f7 100644
--- a/tests/cases/fourslash/memberListErrorRecovery.ts
+++ b/tests/cases/fourslash/memberListErrorRecovery.ts
@@ -5,4 +5,4 @@
////Foo./**/;
/////*1*/var bar;
-verify.completions({ marker: "", includes: "fun" });
+verify.completions({ marker: "", includes: [{ name: "fun", sortText: completion.SortText.LocalDeclarationPriority }] });
diff --git a/tests/cases/fourslash/multiModuleClodule1.ts b/tests/cases/fourslash/multiModuleClodule1.ts
index fa52150896f..43cb3875eb2 100644
--- a/tests/cases/fourslash/multiModuleClodule1.ts
+++ b/tests/cases/fourslash/multiModuleClodule1.ts
@@ -21,7 +21,16 @@
verify.completions(
{ marker: "1", includes: "C" },
- { marker: ["2", "4"], exact: ["prototype", "boo", "x", "foo", ...completion.functionMembers] },
+ {
+ marker: ["2", "4"],
+ exact: [
+ { name: "prototype", sortText: completion.SortText.LocationPriority },
+ { name: "boo", sortText: completion.SortText.LocalDeclarationPriority },
+ { name: "x", sortText: completion.SortText.LocationPriority },
+ { name: "foo", sortText: completion.SortText.LocationPriority },
+ ...completion.functionMembers
+ ]
+ },
{ marker: "3", exact: ["foo", "bar"] },
);
verify.noErrors();