From: Hiroshi Ioka Date: Mon, 30 Apr 2018 08:36:23 +0000 (+0900) Subject: cmd/cgo: visit cgo type inside ellipsis node X-Git-Tag: go1.11beta1~600 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a4aa2e0c280237f5e4d22f84386bcfee2f9cec3f;p=gostls13.git cmd/cgo: visit cgo type inside ellipsis node Fixes #25143 Change-Id: Ide654fe70651fda827cdeeaaa73d2a1f8aefd7e7 Reviewed-on: https://go-review.googlesource.com/110159 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- diff --git a/misc/cgo/test/cgo_test.go b/misc/cgo/test/cgo_test.go index bcea630ad2..4462df0059 100644 --- a/misc/cgo/test/cgo_test.go +++ b/misc/cgo/test/cgo_test.go @@ -88,6 +88,7 @@ func Test6907Go(t *testing.T) { test6907Go(t) } func Test21897(t *testing.T) { test21897(t) } func Test22906(t *testing.T) { test22906(t) } func Test24206(t *testing.T) { test24206(t) } +func Test25143(t *testing.T) { test25143(t) } func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) } func BenchmarkGoString(b *testing.B) { benchGoString(b) } diff --git a/misc/cgo/test/issue25143.go b/misc/cgo/test/issue25143.go new file mode 100644 index 0000000000..607bfe4ba0 --- /dev/null +++ b/misc/cgo/test/issue25143.go @@ -0,0 +1,22 @@ +// Copyright 2018 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 cgotest + +import "C" +import "testing" + +func issue25143sum(ns ...C.int) C.int { + total := C.int(0) + for _, n := range ns { + total += n + } + return total +} + +func test25143(t *testing.T) { + if got, want := issue25143sum(1, 2, 3), C.int(6); got != want { + t.Errorf("issue25143sum(1, 2, 3) == %v, expected %v", got, want) + } +} diff --git a/src/cmd/cgo/ast.go b/src/cmd/cgo/ast.go index 58e0ee78cb..8dceb25ca6 100644 --- a/src/cmd/cgo/ast.go +++ b/src/cmd/cgo/ast.go @@ -356,6 +356,7 @@ func (f *File) walk(x interface{}, context astContext, visit func(*File, interfa case *ast.BadExpr: case *ast.Ident: case *ast.Ellipsis: + f.walk(&n.Elt, ctxType, visit) case *ast.BasicLit: case *ast.FuncLit: f.walk(n.Type, ctxType, visit)