• LE Manh Cuong's avatar
    cmd/compile: fix maplit init panics for dynamic entry · aaf40f8f
    LE Manh Cuong authored
    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: default avatarKeith Randall <khr@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    aaf40f8f
order.go 37.3 KB