blob: 943a3ac672c432bc952c89e7644a839e045ada33 [file] [log] [blame]
This test exercises function and method extraction.
-- flags --
-ignore_extra_diags
-- basic.go --
package extract
//@codeactionedit(A_XLessThanYP, "refactor.extract", meth1, "Extract method")
//@codeactionedit(A_XLessThanYP, "refactor.extract", func1, "Extract function")
//@codeactionedit(A_AddP1, "refactor.extract", meth2, "Extract method")
//@codeactionedit(A_AddP1, "refactor.extract", func2, "Extract function")
//@codeactionedit(A_AddP2, "refactor.extract", meth3, "Extract method")
//@codeactionedit(A_AddP2, "refactor.extract", func3, "Extract function")
//@codeactionedit(A_XLessThanY, "refactor.extract", meth4, "Extract method")
//@codeactionedit(A_XLessThanY, "refactor.extract", func4, "Extract function")
//@codeactionedit(A_Add1, "refactor.extract", meth5, "Extract method")
//@codeactionedit(A_Add1, "refactor.extract", func5, "Extract function")
//@codeactionedit(A_Add2, "refactor.extract", meth6, "Extract method")
//@codeactionedit(A_Add2, "refactor.extract", func6, "Extract function")
type A struct {
x int
y int
}
func (a *A) XLessThanYP() bool {
return a.x < a.y //@loc(A_XLessThanYP, re`return.*a\.y`)
}
func (a *A) AddP() int {
sum := a.x + a.y //@loc(A_AddP1, re`sum.*a\.y`)
return sum //@loc(A_AddP2, re`return.*sum`)
}
func (a A) XLessThanY() bool {
return a.x < a.y //@loc(A_XLessThanY, re`return.*a\.y`)
}
func (a A) Add() int {
sum := a.x + a.y //@loc(A_Add1, re`sum.*a\.y`)
return sum //@loc(A_Add2, re`return.*sum`)
}
-- @func1/basic.go --
@@ -22 +22 @@
- return a.x < a.y //@loc(A_XLessThanYP, re`return.*a\.y`)
+ return newFunction(a) //@loc(A_XLessThanYP, re`return.*a\.y`)
@@ -25 +25,4 @@
+func newFunction(a *A) bool {
+ return a.x < a.y
+}
+
-- @func2/basic.go --
@@ -26 +26 @@
- sum := a.x + a.y //@loc(A_AddP1, re`sum.*a\.y`)
+ sum := newFunction(a) //@loc(A_AddP1, re`sum.*a\.y`)
@@ -30 +30,5 @@
+func newFunction(a *A) int {
+ sum := a.x + a.y
+ return sum
+}
+
-- @func3/basic.go --
@@ -27 +27 @@
- return sum //@loc(A_AddP2, re`return.*sum`)
+ return newFunction(sum) //@loc(A_AddP2, re`return.*sum`)
@@ -30 +30,4 @@
+func newFunction(sum int) int {
+ return sum
+}
+
-- @func4/basic.go --
@@ -31 +31 @@
- return a.x < a.y //@loc(A_XLessThanY, re`return.*a\.y`)
+ return newFunction(a) //@loc(A_XLessThanY, re`return.*a\.y`)
@@ -34 +34,4 @@
+func newFunction(a A) bool {
+ return a.x < a.y
+}
+
-- @func5/basic.go --
@@ -35 +35 @@
- sum := a.x + a.y //@loc(A_Add1, re`sum.*a\.y`)
+ sum := newFunction(a) //@loc(A_Add1, re`sum.*a\.y`)
@@ -39 +39,5 @@
+func newFunction(a A) int {
+ sum := a.x + a.y
+ return sum
+}
+
-- @func6/basic.go --
@@ -36 +36 @@
- return sum //@loc(A_Add2, re`return.*sum`)
+ return newFunction(sum) //@loc(A_Add2, re`return.*sum`)
@@ -39 +39,4 @@
+func newFunction(sum int) int {
+ return sum
+}
+
-- @meth1/basic.go --
@@ -22 +22 @@
- return a.x < a.y //@loc(A_XLessThanYP, re`return.*a\.y`)
+ return a.newMethod() //@loc(A_XLessThanYP, re`return.*a\.y`)
@@ -25 +25,4 @@
+func (a *A) newMethod() bool {
+ return a.x < a.y
+}
+
-- @meth2/basic.go --
@@ -26 +26 @@
- sum := a.x + a.y //@loc(A_AddP1, re`sum.*a\.y`)
+ sum := a.newMethod() //@loc(A_AddP1, re`sum.*a\.y`)
@@ -30 +30,5 @@
+func (a *A) newMethod() int {
+ sum := a.x + a.y
+ return sum
+}
+
-- @meth3/basic.go --
@@ -27 +27 @@
- return sum //@loc(A_AddP2, re`return.*sum`)
+ return a.newMethod(sum) //@loc(A_AddP2, re`return.*sum`)
@@ -30 +30,4 @@
+func (*A) newMethod(sum int) int {
+ return sum
+}
+
-- @meth4/basic.go --
@@ -31 +31 @@
- return a.x < a.y //@loc(A_XLessThanY, re`return.*a\.y`)
+ return a.newMethod() //@loc(A_XLessThanY, re`return.*a\.y`)
@@ -34 +34,4 @@
+func (a A) newMethod() bool {
+ return a.x < a.y
+}
+
-- @meth5/basic.go --
@@ -35 +35 @@
- sum := a.x + a.y //@loc(A_Add1, re`sum.*a\.y`)
+ sum := a.newMethod() //@loc(A_Add1, re`sum.*a\.y`)
@@ -39 +39,5 @@
+func (a A) newMethod() int {
+ sum := a.x + a.y
+ return sum
+}
+
-- @meth6/basic.go --
@@ -36 +36 @@
- return sum //@loc(A_Add2, re`return.*sum`)
+ return a.newMethod(sum) //@loc(A_Add2, re`return.*sum`)
@@ -39 +39,4 @@
+func (A) newMethod(sum int) int {
+ return sum
+}
+
-- context.go --
package extract
import "context"
//@codeactionedit(B_AddP, "refactor.extract", contextMeth1, "Extract method")
//@codeactionedit(B_AddP, "refactor.extract", contextFunc1, "Extract function")
//@codeactionedit(B_LongList, "refactor.extract", contextMeth2, "Extract method")
//@codeactionedit(B_LongList, "refactor.extract", contextFunc2, "Extract function")
type B struct {
x int
y int
}
func (b *B) AddP(ctx context.Context) (int, error) {
sum := b.x + b.y
return sum, ctx.Err() //@loc(B_AddP, re`return.*ctx\.Err\(\)`)
}
func (b *B) LongList(ctx context.Context) (int, error) {
p1 := 1
p2 := 1
p3 := 1
return p1 + p2 + p3, ctx.Err() //@loc(B_LongList, re`return.*ctx\.Err\(\)`)
}
-- @contextMeth1/context.go --
@@ -17 +17 @@
- return sum, ctx.Err() //@loc(B_AddP, re`return.*ctx\.Err\(\)`)
+ return b.newMethod(ctx, sum) //@loc(B_AddP, re`return.*ctx\.Err\(\)`)
@@ -20 +20,4 @@
+func (*B) newMethod(ctx context.Context, sum int) (int, error) {
+ return sum, ctx.Err()
+}
+
-- @contextMeth2/context.go --
@@ -24 +24 @@
- return p1 + p2 + p3, ctx.Err() //@loc(B_LongList, re`return.*ctx\.Err\(\)`)
+ return b.newMethod(ctx, p1, p2, p3) //@loc(B_LongList, re`return.*ctx\.Err\(\)`)
@@ -26 +26,4 @@
+
+func (*B) newMethod(ctx context.Context, p1 int, p2 int, p3 int) (int, error) {
+ return p1 + p2 + p3, ctx.Err()
+}
-- @contextFunc2/context.go --
@@ -24 +24 @@
- return p1 + p2 + p3, ctx.Err() //@loc(B_LongList, re`return.*ctx\.Err\(\)`)
+ return newFunction(ctx, p1, p2, p3) //@loc(B_LongList, re`return.*ctx\.Err\(\)`)
@@ -26 +26,4 @@
+
+func newFunction(ctx context.Context, p1 int, p2 int, p3 int) (int, error) {
+ return p1 + p2 + p3, ctx.Err()
+}
-- @contextFunc1/context.go --
@@ -17 +17 @@
- return sum, ctx.Err() //@loc(B_AddP, re`return.*ctx\.Err\(\)`)
+ return newFunction(ctx, sum) //@loc(B_AddP, re`return.*ctx\.Err\(\)`)
@@ -20 +20,4 @@
+func newFunction(ctx context.Context, sum int) (int, error) {
+ return sum, ctx.Err()
+}
+