Skip to content

Commit 151f0e4

Browse files
authored
Merge pull request #63 from Antonboom/fixes/expected-actual-fp
expected-actual: support & and * expr
2 parents 94684b7 + 80d668c commit 151f0e4

File tree

6 files changed

+348
-69
lines changed

6 files changed

+348
-69
lines changed

analyzer/testdata/src/checkers-default/expected-actual/expected_actual_test.go

+128-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analyzer/testdata/src/checkers-default/expected-actual/expected_actual_test.go.golden

+128-8
Large diffs are not rendered by default.

analyzer/testdata/src/checkers-default/useless-assert/useless_assert_test.go

+42-42
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/checkers/expected_actual.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,15 @@ func (checker ExpectedActual) isWrongExpectedActualOrder(pass *analysis.Pass, fi
110110

111111
func (checker ExpectedActual) isExpectedValueCandidate(pass *analysis.Pass, expr ast.Expr) bool {
112112
switch v := expr.(type) {
113+
case *ast.ParenExpr:
114+
return checker.isExpectedValueCandidate(pass, v.X)
115+
116+
case *ast.StarExpr: // *value
117+
return checker.isExpectedValueCandidate(pass, v.X)
118+
119+
case *ast.UnaryExpr:
120+
return (v.Op == token.AND) && checker.isExpectedValueCandidate(pass, v.X) // &value
121+
113122
case *ast.CompositeLit:
114123
return true
115124

@@ -122,7 +131,6 @@ func (checker ExpectedActual) isExpectedValueCandidate(pass *analysis.Pass, expr
122131
return isBasicLit(expr) ||
123132
isUntypedConst(pass, expr) ||
124133
isTypedConst(pass, expr) ||
125-
isAddressOperation(expr) ||
126134
isIdentNamedAsExpected(checker.expVarPattern, expr) ||
127135
isStructVarNamedAsExpected(checker.expVarPattern, expr) ||
128136
isStructFieldNamedAsExpected(checker.expVarPattern, expr)
@@ -191,11 +199,6 @@ func isTypedConst(p *analysis.Pass, e ast.Expr) bool {
191199
return ok && tt.IsValue() && tt.Value != nil
192200
}
193201

194-
func isAddressOperation(e ast.Expr) bool {
195-
ue, ok := e.(*ast.UnaryExpr)
196-
return ok && ue.Op == token.AND
197-
}
198-
199202
func isIdentNamedAsExpected(pattern *regexp.Regexp, e ast.Expr) bool {
200203
id, ok := e.(*ast.Ident)
201204
return ok && pattern.MatchString(id.Name)

0 commit comments

Comments
 (0)