Skip to content

Commit

Permalink
fix(46589): omit ? in method signature completion for optional methods
Browse files Browse the repository at this point in the history
  • Loading branch information
a-tarasyuk committed Oct 30, 2021
1 parent 9b1ba8f commit c2d25d3
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/services/codefixes/helpers.ts
Expand Up @@ -50,6 +50,7 @@ namespace ts.codefix {
importAdder: ImportAdder | undefined,
addClassElement: (node: AddNode) => void,
body: Block | undefined,
preserveOptional = true,
isAmbient = false,
): void {
const declarations = symbol.getDeclarations();
Expand All @@ -63,7 +64,7 @@ namespace ts.codefix {
const visibilityModifier = createVisibilityModifier(getEffectiveModifierFlags(declaration));
const modifiers = visibilityModifier ? factory.createNodeArray([visibilityModifier]) : undefined;
const type = checker.getWidenedType(checker.getTypeOfSymbolAtLocation(symbol, enclosingDeclaration));
const optional = !!(symbol.flags & SymbolFlags.Optional);
const optional = preserveOptional && !!(symbol.flags & SymbolFlags.Optional);
const ambient = !!(enclosingDeclaration.flags & NodeFlags.Ambient) || isAmbient;
const quotePreference = getQuotePreference(sourceFile, preferences);

Expand Down
4 changes: 3 additions & 1 deletion src/services/completions.ts
Expand Up @@ -888,7 +888,7 @@ namespace ts.Completions {
node => {
let requiredModifiers = ModifierFlags.None;
if (isAbstract) {
requiredModifiers |= ModifierFlags.Abstract;
requiredModifiers |= ModifierFlags.Abstract;
}
if (isClassElement(node)
&& checker.getMemberOverrideModifierStatus(classLikeDeclaration, node) === MemberOverrideStatus.NeedsOverride) {
Expand All @@ -912,6 +912,7 @@ namespace ts.Completions {
completionNodes.push(node);
},
body,
/*preserveOptional*/ false,
isAbstract);

if (completionNodes.length) {
Expand Down Expand Up @@ -3882,5 +3883,6 @@ namespace ts.Completions {
}
return charCode;
}

}

44 changes: 44 additions & 0 deletions tests/cases/fourslash/completionsOverridingMethod9.ts
@@ -0,0 +1,44 @@
/// <reference path="fourslash.ts" />

// @Filename: a.ts
// @newline: LF

////interface IFoo {
//// a?: number;
//// b?(x: number): void;
////}
////class Foo implements IFoo {
//// /**/
////}

verify.completions({
marker: "",
isNewIdentifierLocation: true,
preferences: {
includeCompletionsWithInsertText: true,
includeCompletionsWithSnippetText: false,
includeCompletionsWithClassMemberSnippets: true,
},
includes: [
{
name: "a",
sortText: completion.SortText.LocationPriority,
replacementSpan: {
fileName: "",
pos: 0,
end: 0,
},
insertText: "a: number;\n"
},
{
name: "b",
sortText: completion.SortText.LocationPriority,
replacementSpan: {
fileName: "",
pos: 0,
end: 0,
},
insertText: "b(x: number): void {\n}\n"
},
],
});

0 comments on commit c2d25d3

Please sign in to comment.