aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2023-12-05 15:10:03 +0100
committerTaras Madan <tarasmadan@google.com>2023-12-06 11:31:44 +0000
commit2ab72b4feef2c97f22f90cfbf9e45a6cfcd08bda (patch)
treea6d19b94b6399fcc00a6cfa430885cd349dd1533 /vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go
parente08e8f492d31d672cc245944c185f8aadf2ee695 (diff)
vendor: updates
Diffstat (limited to 'vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go')
-rw-r--r--vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go b/vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go
new file mode 100644
index 000000000..e01fba5c1
--- /dev/null
+++ b/vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go
@@ -0,0 +1,34 @@
+package analysisutil
+
+import (
+ "go/ast"
+ "go/types"
+)
+
+// ObjectOf works in context of Golang package and returns types.Object for the given object's package and name.
+// The search is based on the provided package and its dependencies (imports).
+// Returns nil if the object is not found.
+func ObjectOf(pkg *types.Package, objPkg, objName string) types.Object {
+ if pkg.Path() == objPkg {
+ return pkg.Scope().Lookup(objName)
+ }
+
+ for _, i := range pkg.Imports() {
+ if trimVendor(i.Path()) == objPkg {
+ return i.Scope().Lookup(objName)
+ }
+ }
+ return nil
+}
+
+// IsObj returns true if expression is identifier which notes to given types.Object.
+// Useful in combination with types.Universe objects.
+func IsObj(typesInfo *types.Info, expr ast.Expr, expected types.Object) bool {
+ id, ok := expr.(*ast.Ident)
+ if !ok {
+ return false
+ }
+
+ obj := typesInfo.ObjectOf(id)
+ return obj.Id() == expected.Id()
+}