Initial commit: Go 1.23 release state
This commit is contained in:
44
test/fixedbugs/issue35518.go
Normal file
44
test/fixedbugs/issue35518.go
Normal file
@@ -0,0 +1,44 @@
|
||||
// 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
|
||||
}
|
||||
Reference in New Issue
Block a user