...
Run Format

Source file src/runtime/race/testdata/issue12664_test.go

Documentation: runtime/race/testdata

  // Copyright 2015 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 race_test
  
  import (
  	"fmt"
  	"testing"
  )
  
  var issue12664 = "hi"
  
  func TestRaceIssue12664(t *testing.T) {
  	c := make(chan struct{})
  	go func() {
  		issue12664 = "bye"
  		close(c)
  	}()
  	fmt.Println(issue12664)
  	<-c
  }
  
  type MyI interface {
  	foo()
  }
  
  type MyT int
  
  func (MyT) foo() {
  }
  
  var issue12664_2 MyT = 0
  
  func TestRaceIssue12664_2(t *testing.T) {
  	c := make(chan struct{})
  	go func() {
  		issue12664_2 = 1
  		close(c)
  	}()
  	func(x MyI) {
  		// Never true, but prevents inlining.
  		if x.(MyT) == -1 {
  			close(c)
  		}
  	}(issue12664_2)
  	<-c
  }
  
  var issue12664_3 MyT = 0
  
  func TestRaceIssue12664_3(t *testing.T) {
  	c := make(chan struct{})
  	go func() {
  		issue12664_3 = 1
  		close(c)
  	}()
  	var r MyT
  	var i interface{} = r
  	issue12664_3 = i.(MyT)
  	<-c
  }
  
  var issue12664_4 MyT = 0
  
  func TestRaceIssue12664_4(t *testing.T) {
  	c := make(chan struct{})
  	go func() {
  		issue12664_4 = 1
  		close(c)
  	}()
  	var r MyT
  	var i MyI = r
  	issue12664_4 = i.(MyT)
  	<-c
  }
  

View as plain text