From 181ba2fbc74d86c4190c7888d519e814ad7045b0 Mon Sep 17 00:00:00 2001 From: Oleg Butuzov Date: Tue, 25 Apr 2023 13:20:03 +0300 Subject: [PATCH 1/3] test: update ireturn tests - added new test to ensure generics support in linter - renamed config (so we can have a pattern in naming) --- .../configs/ireturn_reject_generics.yaml | 4 +++ ...b_reject.yml => ireturn_reject_stdlib.yml} | 0 test/testdata/ireturn_reject_generics.go | 25 +++++++++++++++++++ test/testdata/ireturn_reject_stdlib.go | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/testdata/configs/ireturn_reject_generics.yaml rename test/testdata/configs/{ireturn_stdlib_reject.yml => ireturn_reject_stdlib.yml} (100%) create mode 100644 test/testdata/ireturn_reject_generics.go diff --git a/test/testdata/configs/ireturn_reject_generics.yaml b/test/testdata/configs/ireturn_reject_generics.yaml new file mode 100644 index 000000000000..90289d1306ae --- /dev/null +++ b/test/testdata/configs/ireturn_reject_generics.yaml @@ -0,0 +1,4 @@ +linters-settings: + ireturn: + reject: + - generic diff --git a/test/testdata/configs/ireturn_stdlib_reject.yml b/test/testdata/configs/ireturn_reject_stdlib.yml similarity index 100% rename from test/testdata/configs/ireturn_stdlib_reject.yml rename to test/testdata/configs/ireturn_reject_stdlib.yml diff --git a/test/testdata/ireturn_reject_generics.go b/test/testdata/ireturn_reject_generics.go new file mode 100644 index 000000000000..ea5be6884c7d --- /dev/null +++ b/test/testdata/ireturn_reject_generics.go @@ -0,0 +1,25 @@ +//golangcitest:args -Eireturn +//golangcitest:config_path testdata/configs/ireturn_reject_generics.yml +package testdata + +import ( + "bytes" + "io" +) + +func NewWriter() io.Writer { + var buf bytes.Buffer + return &buf +} + +func TestError() error { + return nil +} + +func Get[K comparable, V int64 | float64](m map[K]V) V { // want `Get returns generic interface \(V\)` + var s V + for _, v := range m { + s += v + } + return s +} diff --git a/test/testdata/ireturn_reject_stdlib.go b/test/testdata/ireturn_reject_stdlib.go index 8f09e785cf68..3c935b855b7e 100644 --- a/test/testdata/ireturn_reject_stdlib.go +++ b/test/testdata/ireturn_reject_stdlib.go @@ -1,5 +1,5 @@ //golangcitest:args -Eireturn -//golangcitest:config_path testdata/configs/ireturn_stdlib_reject.yml +//golangcitest:config_path testdata/configs/ireturn_reject_stdlib.yml package testdata import ( From 980b6ecf6892997bb6b012801a38c30eb15ac686 Mon Sep 17 00:00:00 2001 From: Oleg Butuzov Date: Tue, 25 Apr 2023 13:21:26 +0300 Subject: [PATCH 2/3] docs: generic interfaces support for `ireturn` linter Updated yaml config to show supported feature of `ireturn` linter --- .golangci.reference.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.golangci.reference.yml b/.golangci.reference.yml index 7e167edf465c..37324b856153 100644 --- a/.golangci.reference.yml +++ b/.golangci.reference.yml @@ -1159,13 +1159,14 @@ linters-settings: max: 5 ireturn: - # ireturn allows using `allow` and `reject` settings at the same time. + # ireturn does not allow using `allow` and `reject` settings at the same time. # Both settings are lists of the keywords and regular expressions matched to interface or package names. # keywords: # - `empty` for `interface{}` # - `error` for errors # - `stdlib` for standard library # - `anon` for anonymous interfaces + # - `generic` for generic interfaces added in go 1.18 # By default, it allows using errors, empty interfaces, anonymous interfaces, # and interfaces provided by the standard library. From 5e21f739e4ec62cf628568b46b94d6fa4e2db283 Mon Sep 17 00:00:00 2001 From: Oleg Butuzov Date: Tue, 25 Apr 2023 13:52:40 +0300 Subject: [PATCH 3/3] fix: test config renamed --- .../{ireturn_reject_generics.yaml => ireturn_reject_generics.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/testdata/configs/{ireturn_reject_generics.yaml => ireturn_reject_generics.yml} (100%) diff --git a/test/testdata/configs/ireturn_reject_generics.yaml b/test/testdata/configs/ireturn_reject_generics.yml similarity index 100% rename from test/testdata/configs/ireturn_reject_generics.yaml rename to test/testdata/configs/ireturn_reject_generics.yml