// Copyright 2015 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. // cgo rewrote C.var to *_Cvar_var, but left // C.var.field as _Cvar.var.field. It now rewrites // the latter as (*_Cvar_var).field. // See https://golang.org/issue/9557. package cgotest // struct issue9557_t { // int a; // } test9557bar = { 42 }; // // struct issue9557_t *issue9557foo = &test9557bar; import "C" import "testing" func test9557(t *testing.T) { // implicitly dereference a Go variable foo := C.issue9557foo if v := foo.a; v != 42 { t.Fatalf("foo.a expected 42, but got %d", v) } // explicitly dereference a C variable if v := (*C.issue9557foo).a; v != 42 { t.Fatalf("(*C.issue9557foo).a expected 42, but is %d", v) } // implicitly dereference a C variable if v := C.issue9557foo.a; v != 42 { t.Fatalf("C.issue9557foo.a expected 42, but is %d", v) } }