aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/moricho/tparallel/pkg/ssafunc
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-02-22 20:37:25 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-02-22 21:02:12 +0100
commitfcc6d71be2c3ce7d9305c04fc2e87af554571bac (patch)
treeb01dbb3d1e2988e28ea158d2d543d603ec0b9569 /vendor/github.com/moricho/tparallel/pkg/ssafunc
parent8f23c528ad5a943b9ffec5dcaf332fd0f614006e (diff)
go.mod: update golangci-lint to v1.37
Diffstat (limited to 'vendor/github.com/moricho/tparallel/pkg/ssafunc')
-rw-r--r--vendor/github.com/moricho/tparallel/pkg/ssafunc/ssafunc.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/vendor/github.com/moricho/tparallel/pkg/ssafunc/ssafunc.go b/vendor/github.com/moricho/tparallel/pkg/ssafunc/ssafunc.go
new file mode 100644
index 000000000..5a8e637bd
--- /dev/null
+++ b/vendor/github.com/moricho/tparallel/pkg/ssafunc/ssafunc.go
@@ -0,0 +1,34 @@
+package ssafunc
+
+import (
+ "go/types"
+
+ "github.com/gostaticanalysis/analysisutil"
+ "github.com/moricho/tparallel/pkg/ssainstr"
+ "golang.org/x/tools/go/ssa"
+)
+
+// IsDeferCalled returns whether the given ssa.Function calls `defer`
+func IsDeferCalled(f *ssa.Function) bool {
+ for _, block := range f.Blocks {
+ for _, instr := range block.Instrs {
+ switch instr.(type) {
+ case *ssa.Defer:
+ return true
+ }
+ }
+ }
+ return false
+}
+
+// IsCalled returns whether the given ssa.Function calls `fn` func
+func IsCalled(f *ssa.Function, fn *types.Func) bool {
+ block := f.Blocks[0]
+ for _, instr := range block.Instrs {
+ called := analysisutil.Called(instr, nil, fn)
+ if _, ok := ssainstr.LookupCalled(instr, fn); ok || called {
+ return true
+ }
+ }
+ return false
+}