-- in.cue --
structShorthand: X={b: 3, c: X.b}

// Note that X and Y are subtly different, as they have different bindings:
// one binds to the field, the other to the value. In this case, that does not
// make a difference.
fieldAndValue: X=foo: Y={3, #sum: X + Y}

valueCycle: b: X=3 + X

// Issue #1003
listValueAlias: X = [1, 2, X[0]]
-- err.cue --
@experiment(structcmp)

cycleErr: X={
	err3: ==(X + 1)
	err3: 4
}
-- out/compile --
--- err.cue
{
  cycleErr: {
    err3: ==(〈1〉 + 1)
    err3: 4
  }
}
--- in.cue
{
  structShorthand: {
    b: 3
    c: 〈1〉.b
  }
  fieldAndValue: {
    foo: {
      3
      #sum: (〈1;foo〉 + 〈1〉)
    }
  }
  valueCycle: {
    b: (3 + 〈0〉)
  }
  listValueAlias: [
    1,
    2,
    〈1〉[0],
  ]
}
