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  }