// run | |
// Copyright 2013 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. | |
// Bug in method values: escape analysis was off. | |
package main | |
import "sync" | |
var called = false | |
type T struct { | |
once sync.Once | |
} | |
func (t *T) M() { | |
called = true | |
} | |
func main() { | |
var t T | |
t.once.Do(t.M) | |
if !called { | |
panic("not called") | |
} | |
} |