cuelang.org/go@v0.10.1/cue/testdata/basicrewrite/002_arithmetic.txtar (about)

     1  # DO NOT EDIT; generated by go run testdata/gen.go
     2  #
     3  #name: arithmetic
     4  #evalPartial
     5  -- in.cue --
     6  i1: 1 & int
     7  i2: 2 & int
     8  
     9  sum:     -1 + +2     // 1
    10  div1:    2.0 / 3 * 6 // 4
    11  div2:    2 / 3 * 6   // 4
    12  div3:    1.00 / 1.00
    13  divZero: 1.0 / 0
    14  div00:   0 / 0
    15  b:       1 != 4
    16  add:     div1 + 1.0
    17  
    18  idiv00: 0 div 0
    19  imod00: 0 mod 0
    20  iquo00: 0 quo 0
    21  irem00: 0 rem 0
    22  
    23  v1: 1.0T / 2.0
    24  v2: 2.0 == 2
    25  v3: 2.0 / 3.0
    26  v5: i1 div i2
    27  
    28  e0: 2 + "a"
    29  // these are now all alloweed
    30  // e1: 2.0 / i1
    31  // e2: i1 / 2.0
    32  // e3: 3.0 % i2
    33  // e4: i1 % 2.0
    34  e5: 1.0 div 2
    35  e6: 2 rem 2.0
    36  e7: 2 quo 2.0
    37  e8: 1.0 mod 1
    38  -- out/def --
    39  i1:      1
    40  i2:      2
    41  sum:     1
    42  div1:    4.00000000000000000000000
    43  div2:    4.00000000000000000000000
    44  div3:    1.
    45  divZero: _|_ // division by zero
    46  div00:   _|_ // division undefined
    47  b:       true
    48  add:     5.00000000000000000000000
    49  idiv00:  _|_ // division by zero
    50  imod00:  _|_ // division by zero
    51  iquo00:  _|_ // division by zero
    52  irem00:  _|_ // division by zero
    53  v1:      5.0000000000e+11
    54  v2:      true
    55  v3:      0.666666666666666666666667
    56  v5:      0
    57  e0:      _|_ // invalid operation 2 + "a" (mismatched types int and string)
    58  // these are now all alloweed
    59  // e1: 2.0 / i1
    60  // e2: i1 / 2.0
    61  // e3: 3.0 % i2
    62  // e4: i1 % 2.0
    63  e5: _|_ // invalid operation 1.0 div 2 (mismatched types float and int)
    64  e6: _|_ // invalid operation 2 rem 2.0 (mismatched types int and float)
    65  e7: _|_ // invalid operation 2 quo 2.0 (mismatched types int and float)
    66  e8: _|_ // invalid operation 1.0 mod 1 (mismatched types float and int)
    67  -- out/legacy-debug --
    68  <0>{i1: 1, i2: 2, sum: 1, div1: 4.00000000000000000000000, div2: 4.00000000000000000000000, div3: 1., divZero: _|_((1.0 / 0):division by zero), div00: _|_((0 / 0):division undefined), b: true, add: 5.00000000000000000000000, idiv00: _|_((0 div 0):division by zero), imod00: _|_((0 mod 0):division by zero), iquo00: _|_((0 quo 0):division by zero), irem00: _|_((0 rem 0):division by zero), v1: 5.0000000000e+11, v2: true, v3: 0.666666666666666666666667, v5: 0, e0: _|_((2 + "a"):invalid operation 2 + "a" (mismatched types int and string)), e5: _|_((1.0 div 2):invalid operation 1.0 div 2 (mismatched types float and int)), e6: _|_((2 rem 2.0):invalid operation 2 rem 2.0 (mismatched types int and float)), e7: _|_((2 quo 2.0):invalid operation 2 quo 2.0 (mismatched types int and float)), e8: _|_((1.0 mod 1):invalid operation 1.0 mod 1 (mismatched types float and int))}
    69  -- out/compile --
    70  --- in.cue
    71  {
    72    i1: (1 & int)
    73    i2: (2 & int)
    74    sum: (-1 + +2)
    75    div1: ((2.0 / 3) * 6)
    76    div2: ((2 / 3) * 6)
    77    div3: (1.00 / 1.00)
    78    divZero: (1.0 / 0)
    79    div00: (0 / 0)
    80    b: (1 != 4)
    81    add: (〈0;div1〉 + 1.0)
    82    idiv00: (0 div 0)
    83    imod00: (0 mod 0)
    84    iquo00: (0 quo 0)
    85    irem00: (0 rem 0)
    86    v1: (1000000000000 / 2.0)
    87    v2: (2.0 == 2)
    88    v3: (2.0 / 3.0)
    89    v5: (〈0;i1〉 div 〈0;i2〉)
    90    e0: (2 + "a")
    91    e5: (1.0 div 2)
    92    e6: (2 rem 2.0)
    93    e7: (2 quo 2.0)
    94    e8: (1.0 mod 1)
    95  }
    96  -- out/eval/stats --
    97  Leaks:  0
    98  Freed:  24
    99  Reused: 22
   100  Allocs: 2
   101  Retain: 0
   102  
   103  Unifications: 24
   104  Conjuncts:    26
   105  Disjuncts:    24
   106  -- out/eval --
   107  Errors:
   108  divZero: failed arithmetic: division by zero:
   109      ./in.cue:8:10
   110  div00: failed arithmetic: division undefined:
   111      ./in.cue:9:10
   112  idiv00: division by zero:
   113      ./in.cue:13:9
   114  imod00: division by zero:
   115      ./in.cue:14:9
   116  iquo00: division by zero:
   117      ./in.cue:15:9
   118  irem00: division by zero:
   119      ./in.cue:16:9
   120  e0: invalid operands 2 and "a" to '+' (type int and string):
   121      ./in.cue:23:5
   122      ./in.cue:23:9
   123  e5: invalid operands 1.0 and 2 to 'div' (type float and int):
   124      ./in.cue:29:5
   125      ./in.cue:29:13
   126  e6: invalid operands 2 and 2.0 to 'rem' (type int and float):
   127      ./in.cue:30:5
   128      ./in.cue:30:11
   129  e7: invalid operands 2 and 2.0 to 'quo' (type int and float):
   130      ./in.cue:31:5
   131      ./in.cue:31:11
   132  e8: invalid operands 1.0 and 1 to 'mod' (type float and int):
   133      ./in.cue:32:5
   134      ./in.cue:32:13
   135  
   136  Result:
   137  (_|_){
   138    // [eval]
   139    i1: (int){ 1 }
   140    i2: (int){ 2 }
   141    sum: (int){ 1 }
   142    div1: (float){ 4.000000000000000000000000000000000 }
   143    div2: (float){ 4.000000000000000000000000000000000 }
   144    div3: (float){ 1.0 }
   145    divZero: (_|_){
   146      // [eval] divZero: failed arithmetic: division by zero:
   147      //     ./in.cue:8:10
   148    }
   149    div00: (_|_){
   150      // [eval] div00: failed arithmetic: division undefined:
   151      //     ./in.cue:9:10
   152    }
   153    b: (bool){ true }
   154    add: (float){ 5.000000000000000000000000000000000 }
   155    idiv00: (_|_){
   156      // [eval] idiv00: division by zero:
   157      //     ./in.cue:13:9
   158    }
   159    imod00: (_|_){
   160      // [eval] imod00: division by zero:
   161      //     ./in.cue:14:9
   162    }
   163    iquo00: (_|_){
   164      // [eval] iquo00: division by zero:
   165      //     ./in.cue:15:9
   166    }
   167    irem00: (_|_){
   168      // [eval] irem00: division by zero:
   169      //     ./in.cue:16:9
   170    }
   171    v1: (float){ 5.0E+11 }
   172    v2: (bool){ true }
   173    v3: (float){ 0.6666666666666666666666666666666667 }
   174    v5: (int){ 0 }
   175    e0: (_|_){
   176      // [eval] e0: invalid operands 2 and "a" to '+' (type int and string):
   177      //     ./in.cue:23:5
   178      //     ./in.cue:23:9
   179    }
   180    e5: (_|_){
   181      // [eval] e5: invalid operands 1.0 and 2 to 'div' (type float and int):
   182      //     ./in.cue:29:5
   183      //     ./in.cue:29:13
   184    }
   185    e6: (_|_){
   186      // [eval] e6: invalid operands 2 and 2.0 to 'rem' (type int and float):
   187      //     ./in.cue:30:5
   188      //     ./in.cue:30:11
   189    }
   190    e7: (_|_){
   191      // [eval] e7: invalid operands 2 and 2.0 to 'quo' (type int and float):
   192      //     ./in.cue:31:5
   193      //     ./in.cue:31:11
   194    }
   195    e8: (_|_){
   196      // [eval] e8: invalid operands 1.0 and 1 to 'mod' (type float and int):
   197      //     ./in.cue:32:5
   198      //     ./in.cue:32:13
   199    }
   200  }