mirror of
https://github.com/golang/go
synced 2024-11-24 20:20:03 -07:00
to improve the chances for compatibility, open a window of unused ids
and specify a lowest id granted to users. R=rsc CC=golang-dev https://golang.org/cl/186081
This commit is contained in:
parent
632a98592d
commit
24dafbaa37
@ -37,6 +37,7 @@ type typeId int32
|
||||
|
||||
var nextId typeId // incremented for each new type we build
|
||||
var typeLock sync.Mutex // set while building a type
|
||||
const firstUserId = 64 // lowest id number granted to user
|
||||
|
||||
type gobType interface {
|
||||
id() typeId
|
||||
@ -101,6 +102,7 @@ var tString = bootstrapType("string", "", 6)
|
||||
var tWireType = mustGetTypeInfo(reflect.Typeof(wireType{})).id
|
||||
|
||||
func init() {
|
||||
// Some magic numbers to make sure there are no surprises.
|
||||
checkId(7, tWireType)
|
||||
checkId(9, mustGetTypeInfo(reflect.Typeof(commonType{})).id)
|
||||
checkId(11, mustGetTypeInfo(reflect.Typeof(structType{})).id)
|
||||
@ -109,6 +111,12 @@ func init() {
|
||||
for k, v := range idToType {
|
||||
builtinIdToType[k] = v
|
||||
}
|
||||
// Move the id space upwards to allow for growth in the predefined world
|
||||
// without breaking existing files.
|
||||
if nextId > firstUserId {
|
||||
panicln("nextId too large:", nextId)
|
||||
}
|
||||
nextId = firstUserId
|
||||
}
|
||||
|
||||
// Array type
|
||||
|
Loading…
Reference in New Issue
Block a user