-- in.cue --
a: {
	let X = Y
	let Y = c

	b: X
	c: 5
}

b: {
	let X = Y
	let Y = X

	b: X
	c: 5
}

fieldOffset: {
	a: {
		p1: {
			let X = {value: Y}
			let Y = 2
			x: X
		}
		p2: {
			x: X
			let Y = 2
			let X = {value: Y}
		}
	}
	b: {
		p1: {
			let X = {x: y: Y}
			let Y = 2
			x: X
		}
		p2: {
			x: X
			let Y = 2
			let X = {x: y: Y}
		}
	}
}

issue767: {
	#Foo: {
		let _#bar = {
			value: ""
		}
		let _#volmnts = {
			x: _#baz.value
		}
		let _#baz = {
			_#bar
		}
		out: _#volmnts
	}
}
-- out/compile --
b.let[]: cyclic references in let clause or alias:
    ./in.cue:10:10
--- in.cue
{
  a: {
    let X#1 = 〈0;let Y#2〉
    let Y#2 = 〈0;c〉
    b: 〈0;let X#1〉
    c: 5
  }
  b: {
    let X#3 = 〈0;let Y#4〉
    let Y#4 = 〈0;let X#3〉
    b: 〈0;let X#3〉
    c: 5
  }
  fieldOffset: {
    a: {
      p1: {
        let X#5 = {
          value: 〈1;let Y#6〉
        }
        let Y#6 = 2
        x: 〈0;let X#5〉
      }
      p2: {
        x: 〈0;let X#8〉
        let Y#7 = 2
        let X#8 = {
          value: 〈1;let Y#7〉
        }
      }
    }
    b: {
      p1: {
        let X#9 = {
          x: {
            y: 〈2;let Y#A〉
          }
        }
        let Y#A = 2
        x: 〈0;let X#9〉
      }
      p2: {
        x: 〈0;let X#C〉
        let Y#B = 2
        let X#C = {
          x: {
            y: 〈2;let Y#B〉
          }
        }
      }
    }
  }
  issue767: {
    #Foo: {
      let _#bar#D = {
        value: ""
      }
      let _#volmnts#E = {
        x: 〈1;let _#baz#F〉.value
      }
      let _#baz#F = {
        〈1;let _#bar#D〉
      }
      out: 〈0;let _#volmnts#E〉
    }
  }
}
-- out/eval --
b.let[]: cyclic references in let clause or alias:
    ./in.cue:10:10
