/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue18410.go
40 строк
686 B
David Chase
cmd/compile: rewrite literal.method to ensure full initialization
06 янв 2017, 23:35
06 янв 2017, 23:35
41d2278
Код
Авторство
О чём код?
// run // Copyright 2016 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. // This checks partially initialized structure literals // used to create value.method functions have their // non-initialized fields properly zeroed/nil'd package main type X struct { A, B, C *int } //go:noinline func (t X) Print() { if t.B != nil { panic("t.B must be nil") } } //go:noinline func caller(f func()) { f() } //go:noinline func test() { var i, j int x := X{A: &i, C: &j} caller(func() { X{A: &i, C: &j}.Print() }) caller(X{A: &i, C: &j}.Print) caller(x.Print) } func main() { test() }