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")