Skip to content

Commit

Permalink
check param, result, type param of function in redefines-builtin-id r…
Browse files Browse the repository at this point in the history
…ule (#1023)

* check param, result, type param of function in redefines-builtin-id rule

* combine the if statements

* tiny refactoring to make it more Go idiomatic

---------

Co-authored-by: chavacava <[email protected]>
  • Loading branch information
skaji and chavacava authored Aug 15, 2024
1 parent e54773e commit 05c4801
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
25 changes: 25 additions & 0 deletions rule/redefines-builtin-id.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,31 @@ func (w *lintRedefinesBuiltinID) Visit(node ast.Node) ast.Visitor {
if ok, bt := w.isBuiltIn(id); ok {
w.addFailure(n, fmt.Sprintf("redefinition of the built-in %s %s", bt, id))
}
case *ast.FuncType:
var fields []*ast.Field
if n.TypeParams != nil {
fields = append(fields, n.TypeParams.List...)
}
if n.Params != nil {
fields = append(fields, n.Params.List...)
}
if n.Results != nil {
fields = append(fields, n.Results.List...)
}
for _, field := range fields {
for _, name := range field.Names {
obj := name.Obj
isTypeOrName := obj != nil && (obj.Kind == ast.Var || obj.Kind == ast.Typ)
if !isTypeOrName {
continue
}

id := obj.Name
if ok, bt := w.isBuiltIn(id); ok {
w.addFailure(name, fmt.Sprintf("redefinition of the built-in %s %s", bt, id))
}
}
}
case *ast.AssignStmt:
for _, e := range n.Lhs {
id, ok := e.(*ast.Ident)
Expand Down
11 changes: 11 additions & 0 deletions testdata/redefines-builtin-id.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,14 @@ func foo() {
_ = max
_ = min
}

func foo1(new int) { // MATCH /redefinition of the built-in function new/
_ = new
}

func foo2() (new int) { // MATCH /redefinition of the built-in function new/
return
}

func foo3[new any]() { // MATCH /redefinition of the built-in function new/
}

0 comments on commit 05c4801

Please sign in to comment.