// 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 }