...

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

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

     1-- in.cue --
     2// All these should pass. These look like recursive inlined calls, but they are
     3// not.
     4
     5ok1: {
     6	f: {
     7		in:  number
     8		out: in
     9	}
    10	k00: 0
    11	k10: (f & {in: k00}).out
    12	k20: (f & {in: k10}).out
    13	k30: (f & {in: k20}).out
    14}
    15
    16ok2: {
    17	f: {
    18		in:  number
    19		out: in
    20	}
    21	k00: 0
    22	k10: {(f & {in: k00}).out}
    23	k20: {(f & {in: k10}).out}
    24	k30: {(f & {in: k20}).out}
    25}
    26
    27ok3: {
    28	f: {
    29		in:  number
    30		out: in
    31	}
    32	k00: 0
    33	k10: {close((f & {in: k00})).out}
    34	k20: {close((f & {in: k10})).out}
    35	k30: {close((f & {in: k20})).out}
    36}
    37
    38ok4: {
    39	f: {
    40		in:  number
    41		out: in
    42	}
    43	k00: 0
    44	k10: {out: {(f & {in: k00}).out}}.out
    45	k20: {out: {(f & {in: k10}).out}}.out
    46	k30: {out: {(f & {in: k20}).out}}.out
    47}
    48
    49// Issue #1708
    50issue1708: {
    51	#add10: {
    52		in: number
    53		a10: { i: in, o: i + 10 }
    54		out: a10.o
    55	}
    56	k00: 0
    57	k10: (#add10 & {in: k00}).out
    58	k20: (#add10 & {in: k10}).out
    59	k30: (#add10 & {in: k20}).out
    60}
    61
    62-- out/eval/stats --
    63Leaks:  291
    64Freed:  389
    65Reused: 379
    66Allocs: 301
    67Retain: 1047
    68
    69Unifications: 680
    70Conjuncts:    2709
    71Disjuncts:    1414
    72-- out/evalalpha --
    73(struct){
    74  ok1: (struct){
    75    f: (struct){
    76      in: (number){ number }
    77      out: (number){ number }
    78    }
    79    k00: (int){ 0 }
    80    k10: (int){ 0 }
    81    k20: (int){ 0 }
    82    k30: (int){ 0 }
    83  }
    84  ok2: (struct){
    85    f: (struct){
    86      in: (number){ number }
    87      out: (number){ number }
    88    }
    89    k00: (int){ 0 }
    90    k10: (int){ 0 }
    91    k20: (int){ 0 }
    92    k30: (int){ 0 }
    93  }
    94  ok3: (struct){
    95    f: (struct){
    96      in: (number){ number }
    97      out: (number){ number }
    98    }
    99    k00: (int){ 0 }
   100    k10: (int){ 0 }
   101    k20: (int){ 0 }
   102    k30: (int){ 0 }
   103  }
   104  ok4: (struct){
   105    f: (struct){
   106      in: (number){ number }
   107      out: (number){ number }
   108    }
   109    k00: (int){ 0 }
   110    k10: (int){ 0 }
   111    k20: (int){ 0 }
   112    k30: (int){ 0 }
   113  }
   114  issue1708: (struct){
   115    #add10: (#struct){
   116      in: (number){ number }
   117      a10: (#struct){
   118        i: (number){ number }
   119        o: (_|_){
   120          // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
   121          //     ./in.cue:52:20
   122          //     ./in.cue:51:7
   123        }
   124      }
   125      out: (_|_){
   126        // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
   127        //     ./in.cue:52:20
   128        //     ./in.cue:51:7
   129      }
   130    }
   131    k00: (int){ 0 }
   132    k10: (int){ 10 }
   133    k20: (int){ 20 }
   134    k30: (int){ 30 }
   135  }
   136}
   137-- diff/-out/evalalpha<==>+out/eval --
   138diff old new
   139--- old
   140+++ new
   141@@ -48,7 +48,6 @@
   142           // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
   143           //     ./in.cue:52:20
   144           //     ./in.cue:51:7
   145-          //     ./in.cue:52:13
   146         }
   147       }
   148       out: (_|_){
   149@@ -55,7 +54,6 @@
   150         // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
   151         //     ./in.cue:52:20
   152         //     ./in.cue:51:7
   153-        //     ./in.cue:52:13
   154       }
   155     }
   156     k00: (int){ 0 }
   157-- diff/todo/p2 --
   158error positions
   159-- out/eval --
   160(struct){
   161  ok1: (struct){
   162    f: (struct){
   163      in: (number){ number }
   164      out: (number){ number }
   165    }
   166    k00: (int){ 0 }
   167    k10: (int){ 0 }
   168    k20: (int){ 0 }
   169    k30: (int){ 0 }
   170  }
   171  ok2: (struct){
   172    f: (struct){
   173      in: (number){ number }
   174      out: (number){ number }
   175    }
   176    k00: (int){ 0 }
   177    k10: (int){ 0 }
   178    k20: (int){ 0 }
   179    k30: (int){ 0 }
   180  }
   181  ok3: (struct){
   182    f: (struct){
   183      in: (number){ number }
   184      out: (number){ number }
   185    }
   186    k00: (int){ 0 }
   187    k10: (int){ 0 }
   188    k20: (int){ 0 }
   189    k30: (int){ 0 }
   190  }
   191  ok4: (struct){
   192    f: (struct){
   193      in: (number){ number }
   194      out: (number){ number }
   195    }
   196    k00: (int){ 0 }
   197    k10: (int){ 0 }
   198    k20: (int){ 0 }
   199    k30: (int){ 0 }
   200  }
   201  issue1708: (struct){
   202    #add10: (#struct){
   203      in: (number){ number }
   204      a10: (#struct){
   205        i: (number){ number }
   206        o: (_|_){
   207          // [incomplete] issue1708.#add10.a10.o: non-concrete value number in operand to +:
   208          //     ./in.cue:52:20
   209          //     ./in.cue:51:7
   210          //     ./in.cue:52:13
   211        }
   212      }
   213      out: (_|_){
   214        // [incomplete] issue1708.#add10.out: non-concrete value number in operand to +:
   215        //     ./in.cue:52:20
   216        //     ./in.cue:51:7
   217        //     ./in.cue:52:13
   218      }
   219    }
   220    k00: (int){ 0 }
   221    k10: (int){ 10 }
   222    k20: (int){ 20 }
   223    k30: (int){ 30 }
   224  }
   225}
   226-- out/compile --
   227--- in.cue
   228{
   229  ok1: {
   230    f: {
   231      in: number
   232      out: 〈0;in〉
   233    }
   234    k00: 0
   235    k10: (〈0;f〉 & {
   236      in: 〈1;k00〉
   237    }).out
   238    k20: (〈0;f〉 & {
   239      in: 〈1;k10〉
   240    }).out
   241    k30: (〈0;f〉 & {
   242      in: 〈1;k20〉
   243    }).out
   244  }
   245  ok2: {
   246    f: {
   247      in: number
   248      out: 〈0;in〉
   249    }
   250    k00: 0
   251    k10: {
   252      (〈1;f〉 & {
   253        in: 〈2;k00〉
   254      }).out
   255    }
   256    k20: {
   257      (〈1;f〉 & {
   258        in: 〈2;k10〉
   259      }).out
   260    }
   261    k30: {
   262      (〈1;f〉 & {
   263        in: 〈2;k20〉
   264      }).out
   265    }
   266  }
   267  ok3: {
   268    f: {
   269      in: number
   270      out: 〈0;in〉
   271    }
   272    k00: 0
   273    k10: {
   274      close((〈1;f〉 & {
   275        in: 〈2;k00〉
   276      })).out
   277    }
   278    k20: {
   279      close((〈1;f〉 & {
   280        in: 〈2;k10〉
   281      })).out
   282    }
   283    k30: {
   284      close((〈1;f〉 & {
   285        in: 〈2;k20〉
   286      })).out
   287    }
   288  }
   289  ok4: {
   290    f: {
   291      in: number
   292      out: 〈0;in〉
   293    }
   294    k00: 0
   295    k10: {
   296      out: {
   297        (〈2;f〉 & {
   298          in: 〈3;k00〉
   299        }).out
   300      }
   301    }.out
   302    k20: {
   303      out: {
   304        (〈2;f〉 & {
   305          in: 〈3;k10〉
   306        }).out
   307      }
   308    }.out
   309    k30: {
   310      out: {
   311        (〈2;f〉 & {
   312          in: 〈3;k20〉
   313        }).out
   314      }
   315    }.out
   316  }
   317  issue1708: {
   318    #add10: {
   319      in: number
   320      a10: {
   321        i: 〈1;in〉
   322        o: (〈0;i〉 + 10)
   323      }
   324      out: 〈0;a10〉.o
   325    }
   326    k00: 0
   327    k10: (〈0;#add10〉 & {
   328      in: 〈1;k00〉
   329    }).out
   330    k20: (〈0;#add10〉 & {
   331      in: 〈1;k10〉
   332    }).out
   333    k30: (〈0;#add10〉 & {
   334      in: 〈1;k20〉
   335    }).out
   336  }
   337}

View as plain text