-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.
Milestone
Description
When compiling this code on FreeBSD 14-CURRENT with clang 14, go emits error messages with invalid types:
package main
import "C"
func main() {
var _ C.ulong = "ul"
var _ C.ulonglong = "ull"
}
$ go build example.go # command-line-arguments ./example.go:6:18: cannot use "ul" (untyped string constant) as _Ctype_unsignedlong value in variable declaration ./example.go:7:22: cannot use "ull" (untyped string constant) as _Ctype_unsignedlonglong value in variable declaration
cgo tests also currently are failing:
##### Test execution environment. # GOARCH: amd64 # CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz # GOOS: freebsd # OS Version: FreeBSD 14.0-CURRENT FreeBSD 14.0-CURRENT #0 main-n255691-41ce5498f8e: Wed May 18 10:46:22 -05 2022 root@xombo.locald omain:/usr/obj/usr/src/amd64.amd64/sys/XOMBO amd64 ... ##### ../misc/cgo/errors --- FAIL: TestReportsTypeErrors (0.38s) --- FAIL: TestReportsTypeErrors/err2.go (0.32s) errors_test.go:76: found match for `err2\.go:37:`: "testdata/err2.go:37:11: cannot use s (variable of type string) as type C.unsignedlong in argument to (C._CMalloc)" errors_test.go:76: found match for `err2\.go:40:`: "testdata/err2.go:40:11: cannot use x (variable of type *C.struct_bar) as type *C.struct_foo in assignment" errors_test.go:76: found match for `:44:.*C\.ushort`: "testdata/err2.go:44:7: cannot use int(0) (constant 0 of type int) as type C.ushort in assignment" errors_test.go:76: found match for `err2\.go:47:`: "testdata/err2.go:47:6: not enough arguments in call to (C.fopen)" errors_test.go:76: found match for `:51:.*C\.int`: "testdata/err2.go:51:27: cannot use x2 (variable of type rune) as type C.int in argument to (C.transform)" errors_test.go:76: found match for `:56:.*C\.uchar`: "testdata/err2.go:56:23: cannot use \"uc\" (untyped string constant) as C.uchar value in variable declaration" errors_test.go:76: found match for `:57:.*C\.schar`: "testdata/err2.go:57:23: cannot use \"sc\" (untyped string constant) as C.schar value in variable declaration" errors_test.go:76: found match for `:58:.*C\.ushort`: "testdata/err2.go:58:23: cannot use \"us\" (untyped string constant) as C.ushort value in variable declaration" errors_test.go:76: found match for `:59:.*C\.uint`: "testdata/err2.go:59:23: cannot use \"ui\" (untyped string constant) as C.uint value in variable declaration" errors_test.go:82: expected error output to contain `:60:.*C\.ulong` errors_test.go:76: found match for `:61:.*C\.longlong`: "testdata/err2.go:61:23: cannot use \"ll\" (untyped string constant) as C.longlong value in variable declaration" errors_test.go:82: expected error output to contain `:62:.*C\.ulonglong` errors_test.go:76: found match for `:63:.*C\.complexfloat`: "testdata/err2.go:63:23: cannot use \"cf\" (untyped string constant) as C.complexfloat value in variable declaration" errors_test.go:76: found match for `:64:.*C\.complexdouble`: "testdata/err2.go:64:23: cannot use \"cd\" (untyped string constant) as C.complexdouble value in variable declaration" errors_test.go:76: found match for `err2\.go:75:`: "testdata/err2.go:75:44: cannot use _cgo0 (variable of type **C.void) as type *unsafe.Pointer in argument to C.F" errors_test.go:76: found match for `err2\.go:82:`: "testdata/err2.go:82:12: not enough arguments in call to (C.fvi)" errors_test.go:76: found match for `err2\.go:89:`: "testdata/err2.go:89:24: cannot use _cgo0 (variable of type *x) as type **C.int in argument to C.fppi" errors_test.go:76: found match for `:98:.*\b(10|14)\b`: "testdata/err2.go:98:10: cannot use (*C.i) + 1 (value of type C.int) as type int in return statement" errors_test.go:76: found match for `:105:.*\b(7|8)\b`: "testdata/err2.go:105:8: cannot use i (variable of type int) as type C.int in argument to (C.fi)" errors_test.go:76: found match for `err2\.go:108:`: "testdata/err2.go:108:2: cannot assign to (_Cgo_ptr(_Cfpvar_fp_fi)) (value of type unsafe.Pointer)" errors_test.go:87: actual output: # command-line-arguments testdata/err2.go:37:11: cannot use s (variable of type string) as type C.unsignedlong in argument to (C._CMalloc) testdata/err2.go:40:11: cannot use x (variable of type *C.struct_bar) as type *C.struct_foo in assignment testdata/err2.go:44:7: cannot use int(0) (constant 0 of type int) as type C.ushort in assignment testdata/err2.go:47:6: not enough arguments in call to (C.fopen) have () want (*C.char, *C.char) testdata/err2.go:51:27: cannot use x2 (variable of type rune) as type C.int in argument to (C.transform) testdata/err2.go:51:15: cannot use (C.transform)(x2) (value of type C.int) as type rune in variable declaration testdata/err2.go:56:23: cannot use "uc" (untyped string constant) as C.uchar value in variable declaration testdata/err2.go:57:23: cannot use "sc" (untyped string constant) as C.schar value in variable declaration testdata/err2.go:58:23: cannot use "us" (untyped string constant) as C.ushort value in variable declaration testdata/err2.go:59:23: cannot use "ui" (untyped string constant) as C.uint value in variable declaration testdata/err2.go:60:23: cannot use "ul" (untyped string constant) as C.unsignedlong value in variable declaration testdata/err2.go:61:23: cannot use "ll" (untyped string constant) as C.longlong value in variable declaration testdata/err2.go:62:23: cannot use "ull" (untyped string constant) as C.unsignedlonglong value in variable declaration testdata/err2.go:63:23: cannot use "cf" (untyped string constant) as C.complexfloat value in variable declaration testdata/err2.go:64:23: cannot use "cd" (untyped string constant) as C.complexdouble value in variable declaration testdata/err2.go:75:44: cannot use _cgo0 (variable of type **C.void) as type *unsafe.Pointer in argument to C.F testdata/err2.go:82:12: not enough arguments in call to (C.fvi) have (number) want (unsafe.Pointer, C.int) testdata/err2.go:89:24: cannot use _cgo0 (variable of type *x) as type **C.int in argument to C.fppi testdata/err2.go:98:10: cannot use (*C.i) + 1 (value of type C.int) as type int in return statement testdata/err2.go:105:8: cannot use i (variable of type int) as type C.int in argument to (C.fi) testdata/err2.go:108:2: cannot assign to (_Cgo_ptr(_Cfpvar_fp_fi)) (value of type unsafe.Pointer) FAIL
The above was tested with
$ go version go version devel go1.19-d8762b2f45 Thu May 19 21:33:15 2022 +0000 freebsd/amd64 $ clang --version FreeBSD clang version 14.0.3 (https://github.com/llvm/llvm-project.git llvmorg-14.0.3-0-g1f9140064dfb) Target: x86_64-unknown-freebsd14.0 Thread model: posix InstalledDir: /usr/bin
This issue seems to be similar to #13129 and #13635, CL incoming shortly.
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.