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.");
+ }
+}`,
+});