// errorcheck -0 -m -l

// Copyright 2015 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.

// Test indirection level computation in escape analysis.

package escape

var sink interface{}

func level0() {
	i := 0     // ERROR "moved to heap: i"
	p0 := &i   // ERROR "moved to heap: p0"
	p1 := &p0  // ERROR "moved to heap: p1"
	p2 := &p1  // ERROR "moved to heap: p2"
	sink = &p2 // ERROR "&p2 escapes to heap"
}

func level1() {
	i := 0    // ERROR "moved to heap: i"
	p0 := &i  // ERROR "moved to heap: p0"
	p1 := &p0 // ERROR "moved to heap: p1"
	p2 := &p1
	sink = p2 // ERROR "p2 escapes to heap"
}

func level2() {
	i := 0     // ERROR "moved to heap: i"
	p0 := &i   // ERROR "moved to heap: p0"
	p1 := &p0
	p2 := &p1
	sink = *p2 // ERROR "\*p2 escapes to heap"
}

func level3() {
	i := 0      // ERROR "moved to heap: i"
	p0 := &i
	p1 := &p0
	p2 := &p1
	sink = **p2 // ERROR "\* \(\*p2\) escapes to heap"
}

func level4() {
	i := 0     // ERROR "moved to heap: i"
	p0 := &i   // ERROR "moved to heap: p0"
	p1 := &p0
	p2 := p1   // ERROR "moved to heap: p2"
	sink = &p2 // ERROR "&p2 escapes to heap"
}

func level5() {
	i := 0    // ERROR "moved to heap: i"
	p0 := &i  // ERROR "moved to heap: p0"
	p1 := &p0
	p2 := p1
	sink = p2 // ERROR "p2 escapes to heap"
}

func level6() {
	i := 0    // ERROR "moved to heap: i"
	p0 := &i
	p1 := &p0
	p2 := p1
	sink = *p2 // ERROR "\*p2 escapes to heap"
}

func level7() {
	i := 0    // ERROR "moved to heap: i"
	p0 := &i
	p1 := &p0
	// note *p1 == &i
	p2 := *p1  // ERROR "moved to heap: p2"
	sink = &p2 // ERROR "&p2 escapes to heap"
}

func level8() {
	i := 0    // ERROR "moved to heap: i"
	p0 := &i
	p1 := &p0
	p2 := *p1
	sink = p2 // ERROR "p2 escapes to heap"
}

func level9() {
	i := 0
	p0 := &i
	p1 := &p0
	p2 := *p1
	sink = *p2 // ERROR "\*p2 escapes to heap"
}

func level10() {
	i := 0
	p0 := &i
	p1 := *p0
	p2 := &p1
	sink = *p2 // ERROR "\*p2 escapes to heap"
}

func level11() {
	i := 0
	p0 := &i
	p1 := &p0
	p2 := **p1 // ERROR "moved to heap: p2"
	sink = &p2 // ERROR "&p2 escapes to heap"
}
