42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
/// <reference path="fourslash.ts"/>
|
|
|
|
// @allowNonTsExtensions: true
|
|
// @Filename: jsFileJsdocTypedefTagTypeExpressionCompletion2_typedef.js
|
|
|
|
//// class Foo {
|
|
//// constructor(value: number) { this.property1 = "hello"; }
|
|
//// static method1() {}
|
|
//// method3() { return 3; }
|
|
//// /**
|
|
//// * @param {string} foo A value.
|
|
//// * @returns {number} Another value
|
|
//// * @mytag
|
|
//// */
|
|
//// method4(foo) { return 3; }
|
|
//// }
|
|
//// /**
|
|
//// * @type { /*type*/Foo }
|
|
//// */
|
|
////var x;
|
|
/////*globalValue*/
|
|
////x./*valueMember*/
|
|
|
|
function getCompletions(nonWarnings: ReadonlyArray<string>): ReadonlyArray<FourSlashInterface.ExpectedCompletionEntry> {
|
|
const withKinds: ReadonlyArray<FourSlashInterface.ExpectedCompletionEntryObject> = [
|
|
{ name: "Foo", kind: "class" },
|
|
{ name: "x", kind: "var" },
|
|
{ name: "property1", kind: "property" },
|
|
{ name: "method3", kind: "method" },
|
|
{ name: "method4", kind: "method" },
|
|
{ name: "foo", kind: "warning", sortText: completion.SortText.JavascriptIdentifiers },
|
|
];
|
|
for (const name of nonWarnings) ts.Debug.assert(withKinds.some(entry => entry.name === name));
|
|
return withKinds.map(entry => nonWarnings.includes(entry.name) ? entry : ({ name: entry.name, kind: "warning", sortText: completion.SortText.JavascriptIdentifiers }));
|
|
}
|
|
|
|
verify.completions(
|
|
{ marker: "type", includes: getCompletions(["Foo"]) },
|
|
{ marker: "globalValue", includes: getCompletions(["Foo", "x"]) },
|
|
{ marker: "valueMember", includes: getCompletions(["property1", "method3", "method4", "foo"]) },
|
|
);
|