| This test checks the behavior of the 'extract variable/constant' code actions |
| when the optimal place for the new declaration is within the "if" statement, |
| like so: |
| |
| if x := 1 + 2 or y + y ; true { |
| } else if x > 0 { |
| } |
| |
| A future refactor.variable implementation that does this should avoid |
| using a 'const' declaration, which is not legal at that location. |
| |
| -- flags -- |
| -ignore_extra_diags |
| |
| -- a.go -- |
| package a |
| |
| func constant() { |
| if true { |
| } else if 1 + 2 > 0 { //@ codeaction("1 + 2", "refactor.extract.constant", edit=constant) |
| } |
| } |
| |
| func variable(y int) { |
| if true { |
| } else if y + y > 0 { //@ codeaction("y + y", "refactor.extract.variable", edit=variable) |
| } |
| } |
| |
| -- @constant/a.go -- |
| @@ -4 +4 @@ |
| + const k = 1 + 2 |
| @@ -5 +6 @@ |
| - } else if 1 + 2 > 0 { //@ codeaction("1 + 2", "refactor.extract.constant", edit=constant) |
| + } else if k > 0 { //@ codeaction("1 + 2", "refactor.extract.constant", edit=constant) |
| -- @variable/a.go -- |
| @@ -10 +10 @@ |
| + x := y + y |
| @@ -11 +12 @@ |
| - } else if y + y > 0 { //@ codeaction("y + y", "refactor.extract.variable", edit=variable) |
| + } else if x > 0 { //@ codeaction("y + y", "refactor.extract.variable", edit=variable) |