github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/cue/testdata/eval/bounds.txtar (about) 1 -- in.cue -- 2 x0: 5 3 x1: b5 & 30 4 5 b0: <x0 & >0 6 b1: b0 & int 7 b2: int & <5.5 8 b3: <10 & <=5 9 b4: >=20 & >20 10 b5: >=21 & >20 11 b6: int & >5 & <=6 12 13 simplifyExpr: { 14 less1: <(<3) 15 less2: <(<=3) 16 less3: <=(<3) 17 less4: <=(<=3) 18 less5: <(!=3) 19 less6: <=(!=3) 20 21 gtr1: >(>3) 22 gtr2: >(>=3) 23 gtr3: >=(>3) 24 gtr4: >=(>=3) 25 gtr5: >(!=3) 26 gtr6: >=(!=3) 27 28 lg1: <(>3) 29 lg2: <(>=3) 30 lg3: <=(>3) 31 lg4: <=(>=3) 32 33 gl1: >(<3) 34 gl2: >(<=3) 35 gl3: >=(<3) 36 gl4: >=(<=3) 37 38 ne1: !=(!=3) 39 ne2: !=(<3) 40 ne3: !=(<=3) 41 ne4: !=(>3) 42 ne5: !=(>=3) 43 44 s: string 45 n: number 46 i: int 47 f: float 48 b: bytes 49 basic1: <(i) 50 basic2: >(n) 51 basic3: >=(s) 52 basic4: <=(f) 53 basic5: <=(b) 54 55 // Do NOT interpret this the same as `!= type`. 56 bne1: !=(s) 57 bne2: !=(n) 58 bne3: !=(n) 59 bne4: !=(i) 60 bne5: !=(b) 61 62 e1: <(=~"foo") 63 e2: >(null) 64 } 65 -- out/eval -- 66 Errors: 67 simplifyExpr.e2: cannot use null for bound >: 68 ./in.cue:62:8 69 70 Result: 71 (_|_){ 72 // [eval] 73 x0: (int){ 5 } 74 x1: (int){ 30 } 75 b0: (number){ &(>0, <5) } 76 b1: (int){ &(>0, <5, int) } 77 b2: (int){ &(<5.5, int) } 78 b3: (number){ <=5 } 79 b4: (number){ >20 } 80 b5: (number){ >=21 } 81 b6: (int){ 6 } 82 simplifyExpr: (_|_){ 83 // [eval] 84 less1: (number){ <3 } 85 less2: (number){ <3 } 86 less3: (number){ <3 } 87 less4: (number){ <=3 } 88 less5: (number){ number } 89 less6: (number){ number } 90 gtr1: (number){ >3 } 91 gtr2: (number){ >3 } 92 gtr3: (number){ >3 } 93 gtr4: (number){ >=3 } 94 gtr5: (number){ number } 95 gtr6: (number){ number } 96 lg1: (number){ number } 97 lg2: (number){ number } 98 lg3: (number){ number } 99 lg4: (number){ number } 100 gl1: (number){ number } 101 gl2: (number){ number } 102 gl3: (number){ number } 103 gl4: (number){ number } 104 ne1: (int){ 3 } 105 ne2: (number){ >=3 } 106 ne3: (number){ >3 } 107 ne4: (number){ <=3 } 108 ne5: (number){ <3 } 109 s: (string){ string } 110 n: (number){ number } 111 i: (int){ int } 112 f: (float){ float } 113 b: (bytes){ bytes } 114 basic1: (int){ int } 115 basic2: (number){ number } 116 basic3: (string){ string } 117 basic4: (float){ float } 118 basic5: (bytes){ bytes } 119 bne1: (_|_){ 120 // [incomplete] simplifyExpr.bne1: non-concrete value s for bound !=: 121 // ./in.cue:55:11 122 } 123 bne2: (_|_){ 124 // [incomplete] simplifyExpr.bne2: non-concrete value n for bound !=: 125 // ./in.cue:56:11 126 } 127 bne3: (_|_){ 128 // [incomplete] simplifyExpr.bne3: non-concrete value n for bound !=: 129 // ./in.cue:57:11 130 } 131 bne4: (_|_){ 132 // [incomplete] simplifyExpr.bne4: non-concrete value i for bound !=: 133 // ./in.cue:58:11 134 } 135 bne5: (_|_){ 136 // [incomplete] simplifyExpr.bne5: non-concrete value b for bound !=: 137 // ./in.cue:59:11 138 } 139 e1: (_|_){ 140 // [incomplete] simplifyExpr.e1: non-concrete value =~"foo" for bound <: 141 // ./in.cue:61:8 142 } 143 e2: (_|_){ 144 // [eval] simplifyExpr.e2: cannot use null for bound >: 145 // ./in.cue:62:8 146 } 147 } 148 } 149 -- out/compile -- 150 --- in.cue 151 { 152 x0: 5 153 x1: (〈0;b5〉 & 30) 154 b0: (<〈0;x0〉 & >0) 155 b1: (〈0;b0〉 & int) 156 b2: (int & <5.5) 157 b3: (<10 & <=5) 158 b4: (>=20 & >20) 159 b5: (>=21 & >20) 160 b6: ((int & >5) & <=6) 161 simplifyExpr: { 162 less1: <<3 163 less2: <<=3 164 less3: <=<3 165 less4: <=<=3 166 less5: <!=3 167 less6: <=!=3 168 gtr1: >>3 169 gtr2: >>=3 170 gtr3: >=>3 171 gtr4: >=>=3 172 gtr5: >!=3 173 gtr6: >=!=3 174 lg1: <>3 175 lg2: <>=3 176 lg3: <=>3 177 lg4: <=>=3 178 gl1: ><3 179 gl2: ><=3 180 gl3: >=<3 181 gl4: >=<=3 182 ne1: !=!=3 183 ne2: !=<3 184 ne3: !=<=3 185 ne4: !=>3 186 ne5: !=>=3 187 s: string 188 n: number 189 i: int 190 f: float 191 b: bytes 192 basic1: <〈0;i〉 193 basic2: >〈0;n〉 194 basic3: >=〈0;s〉 195 basic4: <=〈0;f〉 196 basic5: <=〈0;b〉 197 bne1: !=〈0;s〉 198 bne2: !=〈0;n〉 199 bne3: !=〈0;n〉 200 bne4: !=〈0;i〉 201 bne5: !=〈0;b〉 202 e1: <=~"foo" 203 e2: >null 204 } 205 }