| 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() | |
| +} | |
| + |