@@ -683,39 +683,47 @@ func hasEnumReference(v cue.Value) bool {
683
683
func (v cue.Value ) bool { return targetsKind (cue .Dereference (v ), TypeEnum ) },
684
684
)
685
685
686
- // Check if it setting an enum value [Enum & "value"]
686
+ // Check if it's setting an enum value [Enum & "value"]
687
687
op , args := v .Expr ()
688
688
if op == cue .AndOp {
689
689
return hasPred
690
690
}
691
691
692
- // Check if it has default value [Enum & (*"defaultValuee " | _)]
692
+ // Check if it has default value [Enum & (*"defaultValue " | _)]
693
693
for _ , a := range args {
694
694
if a .IncompleteKind () == cue .TopKind {
695
695
return hasPred
696
696
}
697
697
}
698
698
699
- // Check if it is a union [(Enum & "a") | (Enum & "b")]
700
699
isUnion := true
700
+ allEnums := true
701
701
for _ , a := range args {
702
+ // Check if it is a union [(Enum & "a") | (Enum & "b")]
702
703
if a .Kind () != a .IncompleteKind () {
703
704
isUnion = false
704
705
}
706
+ // Check if all elements are enums
707
+ _ , exprs := a .Expr ()
708
+ for _ , e := range exprs {
709
+ if t , err := getKindFor (cue .Dereference (e )); err == nil && t != TypeEnum {
710
+ allEnums = false
711
+ }
712
+ }
705
713
}
706
714
707
- return hasPred && isUnion
715
+ return hasPred && isUnion && allEnums
708
716
}
709
717
710
718
func hasTypeReference (v cue.Value ) bool {
711
719
hasTypeRef := containsCuetsyReference (v , TypeAlias )
712
- // Check if it setting an enum value [Enum & "value"]
720
+ // Check if it's setting an enum value [Type & "value"]
713
721
op , args := v .Expr ()
714
722
if op == cue .AndOp || op == cue .SelectorOp {
715
723
return hasTypeRef
716
724
}
717
725
718
- // Check if it has default value [Enum & (*"defaultValuee " | _)]
726
+ // Check if it has default value [Type & (*"defaultValue " | _)]
719
727
for _ , a := range args {
720
728
if a .IncompleteKind () == cue .TopKind {
721
729
return hasTypeRef
@@ -995,7 +1003,7 @@ func (g generator) tsPrintDefault(v cue.Value) (bool, ts.Expr, error) {
995
1003
return false , nil , err
996
1004
}
997
1005
998
- if isReference (d ) {
1006
+ if isReference (d ) && ( hasEnumReference ( v ) || hasTypeReference ( v )) {
999
1007
switch t := expr .(type ) {
1000
1008
case tsast.SelectorExpr :
1001
1009
t .Sel .Name = "default" + t .Sel .Name
0 commit comments