blob: d9d22ac2b499e263533565317b673be2a3b1c784 [file] [log] [blame]
// 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
const c3 = "foo"
0 // ERROR "0 (untyped int constant) is not used"
0.5 // ERROR "0.5 (untyped float constant) is not used"
"foo" // ERROR `"foo" (untyped string 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
c3 // ERROR `c3 (untyped string constant "foo") is not used`
// variables
x // ERROR "x (variable of type int) is not used"
// values
nil // ERROR "nil is not used"
( /* ERROR "(*int)(nil) (value of type *int) is not used" */ *int)(nil)
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 /* ERRORx "0 .* is not used" */
0 /* ERRORx "0 .* is not used" */
0 // ERRORx "0 .* is not used"
0 // ERRORx "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 "undefined" */ (); 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 "undefined: missing" */ ) {
x.m() // there shouldn't be an error here referring to *invalid type
}