cmd/compile: allow unnamed constants to set line number

Fixes #8836.

Change-Id: Idda9f4a987e03b3bdf5e8fdb984fe56d6f84aa59
Reviewed-on: https://go-review.googlesource.com/11672
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Russ Cox 2015-06-28 23:12:21 -04:00
parent 8b99bb7b8c
commit 55203c7dd5
2 changed files with 31 additions and 1 deletions

View File

@ -231,9 +231,15 @@ func setlineno(n *Node) int32 {
lno := lineno
if n != nil {
switch n.Op {
case ONAME, OTYPE, OPACK, OLITERAL:
case ONAME, OTYPE, OPACK:
break
case OLITERAL:
if n.Sym != nil {
break
}
fallthrough
default:
lineno = n.Lineno
if lineno == 0 {

View File

@ -0,0 +1,24 @@
// errorcheck
// 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.
// Checking that line number is correct in error message.
package main
type Cint int
func foobar(*Cint, Cint, Cint, *Cint)
func main() {
a := Cint(1)
foobar(
&a,
0,
0,
42, // ERROR ".*"
)
}