Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e20c62e

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /