)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"ca6e8afb64bc10f38c47a16c2020fb168caa2156","unresolved":true,"context_lines":[{"line_number":9,"context_line":"This wires up the new bindings setup logic to be able to thread"},{"line_number":10,"context_line":"through \u0026 compile dynamic attributes in recursive attrs."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"It seems like we don\u0027t actually need to retain the phasing of Nix"},{"line_number":13,"context_line":"exactly, as we can use the phantom mechanism to declare all locals"},{"line_number":14,"context_line":"without making the dynamic ones accessible."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"86ffc3e9_0a212183","line":12,"updated":"2022-09-28 13:00:35.000000000","message":"I guess so, yeah.\n\nThis would imply the stance that the fact that you can observe partially constructed attribute sets is indeed a bug. This is fair enough, I believe, since allowing this observation also allows observing evaluation order which ideally is opaque to the language\u0027s user.","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"ac13416df1827337a425643635113c85b966f1ce","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This wires up the new bindings setup logic to be able to thread"},{"line_number":10,"context_line":"through \u0026 compile dynamic attributes in recursive attrs."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"It seems like we don\u0027t actually need to retain the phasing of Nix"},{"line_number":13,"context_line":"exactly, as we can use the phantom mechanism to declare all locals"},{"line_number":14,"context_line":"without making the dynamic ones accessible."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"a2fb7632_408ad81c","line":12,"in_reply_to":"86ffc3e9_0a212183","updated":"2022-09-29 10:41:29.000000000","message":"I\u0027m honestly not even sure how we\u0027d implement that bug, and I think it\u0027s best we don\u0027t go there :p","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"}],"tvix/eval/src/compiler/bindings.rs":[{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"1b42ae8f19ed3ff9ad20750dd10e6cc100e33cea","unresolved":true,"context_lines":[{"line_number":234,"context_line":"                    slot: self.scope_mut().declare_phantom(key_span, false),"},{"line_number":235,"context_line":"                },"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"                Some(name) \u003d\u003e KeySlot::None { name },"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                None if kind.is_attrs() \u003d\u003e KeySlot::Dynamic {"},{"line_number":240,"context_line":"                    attr: path.pop().unwrap(),"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"f2bba94a_b225834e","line":237,"updated":"2022-09-28 12:53:47.000000000","message":"I think it\u0027d read a bit cleaner to just have a block with an if {} else {} in both cases.","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"9e134828d985e988b98bcf14bfe244f96c173340","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                    slot: self.scope_mut().declare_phantom(key_span, false),"},{"line_number":235,"context_line":"                },"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"                Some(name) \u003d\u003e KeySlot::None { name },"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                None if kind.is_attrs() \u003d\u003e KeySlot::Dynamic {"},{"line_number":240,"context_line":"                    attr: path.pop().unwrap(),"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"fccbed49_ff755c42","line":237,"in_reply_to":"f2bba94a_b225834e","updated":"2022-09-29 11:42:42.000000000","message":"Fixing in a separate CL to avoid conflicting too hard.","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"1b42ae8f19ed3ff9ad20750dd10e6cc100e33cea","unresolved":true,"context_lines":[{"line_number":237,"context_line":"                Some(name) \u003d\u003e KeySlot::None { name },"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                None if kind.is_attrs() \u003d\u003e KeySlot::Dynamic {"},{"line_number":240,"context_line":"                    attr: path.pop().unwrap(),"},{"line_number":241,"context_line":"                    slot: self.scope_mut().declare_phantom(key_span, false),"},{"line_number":242,"context_line":"                },"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"6ed3f6a5_c90cd94c","line":240,"range":{"start_line":240,"start_character":31,"end_line":240,"end_character":34},"updated":"2022-09-28 12:53:47.000000000","message":"Note that this is going to do the wrong thing as soon as we have `path.len() \u003e 1`.","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"9e134828d985e988b98bcf14bfe244f96c173340","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                Some(name) \u003d\u003e KeySlot::None { name },"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"                None if kind.is_attrs() \u003d\u003e KeySlot::Dynamic {"},{"line_number":240,"context_line":"                    attr: path.pop().unwrap(),"},{"line_number":241,"context_line":"                    slot: self.scope_mut().declare_phantom(key_span, false),"},{"line_number":242,"context_line":"                },"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"e79fc022_469d73f2","line":240,"range":{"start_line":240,"start_character":31,"end_line":240,"end_character":34},"in_reply_to":"6ed3f6a5_c90cd94c","updated":"2022-09-29 11:42:42.000000000","message":"Ack","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"1b42ae8f19ed3ff9ad20750dd10e6cc100e33cea","unresolved":true,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"                    // Dynamic values are never resolvable (as their names are"},{"line_number":259,"context_line":"                    // of course only known at runtime)."},{"line_number":260,"context_line":"                    KeySlot::Dynamic { .. } \u003d\u003e self.scope_mut().declare_phantom(key_span, false),"},{"line_number":261,"context_line":"                },"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"                // In non-recursive attribute sets, the value is inaccessible"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"c0435436_344c33f0","line":260,"updated":"2022-09-28 12:53:47.000000000","message":"Maybe note here that this is unreachable if `BindingsKind::LetIn`, since it confused me at first.","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"9e134828d985e988b98bcf14bfe244f96c173340","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"                    // Dynamic values are never resolvable (as their names are"},{"line_number":259,"context_line":"                    // of course only known at runtime)."},{"line_number":260,"context_line":"                    KeySlot::Dynamic { .. } \u003d\u003e self.scope_mut().declare_phantom(key_span, false),"},{"line_number":261,"context_line":"                },"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"                // In non-recursive attribute sets, the value is inaccessible"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"c43abf85_4f09b88c","line":260,"in_reply_to":"c0435436_344c33f0","updated":"2022-09-29 11:42:42.000000000","message":"Done","commit_id":"6d2e4169938f29b948f95b8633bc0f337c98cc38"}]}
