// Copyright 2021 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 42580: cmd/cgo: shifting identifier position in ast package cgotest // typedef int (*intFunc) (); // // char* strarg = ""; // // int func_with_char(char* arg, void* dummy) // {return 5;} // // int* get_arr(char* arg, void* dummy) // {return NULL;} import "C" import "unsafe" // Test variables var ( checkedPointer = []byte{1} doublePointerChecked = []byte{1} singleInnerPointerChecked = []byte{1} ) // This test checks the positions of variable identifiers. // Changing the positions of the test variables idents after this point will break the test. func TestSingleArgumentCast() C.int { retcode := C.func_with_char((*C.char)(unsafe.Pointer(&checkedPointer[0])), unsafe.Pointer(C.strarg)) return retcode } func TestSingleArgumentCastRecFuncAsSimpleArg() C.int { retcode := C.func_with_char((*C.char)(unsafe.Pointer(C.get_arr((*C.char)(unsafe.Pointer(&singleInnerPointerChecked[0])), unsafe.Pointer(C.strarg)))), nil) return retcode } func TestSingleArgumentCastRecFunc() C.int { retcode := C.func_with_char((*C.char)(unsafe.Pointer(C.get_arr((*C.char)(unsafe.Pointer(&doublePointerChecked[0])), unsafe.Pointer(C.strarg)))), unsafe.Pointer(C.strarg)) return retcode }