// run

// 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()
*/
