Keeping pointers from the pre-walk phase confuses
the race detection instrumentation.
Fixes #6418.
R=golang-dev, dvyukov, r
CC=golang-dev
https://golang.org/cl/
13368057
return;
}
exprswitch(sw);
+ // Discard old AST elements after a walk. They can confuse racewealk.
+ sw->ntest = nil;
+ sw->list = nil;
}
/*
<-ch
}
+func TestRaceCaseIssue6418(t *testing.T) {
+ m := map[string]map[string]string{
+ "a": map[string]string{
+ "b": "c",
+ },
+ }
+ ch := make(chan int)
+ go func() {
+ m["a"]["x"] = "y"
+ ch <- 1
+ }()
+ switch m["a"]["b"] {
+ }
+ <-ch
+}
+
func TestRaceCaseType(t *testing.T) {
var x, y int
var i interface{} = x