Skip to content

Commit 019060d

Browse files
committed
cmd/cue/cmd: extract cue constraints in tags in get go
Change-Id: I9bd0a2307a364c0ab9c8d9b3e8f69b8f162c29f6 Reviewed-on: https://cue-review.googlesource.com/c/cue/+/6341 Reviewed-by: Marcel van Lohuizen <[email protected]>
1 parent eb7706b commit 019060d

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

cmd/cue/cmd/get_go.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,6 +1075,14 @@ func (e *extractor) addFields(x *types.Struct, st *cueast.StructLit) {
10751075
field, cueType := e.makeField(name, kind, f.Type(), docs[i], count > 0)
10761076
add(field)
10771077

1078+
if s := reflect.StructTag(tag).Get("cue"); s != "" {
1079+
expr, err := parser.ParseExpr("get go", s)
1080+
if err != nil {
1081+
e.logf("error parsing struct tag %q:", s, err)
1082+
}
1083+
field.Value = cueast.NewBinExpr(cuetoken.AND, field.Value, expr)
1084+
}
1085+
10781086
// Add field tag to convert back to Go.
10791087
typeName := f.Type().String()
10801088
// simplify type names:

cmd/cue/cmd/testdata/code/go/pkg1/file1.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ type Foozer struct {
3838
AnyJSON json.Marshaler
3939
AnyText encoding.TextMarshaler
4040

41-
Bar int `json:"bar,omitempty"`
41+
Bar int `json:"bar,omitempty" cue:">10"`
4242

4343
exclude int
4444

cmd/cue/cmd/testdata/pkg/cuelang.org/go/cmd/cue/cmd/testdata/code/go/pkg1/file1_go_gen.cue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
CustomYAML?: null | #CustomYAML @go(,*CustomYAML)
2222
AnyJSON: _ @go(,json.Marshaler)
2323
AnyText: string @go(,encoding.TextMarshaler)
24-
bar?: int @go(Bar)
24+
bar?: int & >10 @go(Bar)
2525

2626
// Time is mapped to CUE's internal type.
2727
Time: time.Time

0 commit comments

Comments
 (0)