mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
![LE Manh Cuong](/assets/img/avatar_default.png)
golang.org/cl/174498 removes dynamic map entry handling in maplit, by filtering the static entry only. It panics if it see a dynamic entry. It relies on order to remove all dynamic entries. But after recursively call order on the statics, some static entries become dynamic, e.g OCONVIFACE node: type i interface { j() } type s struct{} func (s) j() {} type foo map[string]i var f = foo{ "1": s{}, } To fix it, we recursively call order on each static entry, if it changed to dynamic, put entry to dynamic then. Fixes #31777 Change-Id: I1004190ac8f2d1eaa4beb6beab989db74099b025 Reviewed-on: https://go-review.googlesource.com/c/go/+/174777 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
25 lines
341 B
Go
25 lines
341 B
Go
// compile
|
|
|
|
// Copyright 2019 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.
|
|
|
|
// Compile with static map literal.
|
|
|
|
package p
|
|
|
|
type i interface {
|
|
j()
|
|
}
|
|
|
|
type s struct{}
|
|
|
|
func (s) j() {}
|
|
|
|
type foo map[string]i
|
|
|
|
var f = foo{
|
|
"1": s{},
|
|
"2": s{},
|
|
}
|