summaryrefslogtreecommitdiff
path: root/test/fixedbugs/issue4463.go
blob: fe07af71fb7d229359f7b09e8fc8be07a8c299da (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// errorcheck

// Copyright 2012 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.

// Issue 4463: test builtin functions in statement context and in
// go/defer functions.

package p

import "unsafe"

func F() {
	var a []int
	var c chan int
	var m map[int]int
	var s struct{ f int }

	append(a, 0)			// ERROR "not used"
	cap(a)				// ERROR "not used"
	complex(1, 2)			// ERROR "not used"
	imag(1i)			// ERROR "not used"
	len(a)				// ERROR "not used"
	make([]int, 10)			// ERROR "not used"
	new(int)			// ERROR "not used"
	real(1i)			// ERROR "not used"
	unsafe.Alignof(a)		// ERROR "not used"
	unsafe.Offsetof(s.f)		// ERROR "not used"
	unsafe.Sizeof(a)		// ERROR "not used"

	close(c)
	copy(a, a)
	delete(m, 0)
	panic(0)
	print("foo")
	println("bar")
	recover()

	(close(c))
	(copy(a, a))
	(delete(m, 0))
	(panic(0))
	(print("foo"))
	(println("bar"))
	(recover())

	go append(a, 0)			// ERROR "discards result"
	go cap(a)			// ERROR "discards result"
	go complex(1, 2)		// ERROR "discards result"
	go imag(1i)			// ERROR "discards result"
	go len(a)			// ERROR "discards result"
	go make([]int, 10)		// ERROR "discards result"
	go new(int)			// ERROR "discards result"
	go real(1i)			// ERROR "discards result"
	go unsafe.Alignof(a)		// ERROR "discards result"
	go unsafe.Offsetof(s.f)		// ERROR "discards result"
	go unsafe.Sizeof(a)		// ERROR "discards result"

	go close(c)
	go copy(a, a)
	go delete(m, 0)
	go panic(0)
	go print("foo")
	go println("bar")
	go recover()

	defer append(a, 0)		// ERROR "discards result"
	defer cap(a)			// ERROR "discards result"
	defer complex(1, 2)		// ERROR "discards result"
	defer imag(1i)			// ERROR "discards result"
	defer len(a)			// ERROR "discards result"
	defer make([]int, 10)		// ERROR "discards result"
	defer new(int)			// ERROR "discards result"
	defer real(1i)			// ERROR "discards result"
	defer unsafe.Alignof(a)		// ERROR "discards result"
	defer unsafe.Offsetof(s.f)	// ERROR "discards result"
	defer unsafe.Sizeof(a)		// ERROR "discards result"

	defer close(c)
	defer copy(a, a)
	defer delete(m, 0)
	defer panic(0)
	defer print("foo")
	defer println("bar")
	defer recover()
}