-package pkg
-
-import "sync"
-
-func fn1() {
- var x sync.Mutex
- x.Lock()
- x.Unlock() // want `empty critical section`
-}
-
-func fn2() {
- x := struct {
- m1 struct {
- m2 sync.Mutex
- }
- }{}
-
- x.m1.m2.Lock()
- x.m1.m2.Unlock() // want `empty critical section`
-}
-
-func fn3() {
- var x sync.RWMutex
- x.Lock()
- x.Unlock() // want `empty critical section`
-
- x.RLock()
- x.RUnlock() // want `empty critical section`
-
- x.Lock()
- defer x.Unlock()
-}
-
-func fn4() {
- x := struct {
- m func() *sync.Mutex
- }{
- m: func() *sync.Mutex {
- return new(sync.Mutex)
- },
- }
-
- x.m().Lock()
- x.m().Unlock() // want `empty critical section`
-}
-
-func fn5() {
- i := 0
- var x sync.Mutex
- x.Lock()
- i++
- x.Unlock()
-}
-
-func fn6() {
- x := &sync.Mutex{}
- x.Lock()
- x.Unlock() // want `empty critical section`
-}
-
-func fn7() {
- x := &struct {
- sync.Mutex
- }{}
-
- x.Lock()
- x.Unlock() // want `empty critical section`
-}
-
-func fn8() {
- var x sync.Locker
- x = new(sync.Mutex)
-
- x.Lock()
- x.Unlock() // want `empty critical section`
-}
-
-func fn9() {
- x := &struct {
- sync.Locker
- }{&sync.Mutex{}}
- x.Lock()
- x.Unlock() // want `empty critical section`
-}
-
-type T struct{}
-
-func (T) Lock() int { return 0 }
-func (T) Unlock() {}
-
-func fn10() {
- var t T
- t.Lock()
- t.Unlock()
-}