mirror of
https://github.com/golang/go
synced 2024-11-12 02:00:23 -07:00
cmd/cgo: support multiple-value special form in VarDecl
Fixes #13930. Change-Id: I124b7d31d1f2be05b7f23dafd1e52d9f3f02f3f0 Reviewed-on: https://go-review.googlesource.com/18623 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
a576e9883c
commit
1a94431a78
13
misc/cgo/test/issue13930.go
Normal file
13
misc/cgo/test/issue13930.go
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2016 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 13930. Test that cgo's multiple-value special form for
|
||||
// C function calls works in variable declaration statements.
|
||||
|
||||
package cgotest
|
||||
|
||||
// #include <stdlib.h>
|
||||
import "C"
|
||||
|
||||
var _, _ = C.abs(0)
|
@ -447,7 +447,11 @@ func (f *File) walk(x interface{}, context string, visit func(*File, interface{}
|
||||
case *ast.ImportSpec:
|
||||
case *ast.ValueSpec:
|
||||
f.walk(&n.Type, "type", visit)
|
||||
if len(n.Names) == 2 && len(n.Values) == 1 {
|
||||
f.walk(&n.Values[0], "as2", visit)
|
||||
} else {
|
||||
f.walk(n.Values, "expr", visit)
|
||||
}
|
||||
case *ast.TypeSpec:
|
||||
f.walk(&n.Type, "type", visit)
|
||||
|
||||
|
@ -148,8 +148,9 @@ assignment context to retrieve both the return value (if any) and the
|
||||
C errno variable as an error (use _ to skip the result value if the
|
||||
function returns void). For example:
|
||||
|
||||
n, err := C.sqrt(-1)
|
||||
n, err = C.sqrt(-1)
|
||||
_, err := C.voidFunc()
|
||||
var n, err = C.sqrt(1)
|
||||
|
||||
Calling C function pointers is currently not supported, however you can
|
||||
declare Go variables which hold C function pointers and pass them
|
||||
|
Loading…
Reference in New Issue
Block a user