Fixes #9083.
Change-Id: Ifbdebafb39a73a1dacf7e67171e8e88028d1f10b
Reviewed-on: https://go-review.googlesource.com/1219
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Chris Manghane <cmang@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
f += fmt.Sprintf("make(%v, %v, %v)", Tconv(n.Type, 0), Nconv(n.Left, 0), Nconv(n.Right, 0))
return f
}
- if n.Left != nil {
+ if n.Left != nil && (n.Op == OMAKESLICE || !isideal(n.Left.Type)) {
var f string
f += fmt.Sprintf("make(%v, %v)", Tconv(n.Type, 0), Nconv(n.Left, 0))
return f
}
func makemap0() {
- m := make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) does not escape"
+ m := make(map[int]int) // ERROR "make\(map\[int\]int\) does not escape"
m[0] = 0
m[1]++
delete(m, 1)
}
func makemap1() map[int]int {
- return make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) escapes to heap"
+ return make(map[int]int) // ERROR "make\(map\[int\]int\) escapes to heap"
}
func makemap2() {
- m := make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) escapes to heap"
+ m := make(map[int]int) // ERROR "make\(map\[int\]int\) escapes to heap"
sink = m
}
}
func makemap0() {
- m := make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) does not escape"
+ m := make(map[int]int) // ERROR "make\(map\[int\]int\) does not escape"
m[0] = 0
m[1]++
delete(m, 1)
}
func makemap1() map[int]int {
- return make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) escapes to heap"
+ return make(map[int]int) // ERROR "make\(map\[int\]int\) escapes to heap"
}
func makemap2() {
- m := make(map[int]int) // ERROR "make\(map\[int\]int\, 0\) escapes to heap"
+ m := make(map[int]int) // ERROR "make\(map\[int\]int\) escapes to heap"
sink = m
}
--- /dev/null
+// errorcheck
+
+// Copyright 2014 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 9083: map/chan error messages show non-explicit capacity.
+
+package main
+
+// untyped constant
+const zero = 0
+
+func main() {
+ var x int
+ x = make(map[int]int) // ERROR "cannot use make\(map\[int\]int\)|incompatible"
+ x = make(map[int]int, 0) // ERROR "cannot use make\(map\[int\]int, 0\)|incompatible"
+ x = make(map[int]int, zero) // ERROR "cannot use make\(map\[int\]int, zero\)|incompatible"
+ x = make(chan int) // ERROR "cannot use make\(chan int\)|incompatible"
+ x = make(chan int, 0) // ERROR "cannot use make\(chan int, 0\)|incompatible"
+ x = make(chan int, zero) // ERROR "cannot use make\(chan int, zero\)|incompatible"
+}