mirror of
https://github.com/golang/go
synced 2024-11-26 14:08:37 -07:00
d949d0b925
Instead of writing an init function per package that does the same thing for every package, just write that implementation once in the runtime. Change the compiler to generate a data structure that encodes the required initialization operations. Reduces cmd/go binary size by 0.3%+. Most of the init code is gone, including all the corresponding stack map info. The .inittask structures that replace them are quite a bit smaller. Most usefully to me, there is no longer an init function in every -S output. (There is an .inittask global there, but it's much less distracting.) After this CL we could change the name of the "init.ializers" function back to just "init". Update #6853 R=go1.13 Change-Id: Iec82b205cc52fe3ade4d36406933c97dbc9c01b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/161337 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
20 lines
432 B
Go
20 lines
432 B
Go
// errorcheck
|
|
|
|
// Copyright 2011 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.
|
|
|
|
// Verify that erroneous use of init is detected.
|
|
// Does not compile.
|
|
|
|
package main
|
|
|
|
func init() {
|
|
}
|
|
|
|
func main() {
|
|
init() // ERROR "undefined.*init"
|
|
runtime.init() // ERROR "undefined.*runtime\.init"
|
|
var _ = init // ERROR "undefined.*init"
|
|
}
|