mirror of
				https://github.com/golang/go.git
				synced 2025-11-04 02:30:57 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			847 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			44 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
 | 
						|
}
 |