...
Run Format

Source file test/fixedbugs/bug206.go

Documentation: test/fixedbugs

  // cmpout
  
  // Copyright 2009 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.
  
  package main
  
  import "go/ast";
  
  func g(list []ast.Expr) {
  	n := len(list)-1;
  	println(list[n].Pos());
  }
  
  
  // f is the same as g except that the expression assigned to n is inlined.
  func f(list []ast.Expr) {
  	// n := len(list)-1;
  	println(list[len(list)-1 /* n */].Pos());
  }
  
  
  func main() {
  	list := []ast.Expr{&ast.Ident{}};
  	g(list);  // this works
  	f(list);  // this doesn't
  }
  
  
  /*
  0
  throw: index out of range
  
  panic PC=0x2bcf10
  throw+0x33 /home/gri/go/src/pkg/runtime/runtime.c:71
  	throw(0x470f8, 0x0)
  sys·throwindex+0x1c /home/gri/go/src/pkg/runtime/runtime.c:45
  	sys·throwindex()
  main·f+0x26 /home/gri/go/test/bugs/bug206.go:16
  	main·f(0x2b9560, 0x0)
  main·main+0xc3 /home/gri/go/test/bugs/bug206.go:23
  	main·main()
  mainstart+0xf /home/gri/go/src/pkg/runtime/amd64/asm.s:55
  	mainstart()
  goexit /home/gri/go/src/pkg/runtime/proc.c:133
  	goexit()
  */
  

View as plain text