// run // Copyright 2022 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. // The inliner would erroneously scan the caller function's body for // reassignments *before* substituting the inlined function call body, // which could cause false positives in deciding when it's safe to // transitively inline indirect function calls. package main func main() { bug1() bug2(fail) } func bug1() { fn := fail fn = pass fn() } func bug2(fn func()) { fn = pass fn() } func pass() {} func fail() { panic("FAIL") }