diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts index 5d033a82cb..8de22cafe8 100644 --- a/src/services/codefixes/helpers.ts +++ b/src/services/codefixes/helpers.ts @@ -111,16 +111,18 @@ namespace ts.codefix { } export function createMethodFromCallExpression( - { typeArguments, arguments: args }: CallExpression, + { typeArguments, arguments: args, parent: parent }: CallExpression, methodName: string, inJs: boolean, makeStatic: boolean, preferences: UserPreferences, ): MethodDeclaration { + const asterisk = parent.kind === SyntaxKind.YieldExpression ? createToken(SyntaxKind.AsteriskToken) : undefined; + return createMethod( /*decorators*/ undefined, /*modifiers*/ makeStatic ? [createToken(SyntaxKind.StaticKeyword)] : undefined, - /*asteriskToken*/ undefined, + /*asteriskToken*/ asterisk, methodName, /*questionToken*/ undefined, /*typeParameters*/ inJs ? undefined : map(typeArguments, (_, i) => diff --git a/tests/cases/fourslash/codeFixAddMissingMember_generator_function.ts b/tests/cases/fourslash/codeFixAddMissingMember_generator_function.ts new file mode 100644 index 0000000000..6742cc4334 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddMissingMember_generator_function.ts @@ -0,0 +1,21 @@ +/// + +////class C { +//// *method() { +//// yield* this.y(); +//// } +////} + +verify.codeFixAll({ + fixId: "addMissingMember", + fixAllDescription: "Add all missing members", + newFileContent: + `class C { + *method() { + yield* this.y(); + } + *y(): any { + throw new Error("Method not implemented."); + } +}`, +}); diff --git a/tests/cases/fourslash/codeFixAddMissingMember_non_generator_function.ts b/tests/cases/fourslash/codeFixAddMissingMember_non_generator_function.ts new file mode 100644 index 0000000000..a868646446 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddMissingMember_non_generator_function.ts @@ -0,0 +1,21 @@ +/// + +////class C { +//// method() { +//// yield* this.y(); +//// } +////} + +verify.codeFixAll({ + fixId: "addMissingMember", + fixAllDescription: "Add all missing members", + newFileContent: + `class C { + method() { + yield* this.y(); + } + y(): any { + throw new Error("Method not implemented."); + } +}`, +});