aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Antonboom/testifylint/internal/analysisutil/object.go
diff options
context:
space:
mode:
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()
+}