...
Run Format

Source file test/notinheap2.go

Documentation: test

  // errorcheck -+
  
  // Copyright 2016 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 walk errors for go:notinheap.
  
  package p
  
  //go:notinheap
  type nih struct {
  	next *nih
  }
  
  // Globals and stack variables are okay.
  
  var x nih
  
  func f() {
  	var y nih
  	x = y
  }
  
  // Heap allocation is not okay.
  
  var y *nih
  var z []nih
  
  func g() {
  	y = new(nih)       // ERROR "heap allocation disallowed"
  	z = make([]nih, 1) // ERROR "heap allocation disallowed"
  	z = append(z, x)   // ERROR "heap allocation disallowed"
  }
  
  // Writes don't produce write barriers.
  
  var p *nih
  
  //go:nowritebarrier
  func h() {
  	y.next = p.next
  }
  

View as plain text