From: Daniel Martí Date: Fri, 20 Jan 2023 21:53:34 +0000 (+0000) Subject: encoding/gob: slightly simplify init code X-Git-Tag: go1.21rc1~1809 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=43f9b826c322d5541ca0260f8b0c9b71db0f7ec8;p=gostls13.git encoding/gob: slightly simplify init code https://go.dev/cl/460543 stopped using the "expect" parameter in bootstrapType, but we forgot to actually remove it. While here, staticcheck correctly points out that we can use the copy builtin to fill builtinIdToTypeSlice, now that it and idToType are an array and slice respectively. Change-Id: I48078415ab9bdd5633cf41f33ab4dc78eb30b48a Reviewed-on: https://go-review.googlesource.com/c/go/+/462301 Run-TryBot: Daniel Martí Run-TryBot: Rob Pike Reviewed-by: Rob Pike Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Matthew Dempsky --- diff --git a/src/encoding/gob/type.go b/src/encoding/gob/type.go index 80d75160a7..59cab6e143 100644 --- a/src/encoding/gob/type.go +++ b/src/encoding/gob/type.go @@ -243,22 +243,22 @@ var ( // Primordial types, needed during initialization. // Always passed as pointers so the interface{} type // goes through without losing its interfaceness. - tBool = bootstrapType("bool", (*bool)(nil), 1) - tInt = bootstrapType("int", (*int)(nil), 2) - tUint = bootstrapType("uint", (*uint)(nil), 3) - tFloat = bootstrapType("float", (*float64)(nil), 4) - tBytes = bootstrapType("bytes", (*[]byte)(nil), 5) - tString = bootstrapType("string", (*string)(nil), 6) - tComplex = bootstrapType("complex", (*complex128)(nil), 7) - tInterface = bootstrapType("interface", (*any)(nil), 8) + tBool = bootstrapType("bool", (*bool)(nil)) + tInt = bootstrapType("int", (*int)(nil)) + tUint = bootstrapType("uint", (*uint)(nil)) + tFloat = bootstrapType("float", (*float64)(nil)) + tBytes = bootstrapType("bytes", (*[]byte)(nil)) + tString = bootstrapType("string", (*string)(nil)) + tComplex = bootstrapType("complex", (*complex128)(nil)) + tInterface = bootstrapType("interface", (*any)(nil)) // Reserve some Ids for compatible expansion - tReserved7 = bootstrapType("_reserved1", (*struct{ r7 int })(nil), 9) - tReserved6 = bootstrapType("_reserved1", (*struct{ r6 int })(nil), 10) - tReserved5 = bootstrapType("_reserved1", (*struct{ r5 int })(nil), 11) - tReserved4 = bootstrapType("_reserved1", (*struct{ r4 int })(nil), 12) - tReserved3 = bootstrapType("_reserved1", (*struct{ r3 int })(nil), 13) - tReserved2 = bootstrapType("_reserved1", (*struct{ r2 int })(nil), 14) - tReserved1 = bootstrapType("_reserved1", (*struct{ r1 int })(nil), 15) + tReserved7 = bootstrapType("_reserved1", (*struct{ r7 int })(nil)) + tReserved6 = bootstrapType("_reserved1", (*struct{ r6 int })(nil)) + tReserved5 = bootstrapType("_reserved1", (*struct{ r5 int })(nil)) + tReserved4 = bootstrapType("_reserved1", (*struct{ r4 int })(nil)) + tReserved3 = bootstrapType("_reserved1", (*struct{ r3 int })(nil)) + tReserved2 = bootstrapType("_reserved1", (*struct{ r2 int })(nil)) + tReserved1 = bootstrapType("_reserved1", (*struct{ r1 int })(nil)) ) // Predefined because it's needed by the Decoder @@ -275,9 +275,7 @@ func init() { checkId(21, mustGetTypeInfo(reflect.TypeOf((*fieldType)(nil)).Elem()).id) checkId(23, mustGetTypeInfo(reflect.TypeOf((*mapType)(nil)).Elem()).id) - for k, v := range idToType { - builtinIdToTypeSlice[k] = v - } + copy(builtinIdToTypeSlice[:], idToType) // Move the id space upwards to allow for growth in the predefined world // without breaking existing files. @@ -616,7 +614,7 @@ func checkId(want, got typeId) { // used for building the basic types; called only from init(). the incoming // interface always refers to a pointer. -func bootstrapType(name string, e any, expect typeId) typeId { +func bootstrapType(name string, e any) typeId { rt := reflect.TypeOf(e).Elem() _, present := types[rt] if present {