// Copyright 2018 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package prototext_test import ( "fmt" "strings" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" _ "google.golang.org/protobuf/internal/testprotos/textpbeditions" _ "google.golang.org/protobuf/internal/testprotos/textpbeditions/textpbeditions_opaque" ) var relatedMessages = func() map[protoreflect.MessageType][]protoreflect.MessageType { related := map[protoreflect.MessageType][]protoreflect.MessageType{} const opaqueNamePrefix = "opaque." protoregistry.GlobalTypes.RangeMessages(func(mt protoreflect.MessageType) bool { name := mt.Descriptor().FullName() if !strings.HasPrefix(string(name), opaqueNamePrefix) { return true } mt1, err := protoregistry.GlobalTypes.FindMessageByName(name[len(opaqueNamePrefix):]) if err != nil { panic(fmt.Sprintf("%v: can't find related message", name)) } related[mt1] = append(related[mt1], mt) return true }) return related }()