1
0
mirror of https://github.com/mgechev/revive.git synced 2024-12-12 10:44:59 +02:00
revive/internal/typeparams/typeparams.go
Ivan Trubach dc30eb1182
fix(receiver-naming): distinguish types with parameters (#692)
* fix(receiver-naming): distinguish types with parameters

* chore: run tests using supported Go versions matrix
2022-06-18 18:47:53 +02:00

30 lines
697 B
Go

// Package typeparams provides utilities for working with Go ASTs with support
// for type parameters when built with Go 1.18 and higher.
package typeparams
import (
"go/ast"
)
// Enabled reports whether type parameters are enabled in the current build
// environment.
func Enabled() bool {
return enabled
}
// ReceiverType returns the named type of the method receiver, sans "*" and type
// parameters, or "invalid-type" if fn.Recv is ill formed.
func ReceiverType(fn *ast.FuncDecl) string {
e := fn.Recv.List[0].Type
if s, ok := e.(*ast.StarExpr); ok {
e = s.X
}
if enabled {
e = unpackIndexExpr(e)
}
if id, ok := e.(*ast.Ident); ok {
return id.Name
}
return "invalid-type"
}