| This test verifies the fix for golang/go#70563: refactor.extract.variable |
| inserts new statement before the scope of its free symbols. |
| |
| -- flags -- |
| -ignore_extra_diags |
| |
| -- inside_else.go -- |
| package extract |
| |
| func _() { |
| if x := 1; true { |
| |
| } else if y := x + 1; true { //@codeaction("x + 1", "refactor.extract.variable", err=re"else-if's init has free variable") |
| |
| } |
| } |
| -- inside_case.go -- |
| package extract |
| |
| func _() { |
| switch x := 1; x { |
| case x + 1: //@codeaction("x + 1", "refactor.extract.variable-all", err=re"switch's init has free variable") |
| y := x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"switch's init has free variable") |
| _ = y |
| case 3: |
| y := x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"switch's init has free variable") |
| _ = y |
| } |
| } |
| -- parent_if.go -- |
| package extract |
| |
| func _() { |
| if x := 1; x > 0 { |
| y = x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"if-statement's init has free variable") |
| } else { |
| y = x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"if-statement's init has free variable") |
| } |
| } |
| -- parent_switch.go -- |
| package extract |
| |
| func _() { |
| switch x := 1; x { |
| case 1: |
| y = x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"switch's init has free variable") |
| case 3: |
| y = x + 1 //@codeaction("x + 1", "refactor.extract.variable-all", err=re"switch's init has free variable") |
| } |
| } |