Skip to content

Commit e20c62e

Browse files
committed
feat: add untypedconst linter
Implements #3478.
1 parent abe878d commit e20c62e

File tree

5 files changed

+93
-0
lines changed

5 files changed

+93
-0
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ require (
4949
github.com/hashicorp/go-version v1.6.0
5050
github.com/hexops/gotextdiff v1.0.3
5151
github.com/jgautheron/goconst v1.5.1
52+
github.com/jiftechnify/untypedconst v0.0.0-20211230012903-7f805b5dad89
5253
github.com/jingyugao/rowserrcheck v1.1.1
5354
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af
5455
github.com/julz/importas v0.1.0

go.sum

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/golinters/untypedconst.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package golinters
2+
3+
import (
4+
"github.com/jiftechnify/untypedconst"
5+
"golang.org/x/tools/go/analysis"
6+
7+
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
8+
)
9+
10+
func NewUntypedConst() *goanalysis.Linter {
11+
a := untypedconst.Analyzer
12+
13+
return goanalysis.NewLinter(
14+
a.Name,
15+
a.Doc,
16+
[]*analysis.Analyzer{a},
17+
nil,
18+
).WithLoadMode(goanalysis.LoadModeTypesInfo)
19+
}

pkg/lint/lintersdb/manager.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,11 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
821821
WithLoadForGoAnalysis().
822822
WithURL("https://github.com/mvdan/unparam"),
823823

824+
linter.NewConfig(golinters.NewUntypedConst()).
825+
WithSince("v1.51.0").
826+
WithPresets(linter.PresetBugs).
827+
WithURL("https://github.com/jiftechnify/untypedconst"),
828+
824829
linter.NewConfig(golinters.NewUnused(unusedCfg)).
825830
WithSince("v1.20.0").
826831
WithLoadForGoAnalysis().

test/testdata/untypedconst.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
//golangcitest:args -Euntypedconst
2+
package testdata
3+
4+
type ExString string
5+
6+
func retExString() ExString {
7+
if true {
8+
return ExString("hoge")
9+
} else {
10+
return "hoge" // want `returning untyped constant as defined type "command-line-arguments.ExString"`
11+
}
12+
}
13+
14+
type ExInt int
15+
16+
func retExInt() ExInt {
17+
if true {
18+
return ExInt(1)
19+
} else {
20+
return 1 // want `returning untyped constant as defined type "command-line-arguments.ExInt"`
21+
}
22+
}
23+
24+
type ExFloat float64
25+
26+
func retExFloat() ExFloat {
27+
if true {
28+
return ExFloat(0.5)
29+
} else {
30+
return 0.5 // want `returning untyped constant as defined type "command-line-arguments.ExFloat"`
31+
}
32+
}
33+
34+
type ExComplex complex128
35+
36+
func retExComplex() ExComplex {
37+
if true {
38+
return ExComplex(1.0 + 0.5i)
39+
} else {
40+
return 1.0 + 0.5i // want `returning untyped constant as defined type "command-line-arguments.ExComplex"`
41+
}
42+
}
43+
44+
type ExRune rune
45+
46+
func retExRune() ExRune {
47+
if true {
48+
return ExRune('a')
49+
} else {
50+
return 'a' // want `returning untyped constant as defined type "command-line-arguments.ExRune"`
51+
}
52+
}
53+
54+
type ExBool bool
55+
56+
func retExBool() ExBool {
57+
if true {
58+
return ExBool(true)
59+
} else {
60+
return true // want `returning untyped constant as defined type "command-line-arguments.ExBool"`
61+
}
62+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy