This change prevents enum consts from conflicting with themselves
when loaded twice in different go files.
Fixes #1400.
R=rsc
CC=golang-dev
https://golang.org/cl/
3849044
} else {
n.Type = conv.Type(types[i])
if enums[i] != 0 && n.Type.EnumValues != nil {
+ k := fmt.Sprintf("__cgo_enum__%d", i)
n.Kind = "const"
- n.Const = strconv.Itoa64(n.Type.EnumValues[fmt.Sprintf("__cgo_enum__%d", i)])
+ n.Const = strconv.Itoa64(n.Type.EnumValues[k])
+ // Remove injected enum to ensure the value will deep-compare
+ // equally in future loads of the same constant.
+ n.Type.EnumValues[k] = 0, false
}
}
}