// Copyright 2013 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 errors

// Testing precise operand formatting in error messages
// (matching messages are regular expressions, hence the \'s).
func f(x int, m map[string]int) {
	// no values
	_ = f /* ERROR "f\(0, m\) \(no value\) used as value" */ (0, m)

	// built-ins
	_ = println /* ERROR "println \(built-in\) must be called" */

	// types
	_ = complex128 /* ERROR "complex128 \(type\) is not an expression" */

	// constants
	const c1 = 991
	const c2 float32 = 0.5
	0 /* ERROR "0 \(untyped int constant\) is not used" */
	c1 /* ERROR "c1 \(untyped int constant 991\) is not used" */
	c2 /* ERROR "c2 \(constant 0.5 of type float32\) is not used" */
	c1 /* ERROR "c1 \+ c2 \(constant 991.5 of type float32\) is not used" */ + c2

	// variables
	x /* ERROR "x \(variable of type int\) is not used" */

	// values
	x /* ERROR "x != x \(untyped bool value\) is not used" */ != x
	x /* ERROR "x \+ x \(value of type int\) is not used" */ + x

	// value, ok's
	const s = "foo"
	m /* ERROR "m\[s\] \(map index expression of type int\) is not used" */ [s]
}

// Valid ERROR comments can have a variety of forms.
func _() {
	0 /* ERROR "0 .* is not used" */
	0 /* ERROR 0 .* is not used */
	0 // ERROR "0 .* is not used"
	0 // ERROR 0 .* is not used
}

// Don't report spurious errors as a consequence of earlier errors.
// Add more tests as needed.
func _() {
	if err := foo /* ERROR undeclared */ (); err != nil /* no error here */ {}
}

// Use unqualified names for package-local objects.
type T struct{}
var _ int = T /* ERROR value of type T */ {} // use T in error message rather then errors.T

// Don't report errors containing "invalid type" (issue #24182).
func _(x *missing /* ERROR undeclared name: missing */ ) {
	x.m() // there shouldn't be an error here referring to *invalid type
}
