cuelang.org/go@v0.10.1/cue/testdata/eval/insertion.txtar (about)

     1  # Tests various patterns of insertion of conjuncts.
     2  # See https://cuelang.org/issues/2169
     3  
     4  -- a.cue --
     5  embeddingDirect: t1: {
     6  	#a: _
     7  	_
     8  } & {
     9  	#a: "s"
    10  	#a
    11  }
    12  
    13  embeddingExpr: t1: {
    14  	#a: _
    15  	_
    16  } & {
    17  	#a: "s"
    18  	[ #a ][0]
    19  }
    20  
    21  unifiedDirect: {
    22  	t1: {
    23  		#a: _
    24  		_
    25  	}
    26  	t1: {
    27  		#a
    28  		#a: _
    29  	}
    30  	t1: {
    31  		_
    32  		#a: "s"
    33  	}
    34  }
    35  
    36  
    37  unifiedExpr: {
    38  	t1: {
    39  		#a: _
    40  		_
    41  	}
    42  	t1: {
    43  		[ #a ][0]
    44  		#a: _
    45  	}
    46  	t1: {
    47  		#a: "s"
    48  		_
    49  	}
    50  }
    51  
    52  // These two embeddings both add fields to each other's original source, which
    53  // then, in turn, needs to be added.
    54  cross: t1: {
    55  	a: {
    56  		b: {v: 1, a: w: 2}
    57  		// from b.a: {x: 2, b: y: 5}
    58  	}
    59  	b: {
    60  		a: {x: 2, b: y: 5}
    61  		// from a.b: {v: 1, a: v: 2}
    62  	}
    63  	a
    64  	b
    65  }
    66  
    67  -- complex.cue --
    68  // Multiple levels of insertion
    69  recursive: t1: {
    70  	e: {}
    71  	c: d: e: f: 1
    72  	c.d
    73  	c: d:
    74  		// This part gets embedded within t1, which ends up adding new fields
    75  		// to here, when then again need to be embedded in t1, which then
    76  		// will add more fields to node e.
    77  		c: d: e: g: 1
    78  }
    79  
    80  recursive: t2: {
    81  	c
    82  	c: c: g: 1
    83  }
    84  
    85  -- issue2169.cue --
    86  embeddedFunctionalExpr: {
    87  	#fn: {
    88  		#in: _
    89  		_
    90  	} & {
    91  		#in: "str"
    92  
    93  		({
    94  			#t: _
    95  			#t
    96  		} & {
    97  			#t: #in
    98  			_
    99  		}) + ""
   100  	}
   101  	#fn
   102  }
   103  -- out/eval/stats --
   104  Leaks:  8
   105  Freed:  59
   106  Reused: 54
   107  Allocs: 13
   108  Retain: 24
   109  
   110  Unifications: 67
   111  Conjuncts:    163
   112  Disjuncts:    73
   113  -- out/eval --
   114  (struct){
   115    embeddingDirect: (struct){
   116      t1: (string){
   117        "s"
   118        #a: (string){ "s" }
   119      }
   120    }
   121    embeddingExpr: (struct){
   122      t1: (string){
   123        "s"
   124        #a: (string){ "s" }
   125      }
   126    }
   127    unifiedDirect: (struct){
   128      t1: (string){
   129        "s"
   130        #a: (string){ "s" }
   131      }
   132    }
   133    unifiedExpr: (struct){
   134      t1: (string){
   135        "s"
   136        #a: (string){ "s" }
   137      }
   138    }
   139    cross: (struct){
   140      t1: (struct){
   141        a: (struct){
   142          b: (struct){
   143            v: (int){ 1 }
   144            a: (struct){
   145              w: (int){ 2 }
   146            }
   147            y: (int){ 5 }
   148          }
   149          x: (int){ 2 }
   150          w: (int){ 2 }
   151        }
   152        b: (struct){
   153          a: (struct){
   154            x: (int){ 2 }
   155            b: (struct){
   156              y: (int){ 5 }
   157            }
   158            w: (int){ 2 }
   159          }
   160          v: (int){ 1 }
   161          y: (int){ 5 }
   162        }
   163        x: (int){ 2 }
   164        y: (int){ 5 }
   165        v: (int){ 1 }
   166        w: (int){ 2 }
   167      }
   168    }
   169    recursive: (struct){
   170      t1: (struct){
   171        e: (struct){
   172          f: (int){ 1 }
   173          g: (int){ 1 }
   174        }
   175        c: (struct){
   176          d: (struct){
   177            e: (struct){
   178              f: (int){ 1 }
   179              g: (int){ 1 }
   180            }
   181            c: (struct){
   182              d: (struct){
   183                e: (struct){
   184                  g: (int){ 1 }
   185                }
   186              }
   187            }
   188          }
   189        }
   190      }
   191      t2: (struct){
   192        c: (struct){
   193          c: (struct){
   194            g: (int){ 1 }
   195          }
   196          g: (int){ 1 }
   197        }
   198        g: (int){ 1 }
   199      }
   200    }
   201    embeddedFunctionalExpr: (string){
   202      "str"
   203      #fn: (string){
   204        "str"
   205        #in: (string){ "str" }
   206      }
   207      #in: (string){ "str" }
   208    }
   209  }
   210  -- out/evalalpha --
   211  (struct){
   212    embeddingDirect: (struct){
   213      t1: (string){
   214        "s"
   215        #a: (string){ "s" }
   216      }
   217    }
   218    embeddingExpr: (struct){
   219      t1: (string){
   220        "s"
   221        #a: (string){ "s" }
   222      }
   223    }
   224    unifiedDirect: (struct){
   225      t1: (string){
   226        "s"
   227        #a: (string){ "s" }
   228      }
   229    }
   230    unifiedExpr: (struct){
   231      t1: (string){
   232        "s"
   233        #a: (string){ "s" }
   234      }
   235    }
   236    cross: (struct){
   237      t1: (struct){
   238        a: (struct){
   239          b: (struct){
   240            v: (int){ 1 }
   241            a: (struct){
   242              w: (int){ 2 }
   243            }
   244            y: (int){ 5 }
   245          }
   246          x: (int){ 2 }
   247          w: (int){ 2 }
   248        }
   249        b: (struct){
   250          a: (struct){
   251            x: (int){ 2 }
   252            b: (struct){
   253              y: (int){ 5 }
   254            }
   255            w: (int){ 2 }
   256          }
   257          v: (int){ 1 }
   258          y: (int){ 5 }
   259        }
   260        v: (int){ 1 }
   261        w: (int){ 2 }
   262        x: (int){ 2 }
   263        y: (int){ 5 }
   264      }
   265    }
   266    recursive: (struct){
   267      t1: (struct){
   268        e: (struct){
   269          f: (int){ 1 }
   270          g: (int){ 1 }
   271        }
   272        c: (struct){
   273          d: (struct){
   274            e: (struct){
   275              f: (int){ 1 }
   276              g: (int){ 1 }
   277            }
   278            c: (struct){
   279              d: (struct){
   280                e: (struct){
   281                  g: (int){ 1 }
   282                }
   283              }
   284            }
   285          }
   286        }
   287      }
   288      t2: (struct){
   289        c: (struct){
   290          c: (struct){
   291            g: (int){ 1 }
   292          }
   293          g: (int){ 1 }
   294        }
   295        g: (int){ 1 }
   296      }
   297    }
   298    embeddedFunctionalExpr: (string){
   299      "str"
   300      #fn: (string){
   301        "str"
   302        #in: (string){ "str" }
   303      }
   304      #in: (string){ "str" }
   305    }
   306  }
   307  -- diff/-out/evalalpha<==>+out/eval --
   308  diff old new
   309  --- old
   310  +++ new
   311  @@ -47,10 +47,10 @@
   312           v: (int){ 1 }
   313           y: (int){ 5 }
   314         }
   315  -      x: (int){ 2 }
   316  -      y: (int){ 5 }
   317         v: (int){ 1 }
   318         w: (int){ 2 }
   319  +      x: (int){ 2 }
   320  +      y: (int){ 5 }
   321       }
   322     }
   323     recursive: (struct){
   324  -- diff/todo/p3 --
   325  Reordering.
   326  -- out/compile --
   327  --- a.cue
   328  {
   329    embeddingDirect: {
   330      t1: ({
   331        #a: _
   332        _
   333      } & {
   334        #a: "s"
   335        〈0;#a〉
   336      })
   337    }
   338    embeddingExpr: {
   339      t1: ({
   340        #a: _
   341        _
   342      } & {
   343        #a: "s"
   344        [
   345          〈1;#a〉,
   346        ][0]
   347      })
   348    }
   349    unifiedDirect: {
   350      t1: {
   351        #a: _
   352        _
   353      }
   354      t1: {
   355        〈0;#a〉
   356        #a: _
   357      }
   358      t1: {
   359        _
   360        #a: "s"
   361      }
   362    }
   363    unifiedExpr: {
   364      t1: {
   365        #a: _
   366        _
   367      }
   368      t1: {
   369        [
   370          〈1;#a〉,
   371        ][0]
   372        #a: _
   373      }
   374      t1: {
   375        #a: "s"
   376        _
   377      }
   378    }
   379    cross: {
   380      t1: {
   381        a: {
   382          b: {
   383            v: 1
   384            a: {
   385              w: 2
   386            }
   387          }
   388        }
   389        b: {
   390          a: {
   391            x: 2
   392            b: {
   393              y: 5
   394            }
   395          }
   396        }
   397        〈0;a〉
   398        〈0;b〉
   399      }
   400    }
   401  }
   402  --- complex.cue
   403  {
   404    recursive: {
   405      t1: {
   406        e: {}
   407        c: {
   408          d: {
   409            e: {
   410              f: 1
   411            }
   412          }
   413        }
   414        〈0;c〉.d
   415        c: {
   416          d: {
   417            c: {
   418              d: {
   419                e: {
   420                  g: 1
   421                }
   422              }
   423            }
   424          }
   425        }
   426      }
   427    }
   428    recursive: {
   429      t2: {
   430        〈0;c〉
   431        c: {
   432          c: {
   433            g: 1
   434          }
   435        }
   436      }
   437    }
   438  }
   439  --- issue2169.cue
   440  {
   441    embeddedFunctionalExpr: {
   442      #fn: ({
   443        #in: _
   444        _
   445      } & {
   446        #in: "str"
   447        (({
   448          #t: _
   449          〈0;#t〉
   450        } & {
   451          #t: 〈1;#in〉
   452          _
   453        }) + "")
   454      })
   455      〈0;#fn〉
   456    }
   457  }