0
1
mirror of https://github.com/golang/go synced 2024-12-12 15:23:34 +00:00
go/test/fixedbugs/issue70189.go
Youlin Feng 1f8fa4941f runtime: fix iterator returns map entries after clear (pre-swissmap)
Fixes #70189
Fixes #59411

Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest-noswissmap
Change-Id: I4ef7ecd7e996330189309cb2a658cf34bf9e1119
Reviewed-on: https://go-review.googlesource.com/c/go/+/625275
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-12 21:08:08 +00:00

39 lines
666 B
Go

// run -goexperiment noswissmap
// Copyright 2024 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 main
func nan() float64 {
var x, y float64
return x / y
}
func main() {
m := map[float64]int{}
// Make a small map with nan keys
for i := 0; i < 8; i++ {
m[nan()] = i
}
// Start iterating on it.
start := true
for _, v := range m {
if start {
// Add some more elements.
for i := 0; i < 10; i++ {
m[float64(i)] = i
}
// Now clear the map.
clear(m)
start = false
} else {
// We should never reach here.
panic(v)
}
}
}