1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
/// <reference path="fourslash.ts" />
// @Filename: a.ts
// @newline: LF
// Case: modifier inheritance/deduplication
////class A {
//// public method(): number {
//// return 0;
//// }
////}
////
////abstract class B extends A {
//// [|public abstract|] /*b*/
////}
////
////class C extends A {
//// [|public override m|]/*a*/
////}
////
////interface D {
//// fun(a: number): number;
//// fun(a: undefined, b: string): number;
////}
////
////class E implements D {
//// [|public f|]/*c*/
////}
verify.completions({
marker: "a",
isNewIdentifierLocation: true,
preferences: {
includeCompletionsWithInsertText: true,
includeCompletionsWithSnippetText: false,
includeCompletionsWithClassMemberSnippets: true,
},
includes: [
{
name: "method",
sortText: completion.SortText.ClassMemberSnippets,
replacementSpan: test.ranges()[1],
insertText: "public override method(): number {\n}",
},
],
});
verify.completions({
marker: "b",
isNewIdentifierLocation: true,
preferences: {
includeCompletionsWithInsertText: true,
includeCompletionsWithSnippetText: false,
includeCompletionsWithClassMemberSnippets: true,
},
includes: [
{
name: "method",
sortText: completion.SortText.ClassMemberSnippets,
replacementSpan: test.ranges()[0],
insertText: "public abstract method(): number;",
},
],
});
verify.completions({
marker: "c",
isNewIdentifierLocation: true,
preferences: {
includeCompletionsWithInsertText: true,
includeCompletionsWithSnippetText: false,
includeCompletionsWithClassMemberSnippets: true,
},
includes: [
{
name: "fun",
sortText: completion.SortText.ClassMemberSnippets,
replacementSpan: test.ranges()[2],
insertText:
`public fun(a: number): number;
public fun(a: undefined, b: string): number;
public fun(a: unknown, b?: unknown): number {
}`,
},
],
});
|