// complex dependencies -- in.cue -- // Each task depends on the previous one in a different manner. root: [string]: $id: "valToOut" indirectValue: root.taskRootReference.x // This is not just a reference, but a copy of a new task. indirectTaskRoot: root.indirectTaskValueReference root: { a: { b: 3 } concreteValueInGeneratedSubfield: { x: { // reference in value of comprehension. // Even though the referenced value is concrete, we still consider // this to be a dependency. for x in [1] {foo: a.b} } index: int } indexReference: { // This inline struct currently causes a memory leak. This is fine // for now. // TODO(leak): fix this. x: [0, 1][concreteValueInGeneratedSubfield.index] } taskRootReference: { $after: indexReference x: 3 } indirectTaskValueReference: { x: indirectValue } indirectTaskRootReference: { x: indirectTaskRoot incomplete: _ } incompleteComprehensionSource: { x: {for x in indirectTaskRootReference.incomplete {}} } incompleteList: { x: [for x in [1] {incompleteComprehensionSource.x}] } incompleteGeneratedStruct: { x: {for x in [1] {foo: incompleteList.x}} } } -- out/run/errors -- -- out/run/t0 -- graph TD t0("root.a [Ready]") t1("root.concreteValueInGeneratedSubfield [Waiting]") t1-->t0 t2("root.indexReference [Waiting]") t2-->t1 t3("root.taskRootReference [Waiting]") t3-->t2 t4("root.indirectTaskValueReference [Waiting]") t4-->t3 t5("root.indirectTaskRootReference [Waiting]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t1 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Ready]") t1-->t0 t2("root.indexReference [Waiting]") t2-->t1 t3("root.taskRootReference [Waiting]") t3-->t2 t4("root.indirectTaskValueReference [Waiting]") t4-->t3 t5("root.indirectTaskRootReference [Waiting]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t1/value -- { b: 3 $id: "valToOut" } -- out/run/t2 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Ready]") t2-->t1 t3("root.taskRootReference [Waiting]") t3-->t2 t4("root.indirectTaskValueReference [Waiting]") t4-->t3 t5("root.indirectTaskRootReference [Waiting]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t2/value -- { x: { foo: 3 } $id: "valToOut" index: int } -- out/run/t3 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Ready]") t3-->t2 t4("root.indirectTaskValueReference [Waiting]") t4-->t3 t5("root.indirectTaskRootReference [Waiting]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t3/value -- { x: [0, 1][INDEX] $id: "valToOut" //cue:path: root.concreteValueInGeneratedSubfield.index let INDEX = int } -- out/run/t4 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Ready]") t4-->t3 t5("root.indirectTaskRootReference [Waiting]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t4/value -- { $after: { x: [0, 1][INDEX] $id: "valToOut" } $id: "valToOut" x: 3 //cue:path: root.concreteValueInGeneratedSubfield.index let INDEX = int } -- out/run/t5 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Terminated]") t4-->t3 t5("root.indirectTaskRootReference [Ready]") t5-->t4 t6("root.incompleteComprehensionSource [Waiting]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t5/value -- { x: 3 $id: "valToOut" } -- out/run/t6 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Terminated]") t4-->t3 t5("root.indirectTaskRootReference [Terminated]") t5-->t4 t6("root.incompleteComprehensionSource [Ready]") t6-->t5 t7("root.incompleteList [Waiting]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t6/value -- { x: { x: 3 $id: "valToOut" } $id: "valToOut" incomplete: _ } -- out/run/t7 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Terminated]") t4-->t3 t5("root.indirectTaskRootReference [Terminated]") t5-->t4 t6("root.incompleteComprehensionSource [Terminated]") t6-->t5 t7("root.incompleteList [Ready]") t7-->t6 t8("root.incompleteGeneratedStruct [Waiting]") t8-->t7 -- out/run/t7/value -- { x: { for x in INCOMPLETE {} } $id: "valToOut" //cue:path: root.indirectTaskRootReference.incomplete let INCOMPLETE = _ } -- out/run/t8 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Terminated]") t4-->t3 t5("root.indirectTaskRootReference [Terminated]") t5-->t4 t6("root.incompleteComprehensionSource [Terminated]") t6-->t5 t7("root.incompleteList [Terminated]") t7-->t6 t8("root.incompleteGeneratedStruct [Ready]") t8-->t7 -- out/run/t8/value -- { x: [X] $id: "valToOut" //cue:path: root.incompleteComprehensionSource.x let X = { for x in INCOMPLETE {} } //cue:path: root.indirectTaskRootReference.incomplete let INCOMPLETE = _ } -- out/run/t9 -- graph TD t0("root.a [Terminated]") t1("root.concreteValueInGeneratedSubfield [Terminated]") t1-->t0 t2("root.indexReference [Terminated]") t2-->t1 t3("root.taskRootReference [Terminated]") t3-->t2 t4("root.indirectTaskValueReference [Terminated]") t4-->t3 t5("root.indirectTaskRootReference [Terminated]") t5-->t4 t6("root.incompleteComprehensionSource [Terminated]") t6-->t5 t7("root.incompleteList [Terminated]") t7-->t6 t8("root.incompleteGeneratedStruct [Terminated]") t8-->t7 -- out/run/t9/value -- { x: { foo: [X_1] } $id: "valToOut" //cue:path: root.incompleteComprehensionSource.x let X_1 = { for x in INCOMPLETE {} } //cue:path: root.indirectTaskRootReference.incomplete let INCOMPLETE = _ } -- out/run/t1/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t2/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t3/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t4/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t5/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t6/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t7/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t8/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/t9/stats -- Leaks: 0 Freed: 0 Reused: 0 Allocs: 0 Retain: 0 Unifications: 0 Conjuncts: 0 Disjuncts: 0 -- out/run/stats/totals -- Leaks: 1 Freed: 0 Reused: 0 Allocs: 1 Retain: 1 Unifications: 1 Conjuncts: 1 Disjuncts: 1