go/test/fixedbugs/issue35518.go
Matthew Dempsky 00e14afa0d test: add another test case for #35518
Updates #35518.

Change-Id: Icd052c8c68aae32696b5831a29e04cc4cb224b06
Reviewed-on: https://go-review.googlesource.com/c/go/+/206820
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-11-12 21:02:24 +00:00

45 lines
847 B
Go

// errorcheck -0 -l -m=2
// Copyright 2019 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 test makes sure that -m=2's escape analysis diagnostics don't
// go into an infinite loop when handling negative dereference
// cycles. The critical thing being tested here is that compilation
// succeeds ("errorcheck -0"), not any particular diagnostic output,
// hence the very lax ERROR patterns below.
package p
type Node struct {
Orig *Node
}
var sink *Node
func f1() {
var n Node // ERROR "."
n.Orig = &n
m := n // ERROR "."
sink = &m
}
func f2() {
var n1, n2 Node // ERROR "."
n1.Orig = &n2
n2 = n1
m := n2 // ERROR "."
sink = &m
}
func f3() {
var n1, n2 Node // ERROR "."
n1.Orig = &n1
n1.Orig = &n2
sink = n1.Orig.Orig
}