...

Text file src/cuelang.org/go/cue/testdata/comprehensions/nested2.txtar

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

     1-- in.cue --
     2given: {
     3	INC: USD: 2.0
     4	USD: GBP: 3.0
     5}
     6hydrated: {
     7	for k, v in given {
     8		for k1, r in v {
     9			"\(k)": "\(k)":   1.0
    10			"\(k1)": "\(k1)": 1.0
    11			"\(k)": "\(k1)":  r
    12			"\(k1)": "\(k)":  number
    13		}
    14	}
    15}
    16
    17foo: {
    18	a: 10
    19	if a < 20 {
    20		if a < 50 {
    21			b: 20
    22		}
    23	}
    24}
    25
    26indirectlyNested: {
    27	a: true // must be declared outside of the nested comprehensions for test.
    28	if true {
    29		b: {
    30			if a {
    31				a
    32			}
    33		}
    34	}
    35}
    36
    37directlyNestedEmpty: {
    38	a: true
    39	if true {
    40		if a {
    41		}
    42	}
    43}
    44
    45directlyDoublyNestedEmpty: {
    46	a: true 
    47	if true {
    48		if a {
    49		}
    50	}
    51}
    52
    53indirectlyDoublyNestedEmpty: {
    54	a: true
    55	b: {
    56		if true {
    57			if a {
    58				if a {
    59					a
    60				}
    61			}
    62			if a {
    63				a
    64			}
    65		}
    66	}
    67}
    68
    69indirectlyDoublyNested: {
    70	a: true
    71	if true {
    72		if a {
    73			if a {
    74				b: 1
    75			}
    76		}
    77		if a {
    78			c: 1
    79		}
    80	}
    81}
    82
    83// This case used to trigger an over-aggressive deduplication.
    84issue1974: {
    85	X: {
    86		foo: {
    87			bar: ""
    88			baz: ""
    89		}
    90	}
    91	out: {
    92		for k, v in X for vk, vv in v {
    93			"\(k)": "\(vk)": vv
    94		}
    95	}
    96}
    97
    98-- out/eval/stats --
    99Leaks:  0
   100Freed:  43
   101Reused: 38
   102Allocs: 5
   103Retain: 4
   104
   105Unifications: 43
   106Conjuncts:    74
   107Disjuncts:    43
   108-- out/eval --
   109(struct){
   110  given: (struct){
   111    INC: (struct){
   112      USD: (float){ 2.0 }
   113    }
   114    USD: (struct){
   115      GBP: (float){ 3.0 }
   116    }
   117  }
   118  hydrated: (struct){
   119    INC: (struct){
   120      INC: (float){ 1.0 }
   121      USD: (float){ 2.0 }
   122    }
   123    USD: (struct){
   124      USD: (float){ 1.0 }
   125      INC: (number){ number }
   126      GBP: (float){ 3.0 }
   127    }
   128    GBP: (struct){
   129      GBP: (float){ 1.0 }
   130      USD: (number){ number }
   131    }
   132  }
   133  foo: (struct){
   134    a: (int){ 10 }
   135    b: (int){ 20 }
   136  }
   137  indirectlyNested: (struct){
   138    a: (bool){ true }
   139    b: (bool){ true }
   140  }
   141  directlyNestedEmpty: (struct){
   142    a: (bool){ true }
   143  }
   144  directlyDoublyNestedEmpty: (struct){
   145    a: (bool){ true }
   146  }
   147  indirectlyDoublyNestedEmpty: (struct){
   148    a: (bool){ true }
   149    b: (bool){ true }
   150  }
   151  indirectlyDoublyNested: (struct){
   152    a: (bool){ true }
   153    c: (int){ 1 }
   154    b: (int){ 1 }
   155  }
   156  issue1974: (struct){
   157    X: (struct){
   158      foo: (struct){
   159        bar: (string){ "" }
   160        baz: (string){ "" }
   161      }
   162    }
   163    out: (struct){
   164      foo: (struct){
   165        bar: (string){ "" }
   166        baz: (string){ "" }
   167      }
   168    }
   169  }
   170}
   171-- out/compile --
   172--- in.cue
   173{
   174  given: {
   175    INC: {
   176      USD: 2.0
   177    }
   178    USD: {
   179      GBP: 3.0
   180    }
   181  }
   182  hydrated: {
   183    for k, v in 〈1;given〉 {
   184      for k1, r in 〈1;v〉 {
   185        "\(〈3;k〉)": {
   186          "\(〈4;k〉)": 1.0
   187        }
   188        "\(〈1;k1〉)": {
   189          "\(〈2;k1〉)": 1.0
   190        }
   191        "\(〈3;k〉)": {
   192          "\(〈2;k1〉)": 〈2;r〉
   193        }
   194        "\(〈1;k1〉)": {
   195          "\(〈4;k〉)": number
   196        }
   197      }
   198    }
   199  }
   200  foo: {
   201    a: 10
   202    if (〈0;a〉 < 20) {
   203      if (〈1;a〉 < 50) {
   204        b: 20
   205      }
   206    }
   207  }
   208  indirectlyNested: {
   209    a: true
   210    if true {
   211      b: {
   212        if 〈2;a〉 {
   213          〈3;a〉
   214        }
   215      }
   216    }
   217  }
   218  directlyNestedEmpty: {
   219    a: true
   220    if true {
   221      if 〈1;a〉 {}
   222    }
   223  }
   224  directlyDoublyNestedEmpty: {
   225    a: true
   226    if true {
   227      if 〈1;a〉 {}
   228    }
   229  }
   230  indirectlyDoublyNestedEmpty: {
   231    a: true
   232    b: {
   233      if true {
   234        if 〈2;a〉 {
   235          if 〈3;a〉 {
   236            〈4;a〉
   237          }
   238        }
   239        if 〈2;a〉 {
   240          〈3;a〉
   241        }
   242      }
   243    }
   244  }
   245  indirectlyDoublyNested: {
   246    a: true
   247    if true {
   248      if 〈1;a〉 {
   249        if 〈2;a〉 {
   250          b: 1
   251        }
   252      }
   253      if 〈1;a〉 {
   254        c: 1
   255      }
   256    }
   257  }
   258  issue1974: {
   259    X: {
   260      foo: {
   261        bar: ""
   262        baz: ""
   263      }
   264    }
   265    out: {
   266      for k, v in 〈1;X〉 for vk, vv in 〈0;v〉 {
   267        "\(〈2;k〉)": {
   268          "\(〈2;vk〉)": 〈2;vv〉
   269        }
   270      }
   271    }
   272  }
   273}

View as plain text