mirror of
https://github.com/golang/go
synced 2024-11-25 11:27:56 -07:00
dc6a5cfca1
Use `' quotes (as in `foo') to differentiate from Go quotes. Quoting prevents confusion when user-supplied names alter the meaning of the error message. For instance, report duplicate method `wanted' rather than duplicate method wanted Exceptions: - don't quote _: `_' is ugly and not necessary - don't quote after a ":": undefined name: foo - don't quote if the name is used correctly in a statement: goto L jumps over variable declaration Quoting is done with a helper function and can be centrally adjusted and fine-tuned as needed. Adjusted some test cases to explicitly include the quoted names. Fixes #65790. Change-Id: Icce667215f303ab8685d3e5cb00d540a2fd372ca Reviewed-on: https://go-review.googlesource.com/c/go/+/571396 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com> Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Robert Griesemer <gri@google.com>
31 lines
768 B
Go
31 lines
768 B
Go
// errorcheck
|
|
|
|
// Copyright 2018 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.
|
|
|
|
// Verify that follow-on errors due to conflicting
|
|
// struct field and method names are suppressed.
|
|
|
|
package p
|
|
|
|
type T struct {
|
|
a, b, c int
|
|
E
|
|
}
|
|
|
|
type E struct{}
|
|
|
|
func (T) b() {} // ERROR "field and method named b|redeclares struct field name|field and method with the same name `b'"
|
|
func (*T) E() {} // ERROR "field and method named E|redeclares struct field name|field and method with the same name `E'"
|
|
|
|
func _() {
|
|
var x T
|
|
_ = x.a
|
|
_ = x.b // no follow-on error here
|
|
x.b() // no follow-on error here
|
|
_ = x.c
|
|
_ = x.E // no follow-on error here
|
|
x.E() // no follow-on error here
|
|
}
|