Source file src/cmd/cgo/internal/testerrors/testdata/issue42580.go

     1  // Copyright 2021 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Issue 42580: cmd/cgo: shifting identifier position in ast
     6  
     7  package cgotest
     8  
     9  // typedef int (*intFunc) ();
    10  //
    11  // char* strarg = "";
    12  //
    13  // int func_with_char(char* arg, void* dummy)
    14  // {return 5;}
    15  //
    16  // int* get_arr(char* arg, void* dummy)
    17  // {return NULL;}
    18  import "C"
    19  import "unsafe"
    20  
    21  // Test variables
    22  var (
    23  	checkedPointer            = []byte{1}
    24  	doublePointerChecked      = []byte{1}
    25  	singleInnerPointerChecked = []byte{1}
    26  )
    27  
    28  // This test checks the positions of variable identifiers.
    29  // Changing the positions of the test variables idents after this point will break the test.
    30  
    31  func TestSingleArgumentCast() C.int {
    32  	retcode := C.func_with_char((*C.char)(unsafe.Pointer(&checkedPointer[0])), unsafe.Pointer(C.strarg))
    33  	return retcode
    34  }
    35  
    36  func TestSingleArgumentCastRecFuncAsSimpleArg() C.int {
    37  	retcode := C.func_with_char((*C.char)(unsafe.Pointer(C.get_arr((*C.char)(unsafe.Pointer(&singleInnerPointerChecked[0])), unsafe.Pointer(C.strarg)))), nil)
    38  	return retcode
    39  }
    40  
    41  func TestSingleArgumentCastRecFunc() C.int {
    42  	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))
    43  	return retcode
    44  }
    45  

View as plain text