mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 16:33:40 +00:00
cgo: add C._Bool type
This fixes https://github.com/tinygo-org/tinygo/issues/3926. While working on this I've found another bug: if C.bool is referenced from within Go, it isn't available anymore on the C side. This is an existing bug that also applies to float and double, but may be less likely to be triggered there. This bug is something to be fixed at a later time (it has something to do with preprocessor defines).
This commit is contained in:
committed by
Ron Evans
parent
a896f7f218
commit
6ef8fcd537
+4
-2
@@ -88,6 +88,7 @@ var cgoAliases = map[string]string{
|
||||
"C.uintptr_t": "uintptr",
|
||||
"C.float": "float32",
|
||||
"C.double": "float64",
|
||||
"C._Bool": "bool",
|
||||
}
|
||||
|
||||
// builtinAliases are handled specially because they only exist on the Go side
|
||||
@@ -311,10 +312,11 @@ func Process(files []*ast.File, dir, importPath string, fset *token.FileSet, cfl
|
||||
// Process CGo imports for each file.
|
||||
for i, f := range files {
|
||||
cf := p.newCGoFile(f, i)
|
||||
// Float and double are aliased, meaning that C.float is the same thing
|
||||
// as float32 in Go.
|
||||
// These types are aliased with the corresponding types in C. For
|
||||
// example, float in C is always float32 in Go.
|
||||
cf.names["float"] = clangCursor{}
|
||||
cf.names["double"] = clangCursor{}
|
||||
cf.names["_Bool"] = clangCursor{}
|
||||
// Now read all the names (identifies) that C defines in the header
|
||||
// snippet.
|
||||
cf.readNames(p.cgoHeaders[i], cflagsForCGo, filepath.Base(fset.File(f.Pos()).Name()), func(names map[string]clangCursor) {
|
||||
|
||||
Reference in New Issue
Block a user