cuelang.org/go@v0.10.1/cue/testdata/cycle/023_reentrance.txtar (about)

     1  # DO NOT EDIT; generated by go run testdata/gen.go
     2  #
     3  #name: reentrance
     4  #evalFull
     5  -- in.cue --
     6  // This indirection is needed to avoid binding references to fib
     7  // within fib to the instantiated version.
     8  fibRec: {nn: int, out: (fib & {n: nn}).out}
     9  fib: {
    10  	n: int
    11  
    12  	if n >= 2 {
    13  		out: (fibRec & {nn: n - 2}).out + (fibRec & {nn: n - 1}).out
    14  	}
    15  	if n < 2 {
    16  		out: n
    17  	}
    18  }
    19  fib1:  (fib & {n: 1}).out  // MAY NOT be an error
    20  fib2:  (fib & {n: 2}).out  // MAY be an error
    21  fib3:  (fib & {n: 3}).out  // SHOULD be an error
    22  fib7:  (fib & {n: 7}).out  // Error
    23  fib12: (fib & {n: 12}).out // Error
    24  
    25  -- out/legacy-debug --
    26  <0>{fibRec: <1>{nn: int, out: (<2>.fib & <3>{n: <4>.nn}).out}, fib: <5>{n: int if (<6>.n >= 2) yield <7>{out: ((<2>.fibRec & <8>{nn: (<6>.n - 2)}).out + (<2>.fibRec & <9>{nn: (<6>.n - 1)}).out)},  if (<6>.n < 2) yield <10>{out: <6>.n}}, fib2: 1, fib7: 13, fib12: 144}
    27  -- out/compile --
    28  --- in.cue
    29  {
    30    fibRec: {
    31      nn: int
    32      out: (〈1;fib〉 & {
    33        n: 〈1;nn〉
    34      }).out
    35    }
    36    fib: {
    37      n: int
    38      if (〈0;n〉 >= 2) {
    39        out: ((〈2;fibRec〉 & {
    40          nn: (〈2;n〉 - 2)
    41        }).out + (〈2;fibRec〉 & {
    42          nn: (〈2;n〉 - 1)
    43        }).out)
    44      }
    45      if (〈0;n〉 < 2) {
    46        out: 〈1;n〉
    47      }
    48    }
    49    fib1: (〈0;fib〉 & {
    50      n: 1
    51    }).out
    52    fib2: (〈0;fib〉 & {
    53      n: 2
    54    }).out
    55    fib3: (〈0;fib〉 & {
    56      n: 3
    57    }).out
    58    fib7: (〈0;fib〉 & {
    59      n: 7
    60    }).out
    61    fib12: (〈0;fib〉 & {
    62      n: 12
    63    }).out
    64  }
    65  -- out/evalalpha/stats --
    66  Leaks:  70
    67  Freed:  0
    68  Reused: 0
    69  Allocs: 70
    70  Retain: 0
    71  
    72  Unifications: 62
    73  Conjuncts:    225
    74  Disjuncts:    0
    75  -- out/evalalpha --
    76  Errors:
    77  structural cycle:
    78      ./in.cue:3:25
    79  
    80  Result:
    81  (_|_){
    82    // [structural cycle]
    83    fibRec: (struct){
    84      nn: (int){ int }
    85      out: (_|_){
    86        // [incomplete] non-concrete value int in operand to >=:
    87        //     ./in.cue:7:5
    88        //     ./in.cue:3:35
    89        //     ./in.cue:5:5
    90      }
    91    }
    92    fib: (_|_){
    93      // [incomplete] fib: non-concrete value int in operand to >=:
    94      //     ./in.cue:7:5
    95      //     ./in.cue:5:5
    96      n: (int){ int }
    97    }
    98    fib1: (int){ 1 }
    99    fib2: (_|_){
   100      // [structural cycle] structural cycle:
   101      //     ./in.cue:3:25
   102    }
   103    fib3: (_|_){
   104      // [structural cycle] structural cycle:
   105      //     ./in.cue:3:25
   106    }
   107    fib7: (_|_){
   108      // [structural cycle] structural cycle:
   109      //     ./in.cue:3:25
   110    }
   111    fib12: (_|_){
   112      // [structural cycle] structural cycle:
   113      //     ./in.cue:3:25
   114    }
   115  }
   116  -- diff/-out/evalalpha/stats<==>+out/eval/stats --
   117  diff old new
   118  --- old
   119  +++ new
   120  @@ -1,9 +1,9 @@
   121  -Leaks:  16
   122  -Freed:  180
   123  -Reused: 170
   124  -Allocs: 26
   125  -Retain: 148
   126  +Leaks:  70
   127  +Freed:  0
   128  +Reused: 0
   129  +Allocs: 70
   130  +Retain: 0
   131   
   132  -Unifications: 196
   133  -Conjuncts:    464
   134  -Disjuncts:    268
   135  +Unifications: 62
   136  +Conjuncts:    225
   137  +Disjuncts:    0
   138  -- diff/-out/evalalpha<==>+out/eval --
   139  diff old new
   140  --- old
   141  +++ new
   142  @@ -1,10 +1,6 @@
   143   Errors:
   144   structural cycle:
   145       ./in.cue:3:25
   146  -structural cycle:
   147  -    ./in.cue:8:9
   148  -structural cycle:
   149  -    ./in.cue:8:38
   150   
   151   Result:
   152   (_|_){
   153  @@ -16,10 +12,6 @@
   154         //     ./in.cue:7:5
   155         //     ./in.cue:3:35
   156         //     ./in.cue:5:5
   157  -      // non-concrete value int in operand to <:
   158  -      //     ./in.cue:10:5
   159  -      //     ./in.cue:3:35
   160  -      //     ./in.cue:5:5
   161       }
   162     }
   163     fib: (_|_){
   164  @@ -26,33 +18,23 @@
   165       // [incomplete] fib: non-concrete value int in operand to >=:
   166       //     ./in.cue:7:5
   167       //     ./in.cue:5:5
   168  -    // fib: non-concrete value int in operand to <:
   169  -    //     ./in.cue:10:5
   170  -    //     ./in.cue:5:5
   171       n: (int){ int }
   172     }
   173     fib1: (int){ 1 }
   174  -  fib2: (int){ 1 }
   175  +  fib2: (_|_){
   176  +    // [structural cycle] structural cycle:
   177  +    //     ./in.cue:3:25
   178  +  }
   179     fib3: (_|_){
   180       // [structural cycle] structural cycle:
   181       //     ./in.cue:3:25
   182  -    // structural cycle:
   183  -    //     ./in.cue:8:38
   184     }
   185     fib7: (_|_){
   186       // [structural cycle] structural cycle:
   187       //     ./in.cue:3:25
   188  -    // structural cycle:
   189  -    //     ./in.cue:8:9
   190  -    // structural cycle:
   191  -    //     ./in.cue:8:38
   192     }
   193     fib12: (_|_){
   194       // [structural cycle] structural cycle:
   195       //     ./in.cue:3:25
   196  -    // structural cycle:
   197  -    //     ./in.cue:8:9
   198  -    // structural cycle:
   199  -    //     ./in.cue:8:38
   200     }
   201   }
   202  -- diff/todo/p3 --
   203  Note that it is okay for fib2 to fail.
   204  -- out/eval/stats --
   205  Leaks:  16
   206  Freed:  180
   207  Reused: 170
   208  Allocs: 26
   209  Retain: 148
   210  
   211  Unifications: 196
   212  Conjuncts:    464
   213  Disjuncts:    268
   214  -- out/eval --
   215  Errors:
   216  structural cycle:
   217      ./in.cue:3:25
   218  structural cycle:
   219      ./in.cue:8:9
   220  structural cycle:
   221      ./in.cue:8:38
   222  
   223  Result:
   224  (_|_){
   225    // [structural cycle]
   226    fibRec: (struct){
   227      nn: (int){ int }
   228      out: (_|_){
   229        // [incomplete] non-concrete value int in operand to >=:
   230        //     ./in.cue:7:5
   231        //     ./in.cue:3:35
   232        //     ./in.cue:5:5
   233        // non-concrete value int in operand to <:
   234        //     ./in.cue:10:5
   235        //     ./in.cue:3:35
   236        //     ./in.cue:5:5
   237      }
   238    }
   239    fib: (_|_){
   240      // [incomplete] fib: non-concrete value int in operand to >=:
   241      //     ./in.cue:7:5
   242      //     ./in.cue:5:5
   243      // fib: non-concrete value int in operand to <:
   244      //     ./in.cue:10:5
   245      //     ./in.cue:5:5
   246      n: (int){ int }
   247    }
   248    fib1: (int){ 1 }
   249    fib2: (int){ 1 }
   250    fib3: (_|_){
   251      // [structural cycle] structural cycle:
   252      //     ./in.cue:3:25
   253      // structural cycle:
   254      //     ./in.cue:8:38
   255    }
   256    fib7: (_|_){
   257      // [structural cycle] structural cycle:
   258      //     ./in.cue:3:25
   259      // structural cycle:
   260      //     ./in.cue:8:9
   261      // structural cycle:
   262      //     ./in.cue:8:38
   263    }
   264    fib12: (_|_){
   265      // [structural cycle] structural cycle:
   266      //     ./in.cue:3:25
   267      // structural cycle:
   268      //     ./in.cue:8:9
   269      // structural cycle:
   270      //     ./in.cue:8:38
   271    }
   272  }
   273  -- diff/todo/p2 --
   274  Elimination of unnecessary, but potentially useful, errors.