...

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

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

     1-- in.cue --
     2import "regexp"
     3
     4// Issue #655
     5// When evaluating a value into a struct, and then back into a value, the
     6// evaluation mode flips from Partial to AllConjunctsDone to Back. This is
     7// typically not an issue, but if a referred field is within a struct generated
     8// by a builtin, effectively the entire struct needs to be evaluated and special
     9// care should be taking to not evaluate too early.
    10builtinCyclePerm0: {
    11	X: "mod.test"
    12
    13	Y: {
    14		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    15		host:        #components.host
    16	}
    17
    18	X: Y.host
    19}
    20
    21builtinCyclePerm1: {
    22	X: Y.host
    23
    24	Y: {
    25		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    26		host:        #components.host
    27	}
    28
    29	X: "mod.test"
    30}
    31
    32builtinCyclePerm2: {
    33	Y: {
    34		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    35		host:        #components.host
    36	}
    37
    38	X: Y.host
    39	X: "mod.test"
    40}
    41
    42builtinCyclePerm3: {
    43	Y: {
    44		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    45		host:        #components.host
    46	}
    47
    48	X: "mod.test"
    49	X: Y.host
    50}
    51
    52builtinCyclePerm4: {
    53	X: "mod.test"
    54	X: Y.host
    55
    56	Y: {
    57		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    58		host:        #components.host
    59	}
    60}
    61
    62builtinCyclePerm5: {
    63	X: Y.host
    64	X: "mod.test"
    65
    66	Y: {
    67		#components: regexp.FindNamedSubmatch(#"^(?P<host>[[:alnum:].]+)$"#, X)
    68		host:        #components.host
    69	}
    70}
    71-- out/eval/stats --
    72Leaks:  0
    73Freed:  37
    74Reused: 30
    75Allocs: 7
    76Retain: 34
    77
    78Unifications: 37
    79Conjuncts:    53
    80Disjuncts:    61
    81-- out/eval --
    82(struct){
    83  builtinCyclePerm0: (struct){
    84    X: (string){ "mod.test" }
    85    Y: (struct){
    86      #components: (#struct){
    87        host: (string){ "mod.test" }
    88      }
    89      host: (string){ "mod.test" }
    90    }
    91  }
    92  builtinCyclePerm1: (struct){
    93    X: (string){ "mod.test" }
    94    Y: (struct){
    95      #components: (#struct){
    96        host: (string){ "mod.test" }
    97      }
    98      host: (string){ "mod.test" }
    99    }
   100  }
   101  builtinCyclePerm2: (struct){
   102    Y: (struct){
   103      #components: (#struct){
   104        host: (string){ "mod.test" }
   105      }
   106      host: (string){ "mod.test" }
   107    }
   108    X: (string){ "mod.test" }
   109  }
   110  builtinCyclePerm3: (struct){
   111    Y: (struct){
   112      #components: (#struct){
   113        host: (string){ "mod.test" }
   114      }
   115      host: (string){ "mod.test" }
   116    }
   117    X: (string){ "mod.test" }
   118  }
   119  builtinCyclePerm4: (struct){
   120    X: (string){ "mod.test" }
   121    Y: (struct){
   122      #components: (#struct){
   123        host: (string){ "mod.test" }
   124      }
   125      host: (string){ "mod.test" }
   126    }
   127  }
   128  builtinCyclePerm5: (struct){
   129    X: (string){ "mod.test" }
   130    Y: (struct){
   131      #components: (#struct){
   132        host: (string){ "mod.test" }
   133      }
   134      host: (string){ "mod.test" }
   135    }
   136  }
   137}
   138-- out/compile --
   139--- in.cue
   140{
   141  builtinCyclePerm0: {
   142    X: "mod.test"
   143    Y: {
   144      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   145      host: 〈0;#components〉.host
   146    }
   147    X: 〈0;Y〉.host
   148  }
   149  builtinCyclePerm1: {
   150    X: 〈0;Y〉.host
   151    Y: {
   152      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   153      host: 〈0;#components〉.host
   154    }
   155    X: "mod.test"
   156  }
   157  builtinCyclePerm2: {
   158    Y: {
   159      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   160      host: 〈0;#components〉.host
   161    }
   162    X: 〈0;Y〉.host
   163    X: "mod.test"
   164  }
   165  builtinCyclePerm3: {
   166    Y: {
   167      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   168      host: 〈0;#components〉.host
   169    }
   170    X: "mod.test"
   171    X: 〈0;Y〉.host
   172  }
   173  builtinCyclePerm4: {
   174    X: "mod.test"
   175    X: 〈0;Y〉.host
   176    Y: {
   177      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   178      host: 〈0;#components〉.host
   179    }
   180  }
   181  builtinCyclePerm5: {
   182    X: 〈0;Y〉.host
   183    X: "mod.test"
   184    Y: {
   185      #components: 〈import;regexp〉.FindNamedSubmatch("^(?P<host>[[:alnum:].]+)$", 〈1;X〉)
   186      host: 〈0;#components〉.host
   187    }
   188  }
   189}

View as plain text