...

Text file src/cuelang.org/go/cue/testdata/cycle/023_reentrance.txtar

Documentation: cuelang.org/go/cue/testdata/cycle

     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.
     8fibRec: {nn: int, out: (fib & {n: nn}).out}
     9fib: {
    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}
    19fib1:  (fib & {n: 1}).out  // MAY NOT be an error
    20fib2:  (fib & {n: 2}).out  // MAY be an error
    21fib3:  (fib & {n: 3}).out  // SHOULD be an error
    22fib7:  (fib & {n: 7}).out  // Error
    23fib12: (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/eval/stats --
    66Leaks:  16
    67Freed:  180
    68Reused: 170
    69Allocs: 26
    70Retain: 148
    71
    72Unifications: 196
    73Conjuncts:    464
    74Disjuncts:    268
    75-- out/evalalpha --
    76Errors:
    77structural cycle:
    78    ./in.cue:3:25
    79structural cycle:
    80    ./in.cue:8:9
    81structural cycle:
    82    ./in.cue:8:38
    83
    84Result:
    85(_|_){
    86  // [structural cycle]
    87  fibRec: (struct){
    88    nn: (int){ int }
    89    out: (_|_){
    90      // [incomplete] non-concrete value int in operand to >=:
    91      //     ./in.cue:7:5
    92      //     ./in.cue:3:35
    93      //     ./in.cue:5:5
    94    }
    95  }
    96  fib: (_|_){
    97    // [incomplete] fib: non-concrete value int in operand to >=:
    98    //     ./in.cue:7:5
    99    //     ./in.cue:5:5
   100    n: (int){ int }
   101  }
   102  fib1: (int){ 1 }
   103  fib2: (int){ 1 }
   104  fib3: (_|_){
   105    // [structural cycle] structural cycle:
   106    //     ./in.cue:3:25
   107    // structural cycle:
   108    //     ./in.cue:8:38
   109  }
   110  fib7: (_|_){
   111    // [structural cycle] structural cycle:
   112    //     ./in.cue:3:25
   113    // structural cycle:
   114    //     ./in.cue:8:9
   115    // structural cycle:
   116    //     ./in.cue:8:38
   117  }
   118  fib12: (_|_){
   119    // [structural cycle] structural cycle:
   120    //     ./in.cue:3:25
   121    // structural cycle:
   122    //     ./in.cue:8:9
   123    // structural cycle:
   124    //     ./in.cue:8:38
   125  }
   126}
   127-- diff/-out/evalalpha<==>+out/eval --
   128diff old new
   129--- old
   130+++ new
   131@@ -16,10 +16,6 @@
   132       //     ./in.cue:7:5
   133       //     ./in.cue:3:35
   134       //     ./in.cue:5:5
   135-      // non-concrete value int in operand to <:
   136-      //     ./in.cue:10:5
   137-      //     ./in.cue:3:35
   138-      //     ./in.cue:5:5
   139     }
   140   }
   141   fib: (_|_){
   142@@ -26,9 +22,6 @@
   143     // [incomplete] fib: non-concrete value int in operand to >=:
   144     //     ./in.cue:7:5
   145     //     ./in.cue:5:5
   146-    // fib: non-concrete value int in operand to <:
   147-    //     ./in.cue:10:5
   148-    //     ./in.cue:5:5
   149     n: (int){ int }
   150   }
   151   fib1: (int){ 1 }
   152-- out/eval --
   153Errors:
   154structural cycle:
   155    ./in.cue:3:25
   156structural cycle:
   157    ./in.cue:8:9
   158structural cycle:
   159    ./in.cue:8:38
   160
   161Result:
   162(_|_){
   163  // [structural cycle]
   164  fibRec: (struct){
   165    nn: (int){ int }
   166    out: (_|_){
   167      // [incomplete] non-concrete value int in operand to >=:
   168      //     ./in.cue:7:5
   169      //     ./in.cue:3:35
   170      //     ./in.cue:5:5
   171      // non-concrete value int in operand to <:
   172      //     ./in.cue:10:5
   173      //     ./in.cue:3:35
   174      //     ./in.cue:5:5
   175    }
   176  }
   177  fib: (_|_){
   178    // [incomplete] fib: non-concrete value int in operand to >=:
   179    //     ./in.cue:7:5
   180    //     ./in.cue:5:5
   181    // fib: non-concrete value int in operand to <:
   182    //     ./in.cue:10:5
   183    //     ./in.cue:5:5
   184    n: (int){ int }
   185  }
   186  fib1: (int){ 1 }
   187  fib2: (int){ 1 }
   188  fib3: (_|_){
   189    // [structural cycle] structural cycle:
   190    //     ./in.cue:3:25
   191    // structural cycle:
   192    //     ./in.cue:8:38
   193  }
   194  fib7: (_|_){
   195    // [structural cycle] structural cycle:
   196    //     ./in.cue:3:25
   197    // structural cycle:
   198    //     ./in.cue:8:9
   199    // structural cycle:
   200    //     ./in.cue:8:38
   201  }
   202  fib12: (_|_){
   203    // [structural cycle] structural cycle:
   204    //     ./in.cue:3:25
   205    // structural cycle:
   206    //     ./in.cue:8:9
   207    // structural cycle:
   208    //     ./in.cue:8:38
   209  }
   210}
   211-- diff/todo/p2 --
   212Elimination of unnecessary, but potentially useful, errors.

View as plain text