aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-toolsmith/astequal/astequal.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-toolsmith/astequal/astequal.go')
-rw-r--r--vendor/github.com/go-toolsmith/astequal/astequal.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/vendor/github.com/go-toolsmith/astequal/astequal.go b/vendor/github.com/go-toolsmith/astequal/astequal.go
index 6a32d7218..b2ab0e640 100644
--- a/vendor/github.com/go-toolsmith/astequal/astequal.go
+++ b/vendor/github.com/go-toolsmith/astequal/astequal.go
@@ -4,6 +4,8 @@ package astequal
import (
"go/ast"
"go/token"
+
+ "golang.org/x/exp/typeparams"
)
// Node reports whether two AST nodes are structurally (deep) equal.
@@ -60,6 +62,14 @@ func astNodeEq(x, y ast.Node) bool {
case ast.Decl:
y, ok := y.(ast.Decl)
return ok && astDeclEq(x, y)
+
+ case *ast.Field:
+ y, ok := y.(*ast.Field)
+ return ok && astFieldEq(x, y)
+ case *ast.FieldList:
+ y, ok := y.(*ast.FieldList)
+ return ok && astFieldListEq(x, y)
+
default:
return false
}
@@ -308,7 +318,8 @@ func astFuncTypeEq(x, y *ast.FuncType) bool {
return x == y
}
return astFieldListEq(x.Params, y.Params) &&
- astFieldListEq(x.Results, y.Results)
+ astFieldListEq(x.Results, y.Results) &&
+ astFieldListEq(typeparams.ForFuncType(x), typeparams.ForFuncType(y))
}
func astBasicLitEq(x, y *ast.BasicLit) bool {
@@ -667,7 +678,8 @@ func astTypeSpecEq(x, y *ast.TypeSpec) bool {
if x == nil || y == nil {
return x == y
}
- return astIdentEq(x.Name, y.Name) && astExprEq(x.Type, y.Type)
+ return astIdentEq(x.Name, y.Name) && astExprEq(x.Type, y.Type) &&
+ astFieldListEq(typeparams.ForTypeSpec(x), typeparams.ForTypeSpec(y))
}
func astValueSpecEq(x, y *ast.ValueSpec) bool {