1
0
mirror of https://github.com/golang/go synced 2024-11-20 10:44:41 -07:00

cmd/cgo: make typedef map traversal order consistent

So that _cgo_gotypes.go will be the same for the same source
        code.

R=nigeltao
CC=golang-dev
https://golang.org/cl/6357067
This commit is contained in:
Shenghou Ma 2012-07-05 15:24:33 -04:00
parent a54f920bfe
commit a49172663c

View File

@ -14,6 +14,7 @@ import (
"go/printer" "go/printer"
"go/token" "go/token"
"os" "os"
"sort"
"strings" "strings"
) )
@ -57,7 +58,13 @@ func (p *Package) writeDefs() {
fmt.Fprintf(fgo2, "type _ unsafe.Pointer\n\n") fmt.Fprintf(fgo2, "type _ unsafe.Pointer\n\n")
fmt.Fprintf(fgo2, "func _Cerrno(dst *error, x int) { *dst = syscall.Errno(x) }\n") fmt.Fprintf(fgo2, "func _Cerrno(dst *error, x int) { *dst = syscall.Errno(x) }\n")
for name, def := range typedef { typedefNames := make([]string, 0, len(typedef))
for name := range typedef {
typedefNames = append(typedefNames, name)
}
sort.Strings(typedefNames)
for _, name := range typedefNames {
def := typedef[name]
fmt.Fprintf(fgo2, "type %s ", name) fmt.Fprintf(fgo2, "type %s ", name)
conf.Fprint(fgo2, fset, def.Go) conf.Fprint(fgo2, fset, def.Go)
fmt.Fprintf(fgo2, "\n\n") fmt.Fprintf(fgo2, "\n\n")