Skip to content

Commit

Permalink
Conradhanson/test external changes for supporting proto optionals (#20)
Browse files Browse the repository at this point in the history
* make generated-code with protoc 3.15.8

* non-generated changes from external branch

* use internal hashstructure package; make generated-code
  • Loading branch information
conradhanson authored Dec 8, 2022
1 parent 7cfba22 commit 6735dfd
Show file tree
Hide file tree
Showing 13 changed files with 817 additions and 154 deletions.
32 changes: 16 additions & 16 deletions extproto/ext.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package main

import (
pgsgo "github.com/lyft/protoc-gen-star/lang/go"
"google.golang.org/protobuf/types/pluginpb"

"github.com/solo-io/protoc-gen-ext/module/clone"
"github.com/solo-io/protoc-gen-ext/module/equal"
"github.com/solo-io/protoc-gen-ext/module/hash"
Expand All @@ -11,8 +13,10 @@ import (
)

func main() {
feat := uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL)
pgs.Init(
pgs.DebugEnv("PROTO_DEBUG"),
pgs.SupportedFeatures(&feat),
).RegisterModule(
hash.Hash(),
equal.Equal(),
Expand Down
9 changes: 8 additions & 1 deletion templates/clone/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,14 @@ func (m {{ (msgTyp .).Pointer }}) Clone() proto.Message {
{{ render . }}
{{ end }}
{{ range .OneOfs }}
{{ range .SyntheticOneOfFields }}
if m.{{ name . }} != nil {
v := m.Get{{ name . }}()
target.{{ name . }} = &v
}
{{ end }}
{{ range .RealOneOfs }}
switch m.{{ name . }}.(type) {
{{ $oneOfInterface := name .}}
{{ range .Fields }}
Expand Down
15 changes: 14 additions & 1 deletion templates/equal/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,20 @@ func (m {{ (msgTyp .).Pointer }}) Equal(that interface{}) bool {
{{ render . }}
{{ end }}
{{ range .OneOfs }}
{{ range .SyntheticOneOfFields }}
if m.{{ name . }} != nil {
if target.{{ name . }} == nil {
return false
}
if m.Get{{ name . }}() != target.Get{{ name . }}() {
return false
}
} else if target.{{ name . }} != nil {
return false
}
{{ end }}
{{ range .RealOneOfs }}
switch m.{{ name . }}.(type) {
{{ $oneOfInterface := name .}}
{{ range .Fields }}
Expand Down
5 changes: 4 additions & 1 deletion templates/hash/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ func (m {{ (msgTyp .).Pointer }}) Hash(hasher hash.Hash64) (uint64, error) {
{{ render . }}
{{ end }}
{{ range .OneOfs }}
{{ range .SyntheticOneOfFields }}
{{ render . }}
{{ end }}
{{ range .RealOneOfs }}
switch m.{{ name . }}.(type) {
{{ range .Fields }}
case {{ oneof . }}:
Expand Down
1 change: 1 addition & 0 deletions templates/merge/functions.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ func register(tpl *template.Template, params pgs.Parameters) {
"pkg": fns.PackageName,
"renderField": fns.renderField,
"renderOneOf": fns.renderOneOf,
"name": fns.Name,
})
}

Expand Down
9 changes: 8 additions & 1 deletion templates/merge/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,14 @@ func (m {{ (msgTyp .).Pointer }}) Merge(overrides {{ (msgTyp .).Pointer }}) {
{{ renderField . }}
{{ end }}
{{ range .OneOfs }}
{{ range .SyntheticOneOfFields }}
if overrides.{{ name . }} != nil {
v := overrides.Get{{ name . }}()
m.{{ name . }} = &v
}
{{ end }}
{{ range .RealOneOfs }}
{{ renderOneOf . }}
{{ end }}
Expand Down
98 changes: 89 additions & 9 deletions tests/api/hello.pb.clone.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6735dfd

Please sign in to comment.