This test is ported from the old marker tests.
It tests hover and definition for cgo declarations.

-- flags --
-cgo

-- go.mod --
module cgo.test

go 1.18

-- cgo/cgo.go --
package cgo

/*
#include <stdio.h>
#include <stdlib.h>

void myprint(char* s) {
	printf("%s\n", s);
}
*/
import "C"

import (
	"fmt"
	"unsafe"
)

func Example() { //@loc(cgoexample, "Example"), item(cgoexampleItem, "Example", "func()", "func")
	fmt.Println()
	cs := C.CString("Hello from stdio\n")
	C.myprint(cs)
	C.free(unsafe.Pointer(cs))
}

func _() {
	Example() //@hover("ample", "Example", hoverExample), def("ample", cgoexample), complete("ample", cgoexampleItem)
}

-- @hoverExample --
```go
func Example()
```

[`cgo.Example` on pkg.go.dev](https://pkg.go.dev/cgo.test/cgo#Example)
-- usecgo/usecgo.go --
package cgoimport

import (
	"cgo.test/cgo"
)

func _() {
	cgo.Example() //@hover("ample", "Example", hoverImportedExample), def("ample", cgoexample), complete("ample", cgoexampleItem)
}
-- @hoverImportedExample --
```go
func cgo.Example()
```

[`cgo.Example` on pkg.go.dev](https://pkg.go.dev/cgo.test/cgo#Example)
