mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
![Josh Bleecher Snyder](/assets/img/avatar_default.png)
Prior to this CL, Type.Width != 0 was the mark of a Type whose Width had been calculated. As a result, dowidth always recalculated the width of struct{}. This, combined with the prohibition on calculating the width of a FuncArgsStruct and the use of struct{} as a function argument, meant that there were circumstances in which it was forbidden to call dowidth on a type. This inhibits refactoring to call dowidth automatically, rather than explicitly. Instead add a helper method, Type.WidthCalculated, and implement as Type.Align > 0. Type.Width is not a good candidate for tracking whether the width has been calculated; 0 is a value type width, and Width is subject to too much magic value game-playing. For good measure, add a test for #11354. Change-Id: Ie9a9fb5d924e7a2010c1904ae5e38ed4a38eaeb2 Reviewed-on: https://go-review.googlesource.com/38468 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
16 lines
262 B
Go
16 lines
262 B
Go
// compile
|
|
|
|
// Copyright 2017 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
|
|
|
|
type X int
|
|
|
|
var foo = map[int]X{}
|
|
|
|
var bar = map[int][8]X{}
|
|
|
|
func main() {}
|