+++ /dev/null
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package a
-
-import (
- "context"
- "log"
- "os"
- "testing"
- "time"
-)
-
-var bg = context.Background()
-
-// Check the three functions and assignment forms (var, :=, =) we look for.
-// (Do these early: line numbers are fragile.)
-func _() {
- var _, cancel = context.WithCancel(bg) // want `the cancel function is not used on all paths \(possible context leak\)`
- if false {
- _ = cancel
- }
-} // want "this return statement may be reached without using the cancel var defined on line 20"
-
-func _() {
- _, cancel2 := context.WithDeadline(bg, time.Time{}) // want "the cancel2 function is not used..."
- if false {
- _ = cancel2
- }
-} // want "may be reached without using the cancel2 var defined on line 27"
-
-func _() {
- var cancel3 func()
- _, cancel3 = context.WithTimeout(bg, 0) // want "function is not used..."
- if false {
- _ = cancel3
- }
-} // want "this return statement may be reached without using the cancel3 var defined on line 35"
-
-func _() {
- ctx, _ := context.WithCancel(bg) // want "the cancel function returned by context.WithCancel should be called, not discarded, to avoid a context leak"
- ctx, _ = context.WithTimeout(bg, 0) // want "the cancel function returned by context.WithTimeout should be called, not discarded, to avoid a context leak"
- ctx, _ = context.WithDeadline(bg, time.Time{}) // want "the cancel function returned by context.WithDeadline should be called, not discarded, to avoid a context leak"
- _ = ctx
-}
-
-func _() {
- _, cancel := context.WithCancel(bg)
- defer cancel() // ok
-}
-
-func _() {
- _, cancel := context.WithCancel(bg) // want "not used on all paths"
- if condition {
- cancel()
- }
- return // want "this return statement may be reached without using the cancel var"
-}
-
-func _() {
- _, cancel := context.WithCancel(bg)
- if condition {
- cancel()
- } else {
- // ok: infinite loop
- for {
- print(0)
- }
- }
-}
-
-func _() {
- _, cancel := context.WithCancel(bg) // want "not used on all paths"
- if condition {
- cancel()
- } else {
- for i := 0; i < 10; i++ {
- print(0)
- }
- }
-} // want "this return statement may be reached without using the cancel var"
-
-func _() {
- _, cancel := context.WithCancel(bg)
- // ok: used on all paths
- switch someInt {
- case 0:
- new(testing.T).FailNow()
- case 1:
- log.Fatal()
- case 2:
- cancel()
- case 3:
- print("hi")
- fallthrough
- default:
- os.Exit(1)
- }
-}
-
-func _() {
- _, cancel := context.WithCancel(bg) // want "not used on all paths"
- switch someInt {
- case 0:
- new(testing.T).FailNow()
- case 1:
- log.Fatal()
- case 2:
- cancel()
- case 3:
- print("hi") // falls through to implicit return
- default:
- os.Exit(1)
- }
-} // want "this return statement may be reached without using the cancel var"
-
-func _(ch chan int) {
- _, cancel := context.WithCancel(bg) // want "not used on all paths"
- select {
- case <-ch:
- new(testing.T).FailNow()
- case ch <- 2:
- print("hi") // falls through to implicit return
- case ch <- 1:
- cancel()
- default:
- os.Exit(1)
- }
-} // want "this return statement may be reached without using the cancel var"
-
-func _(ch chan int) {
- _, cancel := context.WithCancel(bg)
- // A blocking select must execute one of its cases.
- select {
- case <-ch:
- panic(0)
- }
- if false {
- _ = cancel
- }
-}
-
-func _() {
- go func() {
- ctx, cancel := context.WithCancel(bg) // want "not used on all paths"
- if false {
- _ = cancel
- }
- print(ctx)
- }() // want "may be reached without using the cancel var"
-}
-
-var condition bool
-var someInt int
-
-// Regression test for Go issue 16143.
-func _() {
- var x struct{ f func() }
- x.f()
-}
-
-// Regression test for Go issue 16230.
-func _() (ctx context.Context, cancel func()) {
- ctx, cancel = context.WithCancel(bg)
- return // a naked return counts as a load of the named result values
-}
-
-// Same as above, but for literal function.
-var _ = func() (ctx context.Context, cancel func()) {
- ctx, cancel = context.WithCancel(bg)
- return
-}
-
-// Test for Go issue 31856.
-func _() {
- var cancel func()
-
- func() {
- _, cancel = context.WithCancel(bg)
- }()
-
- cancel()
-}
-
-var cancel1 func()
-
-// Same as above, but for package-level cancel variable.
-func _() {
- // We assume that other uses of cancel1 exist.
- _, cancel1 = context.WithCancel(bg)
-}