Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
bump noinlineerr v1.0.3; add fix tests
  • Loading branch information
AlwxSin authored and ldez committed May 29, 2025
commit c8f8c3996505aa6d66e12216dc21e13ececf9137
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require (
4d63.com/gochecknoglobals v0.2.2
github.com/4meepo/tagalign v1.4.2
github.com/Abirdcfly/dupword v0.1.6
github.com/AlwxSin/noinlineerr v1.0.3
github.com/Antonboom/errname v1.1.0
github.com/Antonboom/nilnil v1.1.0
github.com/Antonboom/testifylint v1.6.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions pkg/golinters/noinlineerr/noinlineerr_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,11 @@ import (
func TestFromTestdata(t *testing.T) {
integration.RunTestdata(t)
}

func TestFix(t *testing.T) {
integration.RunFix(t)
}

func TestFixPathPrefix(t *testing.T) {
integration.RunFixPathPrefix(t)
}
59 changes: 59 additions & 0 deletions pkg/golinters/noinlineerr/testdata/fix/in/noinlineerr.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//golangcitest:args -Enoinlineerr
//golangcitest:expected_exitcode 0
package testdata

type MyAliasErr error

type MyCustomError struct{}

func (mc *MyCustomError) Error() string {
return "error"
}

func doSomething() error {
return nil
}

func doSmthManyArgs(a, b, c, d int) error {
return nil
}

func doSmthMultipleReturn() (bool, error) {
return false, nil
}

func doMyAliasErr() MyAliasErr {
return nil
}

func doMyCustomErr() *MyCustomError {
return &MyCustomError{}
}

func invalid() error {
err := doSomething()
if err != nil {
return err
}

err = doSmthManyArgs(0,
0,
0,
0,
)
if err != nil {
return err
}

err = doMyAliasErr()
if err != nil {
return err
}

err = doMyCustomErr()
if err != nil {
return err
}

return nil
}
59 changes: 59 additions & 0 deletions pkg/golinters/noinlineerr/testdata/fix/out/noinlineerr.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//golangcitest:args -Enoinlineerr
//golangcitest:expected_exitcode 0
package testdata

type MyAliasErr error

type MyCustomError struct{}

func (mc *MyCustomError) Error() string {
return "error"
}

func doSomething() error {
return nil
}

func doSmthManyArgs(a, b, c, d int) error {
return nil
}

func doSmthMultipleReturn() (bool, error) {
return false, nil
}

func doMyAliasErr() MyAliasErr {
return nil
}

func doMyCustomErr() *MyCustomError {
return &MyCustomError{}
}

func invalid() error {
err := doSomething()
if err != nil {
return err
}

err = doSmthManyArgs(0,
0,
0,
0,
)
if err != nil {
return err
}

err = doMyAliasErr()
if err != nil {
return err
}

err = doMyCustomErr()
if err != nil {
return err
}

return nil
}
48 changes: 41 additions & 7 deletions pkg/golinters/noinlineerr/testdata/noinlineerr.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
//golangcitest:args -Enoinlineerr
package testdata

import "fmt"
import (
"fmt"
"strconv"
)

type MyAliasErr error

type MyCustomError struct {}

func (mc *MyCustomError) Error() string {
return "error"
}

func doSomething() error {
return nil
Expand All @@ -15,6 +26,14 @@ func doSmthMultipleReturn() (bool, error) {
return false, nil
}

func doMyAliasErr() MyAliasErr {
return nil
}

func doMyCustomErr() *MyCustomError {
return &MyCustomError{}
}

func valid() error {
err := doSomething() // ok
if err != nil {
Expand All @@ -26,28 +45,43 @@ func valid() error {
return err
}

ok, err := doSmthMultipleReturn() // ok
_, err = doSmthMultipleReturn() // ok
if err != nil {
return fmt.Errorf("%b; %w", ok, err)
return err
}

if ok, _ := strconv.ParseBool("1"); ok {
fmt.Println("ok")
}

return nil
}

func invalid() error {
if err := doSomething(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil; use plain assignment `err := ..."
if err := doSomething(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil`; use plain assignment `err := ...`"
return err
}

if err := doSmthManyArgs(0, // want "avoid inline error handling using `if err := ...; err != nil; use plain assignment `err := ..."
if err := doSmthManyArgs(0, // want "avoid inline error handling using `if err := ...; err != nil`; use plain assignment `err := ...`"
0,
0,
0,
); err != nil {
return err
}

if ok, err := doSmthMultipleReturn(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil; use plain assignment `err := ..."
return fmt.Errorf("%b; %w", ok, err)
if _, err := doSmthMultipleReturn(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil`; use plain assignment `err := ...`"
_ = false
return err
}

if err := doMyAliasErr(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil`; use plain assignment `err := ...`"
return err
}

if err := doMyCustomErr(); err != nil { // want "avoid inline error handling using `if err := ...; err != nil`; use plain assignment `err := ...`"
return err
}

return nil
}