This test exercises the 'invert if condition' code action.
-- p.go --
package invertif
import (
"fmt"
"os"
)
func Boolean() {
b := true
if b { //@codeactionedit("if b", "refactor.rewrite.invertIf", boolean)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func BooleanFn() {
if os.IsPathSeparator('X') { //@codeactionedit("if os.IsPathSeparator('X')", "refactor.rewrite.invertIf", boolean_fn)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
// Note that the comment here jumps to the wrong location.
func DontRemoveParens() {
a := false
b := true
if !(a ||
b) { //@codeactionedit("b", "refactor.rewrite.invertIf", dont_remove_parens)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func ElseIf() {
// No inversion expected when there's not else clause
if len(os.Args) > 2 {
fmt.Println("A")
}
// No inversion expected for else-if, that would become unreadable
if len(os.Args) > 2 {
fmt.Println("A")
} else if os.Args[0] == "X" { //@codeactionedit(re"if os.Args.0. == .X.", "refactor.rewrite.invertIf", else_if)
fmt.Println("B")
} else {
fmt.Println("C")
}
}
func GreaterThan() {
if len(os.Args) > 2 { //@codeactionedit("i", "refactor.rewrite.invertIf", greater_than)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func NotBoolean() {
b := true
if !b { //@codeactionedit("if !b", "refactor.rewrite.invertIf", not_boolean)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func RemoveElse() {
if true { //@codeactionedit("if true", "refactor.rewrite.invertIf", remove_else)
fmt.Println("A")
} else {
fmt.Println("B")
return
}
fmt.Println("C")
}
func RemoveParens() {
b := true
if !(b) { //@codeactionedit("if", "refactor.rewrite.invertIf", remove_parens)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func Semicolon() {
if _, err := fmt.Println("x"); err != nil { //@codeactionedit("if", "refactor.rewrite.invertIf", semicolon)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func SemicolonAnd() {
if n, err := fmt.Println("x"); err != nil && n > 0 { //@codeactionedit("f", "refactor.rewrite.invertIf", semicolon_and)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
func SemicolonOr() {
if n, err := fmt.Println("x"); err != nil || n < 5 { //@codeactionedit(re"if n, err := fmt.Println..x..; err != nil .. n < 5", "refactor.rewrite.invertIf", semicolon_or)
fmt.Println("A")
} else {
fmt.Println("B")
}
}
-- @boolean/p.go --
@@ -10,3 +10 @@
- if b { //@codeactionedit("if b", "refactor.rewrite.invertIf", boolean)
- fmt.Println("A")
- } else {
+ if !b {
@@ -14 +12,2 @@
+ } else { //@codeactionedit("if b", "refactor.rewrite.invertIf", boolean)
+ fmt.Println("A")
-- @boolean_fn/p.go --
@@ -18,3 +18 @@
- if os.IsPathSeparator('X') { //@codeactionedit("if os.IsPathSeparator('X')", "refactor.rewrite.invertIf", boolean_fn)
- fmt.Println("A")
- } else {
+ if !os.IsPathSeparator('X') {
@@ -22 +20,2 @@
+ } else { //@codeactionedit("if os.IsPathSeparator('X')", "refactor.rewrite.invertIf", boolean_fn)
+ fmt.Println("A")
-- @dont_remove_parens/p.go --
@@ -29,4 +29,2 @@
- if !(a ||
- b) { //@codeactionedit("b", "refactor.rewrite.invertIf", dont_remove_parens)
- fmt.Println("A")
- } else {
+ if (a ||
+ b) {
@@ -34 +32,2 @@
+ } else { //@codeactionedit("b", "refactor.rewrite.invertIf", dont_remove_parens)
+ fmt.Println("A")
-- @else_if/p.go --
@@ -46,3 +46 @@
- } else if os.Args[0] == "X" { //@codeactionedit(re"if os.Args.0. == .X.", "refactor.rewrite.invertIf", else_if)
- fmt.Println("B")
- } else {
+ } else if os.Args[0] != "X" {
@@ -50 +48,2 @@
+ } else { //@codeactionedit(re"if os.Args.0. == .X.", "refactor.rewrite.invertIf", else_if)
+ fmt.Println("B")
-- @greater_than/p.go --
@@ -54,3 +54 @@
- if len(os.Args) > 2 { //@codeactionedit("i", "refactor.rewrite.invertIf", greater_than)
- fmt.Println("A")
- } else {
+ if len(os.Args) <= 2 {
@@ -58 +56,2 @@
+ } else { //@codeactionedit("i", "refactor.rewrite.invertIf", greater_than)
+ fmt.Println("A")
-- @not_boolean/p.go --
@@ -63,3 +63 @@
- if !b { //@codeactionedit("if !b", "refactor.rewrite.invertIf", not_boolean)
- fmt.Println("A")
- } else {
+ if b {
@@ -67 +65,2 @@
+ } else { //@codeactionedit("if !b", "refactor.rewrite.invertIf", not_boolean)
+ fmt.Println("A")
-- @remove_else/p.go --
@@ -71,3 +71 @@
- if true { //@codeactionedit("if true", "refactor.rewrite.invertIf", remove_else)
- fmt.Println("A")
- } else {
+ if false {
@@ -78 +76,3 @@
+ //@codeactionedit("if true", "refactor.rewrite.invertIf", remove_else)
+ fmt.Println("A")
+
-- @remove_parens/p.go --
@@ -83,3 +83 @@
- if !(b) { //@codeactionedit("if", "refactor.rewrite.invertIf", remove_parens)
- fmt.Println("A")
- } else {
+ if b {
@@ -87 +85,2 @@
+ } else { //@codeactionedit("if", "refactor.rewrite.invertIf", remove_parens)
+ fmt.Println("A")
-- @semicolon/p.go --
@@ -91,3 +91 @@
- if _, err := fmt.Println("x"); err != nil { //@codeactionedit("if", "refactor.rewrite.invertIf", semicolon)
- fmt.Println("A")
- } else {
+ if _, err := fmt.Println("x"); err == nil {
@@ -95 +93,2 @@
+ } else { //@codeactionedit("if", "refactor.rewrite.invertIf", semicolon)
+ fmt.Println("A")
-- @semicolon_and/p.go --
@@ -99,3 +99 @@
- if n, err := fmt.Println("x"); err != nil && n > 0 { //@codeactionedit("f", "refactor.rewrite.invertIf", semicolon_and)
- fmt.Println("A")
- } else {
+ if n, err := fmt.Println("x"); err == nil || n <= 0 {
@@ -103 +101,2 @@
+ } else { //@codeactionedit("f", "refactor.rewrite.invertIf", semicolon_and)
+ fmt.Println("A")
-- @semicolon_or/p.go --
@@ -107,3 +107 @@
- if n, err := fmt.Println("x"); err != nil || n < 5 { //@codeactionedit(re"if n, err := fmt.Println..x..; err != nil .. n < 5", "refactor.rewrite.invertIf", semicolon_or)
- fmt.Println("A")
- } else {
+ if n, err := fmt.Println("x"); err == nil && n >= 5 {
@@ -111 +109,2 @@
+ } else { //@codeactionedit(re"if n, err := fmt.Println..x..; err != nil .. n < 5", "refactor.rewrite.invertIf", semicolon_or)
+ fmt.Println("A")