MCPcopy Create free account
hub / github.com/bufbuild/protocompile / validateBasic

Function validateBasic

parser/validate.go:31–87  ·  view source on GitHub ↗
(res *result, handler *reporter.Handler)

Source from the content-addressed store, hash-verified

29)
30
31func validateBasic(res *result, handler *reporter.Handler) {
32 fd := res.proto
33 var syntax protoreflect.Syntax
34 switch fd.GetSyntax() {
35 case "", "proto2":
36 syntax = protoreflect.Proto2
37 case "proto3":
38 syntax = protoreflect.Proto3
39 case "editions":
40 syntax = protoreflect.Editions
41 // TODO: default: error?
42 }
43
44 if err := validateImports(res, handler); err != nil {
45 return
46 }
47
48 if err := validateNoFeatures(res, syntax, "file options", fd.Options.GetUninterpretedOption(), handler); err != nil {
49 return
50 }
51
52 _ = walk.DescriptorProtos(fd,
53 func(name protoreflect.FullName, d proto.Message) error {
54 switch d := d.(type) {
55 case *descriptorpb.DescriptorProto:
56 if err := validateMessage(res, syntax, name, d, handler); err != nil {
57 // exit func is not called when enter returns error
58 return err
59 }
60 case *descriptorpb.FieldDescriptorProto:
61 if err := validateField(res, syntax, name, d, handler); err != nil {
62 return err
63 }
64 case *descriptorpb.OneofDescriptorProto:
65 if err := validateNoFeatures(res, syntax, fmt.Sprintf("oneof %s", name), d.Options.GetUninterpretedOption(), handler); err != nil {
66 return err
67 }
68 case *descriptorpb.EnumDescriptorProto:
69 if err := validateEnum(res, syntax, name, d, handler); err != nil {
70 return err
71 }
72 case *descriptorpb.EnumValueDescriptorProto:
73 if err := validateNoFeatures(res, syntax, fmt.Sprintf("enum value %s", name), d.Options.GetUninterpretedOption(), handler); err != nil {
74 return err
75 }
76 case *descriptorpb.ServiceDescriptorProto:
77 if err := validateNoFeatures(res, syntax, fmt.Sprintf("service %s", name), d.Options.GetUninterpretedOption(), handler); err != nil {
78 return err
79 }
80 case *descriptorpb.MethodDescriptorProto:
81 if err := validateNoFeatures(res, syntax, fmt.Sprintf("method %s", name), d.Options.GetUninterpretedOption(), handler); err != nil {
82 return err
83 }
84 }
85 return nil
86 })
87}
88

Callers 1

ResultFromASTFunction · 0.85

Calls 8

DescriptorProtosFunction · 0.92
validateImportsFunction · 0.85
validateNoFeaturesFunction · 0.85
validateMessageFunction · 0.85
validateFieldFunction · 0.85
validateEnumFunction · 0.85
GetSyntaxMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…