diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_FnArgument.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_FnArgument.ts
new file mode 100644
index 00000000000..28ad1354991
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_FnArgument.ts
@@ -0,0 +1,15 @@
+///
+
+//// function doSomething(a){}
+//// doSomething(/*x*/(/*y*/) => 1 + 1);
+
+goTo.select("x", "y");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to anonymous function",
+ actionDescription: "Convert to anonymous function",
+ newContent: `function doSomething(a){}
+doSomething(function() {
+ return 1 + 1;
+});`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_MapArgument.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_MapArgument.ts
new file mode 100644
index 00000000000..d1919cf5d7c
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_MapArgument.ts
@@ -0,0 +1,13 @@
+///
+
+//// [9,8,7].map(/*x*/n/*y*/ => n + 418);
+
+goTo.select("x", "y");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to anonymous function",
+ actionDescription: "Convert to anonymous function",
+ newContent: `[9,8,7].map(function(n) {
+ return n + 418;
+});`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_RetType.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_Typed.ts
similarity index 66%
rename from tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_RetType.ts
rename to tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_Typed.ts
index d8f6a591d17..0fbea66be0e 100644
--- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_RetType.ts
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnon_Typed.ts
@@ -1,13 +1,13 @@
///
-//// const foo = /*x*/(/*y*/): number => a + 1;
+//// const increment = /*x*/(/*y*/a: number): number => a + 1;
goTo.select("x", "y");
edit.applyRefactor({
refactorName: "Convert arrow function or function expression",
actionName: "Convert to anonymous function",
actionDescription: "Convert to anonymous function",
- newContent: `const foo = function(): number {
+ newContent: `const increment = function(a: number): number {
return a + 1;
};`,
});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_FnArgument.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_FnArgument.ts
new file mode 100644
index 00000000000..3dc442e4e5d
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_FnArgument.ts
@@ -0,0 +1,15 @@
+///
+
+//// function foo(lambda){}
+//// foo(function /*x*/is/*y*/Even(n) {
+//// return n % 2 === 0;
+//// });
+
+goTo.select("x", "y");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to arrow function",
+ actionDescription: "Convert to arrow function",
+ newContent: `function foo(lambda){}
+foo((n) => n % 2 === 0);`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_RetType.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_MapArgument.ts
similarity index 62%
rename from tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_RetType.ts
rename to tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_MapArgument.ts
index ce814984236..4e1c0b2f9f5 100644
--- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_RetType.ts
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_MapArgument.ts
@@ -1,13 +1,13 @@
///
-//// const foo = /*x*/f/*y*/unction(): string {
-//// return "foobar";
-//// };
+//// [4,5,6,7].map(function /*x*/is/*y*/Even(n) {
+//// return n % 2 === 0;
+//// });
goTo.select("x", "y");
edit.applyRefactor({
refactorName: "Convert arrow function or function expression",
actionName: "Convert to arrow function",
actionDescription: "Convert to arrow function",
- newContent: `const foo = (): string => "foobar";`,
+ newContent: `[4,5,6,7].map((n) => n % 2 === 0);`,
});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_Typed.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_Typed.ts
new file mode 100644
index 00000000000..01d30d1f080
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_Typed.ts
@@ -0,0 +1,13 @@
+///
+
+//// const concat = /*x*/f/*y*/unction(a: string, b: string): string {
+//// return a + b;
+//// };
+
+goTo.select("x", "y");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to arrow function",
+ actionDescription: "Convert to arrow function",
+ newContent: `const concat = (a: string, b: string): string => a + b;`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_Typed.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_Typed.ts
new file mode 100644
index 00000000000..6a67c390bd4
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_Typed.ts
@@ -0,0 +1,13 @@
+///
+
+//// let isFoo = /*x*/(/*y*/n: number): boolean => n === 42;
+
+goTo.select("x", "y");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to named function",
+ actionDescription: "Convert to named function",
+ newContent: `function isFoo(n: number): boolean {
+ return n === 42;
+}`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_RetType.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_keywordSelection.ts
similarity index 69%
rename from tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_RetType.ts
rename to tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_keywordSelection.ts
index 9fffa041499..2e2f1b2b14d 100644
--- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_RetType.ts
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToNamed_keywordSelection.ts
@@ -1,13 +1,13 @@
///
-//// let foo = /*x*/(/*y*/): number => 42;
+//// /*x*/let/*y*/ foo = a => 1 + a;
goTo.select("x", "y");
edit.applyRefactor({
refactorName: "Convert arrow function or function expression",
actionName: "Convert to named function",
actionDescription: "Convert to named function",
- newContent: `function foo(): number {
- return 42;
+ newContent: `function foo(a) {
+ return 1 + a;
}`,
});