From 25cf9bdea61b4e54d2f0c82855e2506a4befa03b Mon Sep 17 00:00:00 2001 From: Luuk van Dijk Date: Tue, 10 Jan 2012 21:47:22 +0100 Subject: [PATCH] gc: test that asserts closures are not wrapped when they don't have closure vars. R=rsc, bradfitz CC=golang-dev https://golang.org/cl/5529060 --- test/closure.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/test/closure.go b/test/closure.go index 191514def4..97da1dd230 100644 --- a/test/closure.go +++ b/test/closure.go @@ -6,6 +6,8 @@ package main +import "runtime" + var c = make(chan int) func check(a []int) { @@ -77,6 +79,8 @@ func h() { func newfunc() func(int) int { return func(x int) int { return x } } func main() { + var fail bool + go f() check([]int{1, 4, 5, 4}) @@ -88,13 +92,26 @@ func main() { go h() check([]int{100, 200, 101, 201, 500, 101, 201, 500}) + runtime.UpdateMemStats() + n0 := runtime.MemStats.Mallocs + x, y := newfunc(), newfunc() if x(1) != 1 || y(2) != 2 { println("newfunc returned broken funcs") - panic("fail") + fail = true + } + + runtime.UpdateMemStats() + if n0 != runtime.MemStats.Mallocs { + println("newfunc allocated unexpectedly") + fail = true } ff(1) + + if fail { + panic("fail") + } } func ff(x int) {