mirror of
https://github.com/autc04/Retro68.git
synced 2025-02-20 02:29:11 +00:00
77 lines
1.1 KiB
Go
77 lines
1.1 KiB
Go
// 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
|
|
}
|