golang importC 代码
文件路径:/src/go/types/testdata/check/importC.go
/ -fakeImportC
/ 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.
package importC
import "C"
import _ /* ERROR cannot rename import "C" */ "C"
import foo /* ERROR cannot rename import "C" */ "C"
import . /* ERROR cannot rename import "C" */ "C"
/ Test cases extracted from issue #22090.
import "unsafe"
const _ C.int = 0xff / no error due to invalid constant type
type T struct {
Name string
Ordinal int
}
func _(args []T) {
var s string
for i, v := range args {
cname := C.CString(v.Name)
args[i].Ordinal = int(C.sqlite3_bind_parameter_index(s, cname)) / no error due to i not being "used"
C.free(unsafe.Pointer(cname))
}
}
type CType C.Type
const _ CType = C.X / no error due to invalid constant type
const _ = C.X
/ Test cases extracted from issue #23712.
func _() {
var a [C.ArrayLength]byte
_ = a[0] / no index out of bounds error here
}
/ Additional tests to verify fix for #23712.
func _() {
var a [C.ArrayLength1]byte
_ = 1 / len(a) / no division by zero error here and below
_ = 1 / cap(a)
_ = uint(unsafe.Sizeof(a)) / must not be negative
var b [C.ArrayLength2]byte
a = b / should be valid
}