mirror of
https://github.com/golang/go
synced 2024-11-18 14:44:41 -07:00
d47db6dc0c
CL 135377 introduces pass strings and slices to convT2{E,I} by value. Before that CL, all types, except interface will be allocated temporary address. The CL changes the logic that only constant and type which needs address (determine by convFuncName) will be allocated. It fails to cover the case where type is static composite literal. Adding condition to check that case fixes the issue. Also, static composite literal node implies constant type, so consttype checking can be removed. Fixes #30956 Change-Id: Ifc750a029fb4889c2d06e73e44bf85e6ef4ce881 Reviewed-on: https://go-review.googlesource.com/c/go/+/168858 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
33 lines
423 B
Go
33 lines
423 B
Go
// run
|
|
|
|
// 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.
|
|
|
|
// Check for compile generated static data for literal
|
|
// composite struct
|
|
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
type X struct {
|
|
V interface{}
|
|
|
|
a int
|
|
b int
|
|
c int
|
|
}
|
|
|
|
func pr(x X) {
|
|
fmt.Println(x.V)
|
|
}
|
|
|
|
func main() {
|
|
pr(X{
|
|
V: struct {
|
|
A int
|
|
}{42},
|
|
})
|
|
}
|