aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/testdata/check/errors.src
blob: ff929217c4c865ae18f8b918ee720762f15cf3cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// 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
}