Commit 02ff646f authored by Gustavo Niemeyer's avatar Gustavo Niemeyer Committed by Russ Cox

cgo: fix enum const conflict

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
parent 4bdaf59c
......@@ -372,8 +372,12 @@ func (p *Package) loadDWARF(f *File, names []*Name) {
} 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
}
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment