{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":10270250,"defaultBranch":"main","name":"react","ownerLogin":"facebook","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-05-24T16:15:54.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/69631?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1718325402.0","currentOid":""},"activityList":{"items":[{"before":"5d5d2a548bab43dc30c964426d3e4eadfebf4818","after":null,"ref":"refs/heads/gh/josephsavona/32/orig","pushedAt":"2024-06-14T00:36:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"}},{"before":"8d4924986386d2fd60b1176d4c660314983e6ac0","after":null,"ref":"refs/heads/gh/josephsavona/32/head","pushedAt":"2024-06-14T00:36:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"}},{"before":"8d4924986386d2fd60b1176d4c660314983e6ac0","after":null,"ref":"refs/heads/gh/josephsavona/32/base","pushedAt":"2024-06-14T00:36:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"}},{"before":"2ba462b665bb4691067e67db3cfbffc56959b788","after":"a07f5a3db5deb5a429bf2617525b6e66dc777e8c","ref":"refs/heads/main","pushedAt":"2024-06-14T00:36:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"[compiler] Provide support for custom fbt-like macro functions\n\nghstack-source-id: e3c6455ac2240914c3f25f3266a0cbb4a63971b5\nPull Request resolved: https://github.com/facebook/react/pull/29893","shortMessageHtmlLink":"[compiler] Provide support for custom fbt-like macro functions"}},{"before":"2ba462b665bb4691067e67db3cfbffc56959b788","after":"8d4924986386d2fd60b1176d4c660314983e6ac0","ref":"refs/heads/gh/josephsavona/32/base","pushedAt":"2024-06-14T00:36:38.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"Update on \"[compiler] Provide support for custom fbt-like macro functions\"\n\n\n\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler] Provide support for custom fbt-like macro funct…"}},{"before":"0005baf9b8ac0b39a91f9ea2a0f6d13cf42170a2","after":"d45efb4a0f3278fa7c271013f09b9101c5495b8d","ref":"refs/heads/gh/mofeiZ/1/orig","pushedAt":"2024-06-14T00:34:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][fixtures] test repros: codegen, alignScope, phis\n\nghstack-source-id: d30fd3ff5caf8dac16649c894367a4aea7d874a5\nPull Request resolved: https://github.com/facebook/react/pull/29878\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by @josephsavona\n- added bug-array-concat-should-capture","shortMessageHtmlLink":"[compiler][fixtures] test repros: codegen, alignScope, phis"}},{"before":"bda3a0aa1b8061e4e51e66835acc06d4b159c6ea","after":"e895c5111dd40ac1c6e4502f2c8ba392ba45443e","ref":"refs/heads/gh/mofeiZ/2/orig","pushedAt":"2024-06-14T00:34:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n\\# This case gets handled correctly\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n\n\\# But not this one!\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\nghstack-source-id: d9051284cec15caa1e0a6840cd20ead7acff122a\nPull Request resolved: https://github.com/facebook/react/pull/29891","shortMessageHtmlLink":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks"}},{"before":"91946159496a3bc9689805ff05c99452625f7c5b","after":"b718a775164934ace857ec0478c648437f190ac8","ref":"refs/heads/gh/mofeiZ/2/head","pushedAt":"2024-06-14T00:34:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\"\n\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n\\# This case gets handled correctly\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n\n\\# But not this one!\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][rewrite] Patch logic for aligning scopes to non…"}},{"before":"98231bc3e0dbb3e9b94e45d4193def588cd1e793","after":"c322f7e1d4f4908d32d4c7c756b7e2eaf5a424ed","ref":"refs/heads/gh/mofeiZ/1/head","pushedAt":"2024-06-14T00:34:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\"\n\n\n\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by josephsavona\n- added bug-array-concat-should-capture\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\""}},{"before":"d720486b12c635f42c41d9e9df7339388d094cc6","after":"3fa1cceed8ee3e259c71508c9ef2fe96052051f1","ref":"refs/heads/gh/mofeiZ/2/base","pushedAt":"2024-06-14T00:34:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update base for Update on \"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\"\n\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n\\# This case gets handled correctly\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n\n\\# But not this one!\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update base for Update on \"[compiler][rewrite] Patch logic for aligni…"}},{"before":"03387beaf60bcffacb7cafb52707c6686781c988","after":"e220b541ff00a132fb6259b86bb22b49372222fb","ref":"refs/heads/gh/mofeiZ/1/base","pushedAt":"2024-06-14T00:34:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update base for Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\"\n\n\n\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by josephsavona\n- added bug-array-concat-should-capture\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update base for Update on \"[compiler][fixtures] test repros: codegen,…"}},{"before":"546b4bfc88b6e2ab8a671d07a4d6dfc8414165bf","after":"0005baf9b8ac0b39a91f9ea2a0f6d13cf42170a2","ref":"refs/heads/gh/mofeiZ/1/orig","pushedAt":"2024-06-14T00:32:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][fixtures] test repros: codegen, alignScope, phis\n\nghstack-source-id: d30fd3ff5caf8dac16649c894367a4aea7d874a5\nPull Request resolved: https://github.com/facebook/react/pull/29878\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by @josephsavona\n- added bug-array-concat-should-capture","shortMessageHtmlLink":"[compiler][fixtures] test repros: codegen, alignScope, phis"}},{"before":"99db513a84198b4147fbd8101a16ae3382150f38","after":"bda3a0aa1b8061e4e51e66835acc06d4b159c6ea","ref":"refs/heads/gh/mofeiZ/2/orig","pushedAt":"2024-06-14T00:32:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\nghstack-source-id: d9051284cec15caa1e0a6840cd20ead7acff122a\nPull Request resolved: https://github.com/facebook/react/pull/29891","shortMessageHtmlLink":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks"}},{"before":"1ba72191a5e2f0f64d128b544bfc2f3ad3e8cd63","after":"91946159496a3bc9689805ff05c99452625f7c5b","ref":"refs/heads/gh/mofeiZ/2/head","pushedAt":"2024-06-14T00:32:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\"\n\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][rewrite] Patch logic for aligning scopes to non…"}},{"before":"bec373555a33cf6510748eed049ccb6ea76b0a1e","after":"98231bc3e0dbb3e9b94e45d4193def588cd1e793","ref":"refs/heads/gh/mofeiZ/1/head","pushedAt":"2024-06-14T00:32:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\"\n\n\n\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by josephsavona\n- added bug-array-concat-should-capture\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\""}},{"before":"0bceafbe9706431fc6118ddff7b6002ce76042da","after":"03387beaf60bcffacb7cafb52707c6686781c988","ref":"refs/heads/gh/mofeiZ/1/base","pushedAt":"2024-06-14T00:32:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update base for Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\"\n\n\n\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by josephsavona\n- added bug-array-concat-should-capture\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update base for Update on \"[compiler][fixtures] test repros: codegen,…"}},{"before":"bec373555a33cf6510748eed049ccb6ea76b0a1e","after":"d720486b12c635f42c41d9e9df7339388d094cc6","ref":"refs/heads/gh/mofeiZ/2/base","pushedAt":"2024-06-14T00:32:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update base for Update on \"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\"\n\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update base for Update on \"[compiler][rewrite] Patch logic for aligni…"}},{"before":"2162d0895901a20e8441036803f1bdec293994ea","after":"99db513a84198b4147fbd8101a16ae3382150f38","ref":"refs/heads/gh/mofeiZ/2/orig","pushedAt":"2024-06-14T00:31:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks\n\nOur previous logic for aligning scopes to block scopes constructs a tree of block and scope nodes. We ensured that blocks always mapped to the same node as their fallthroughs. e.g.\n```js\n// source\na();\nif (...) {\n b();\n}\nc();\n\n// HIR\nbb0:\na()\nif test=... consequent=bb1 fallthrough=bb2\n\nbb1:\nb()\ngoto bb2\n\nbb2:\nc()\n\n// AlignReactiveScopesToBlockScopesHIR nodes\nRoot node (maps to both bb0 and bb2)\n |- bb1\n |- ...\n```\n\nThere are two issues with the existing implementation:\n1. Only scopes that overlap with the beginning of a block are aligned correctly. This is because the traversal does not store information about the block-fallthrough pair for scopes that begin *within* the block-fallthrough range.\n```\n ┌──────────────┐\n │ │\n block start block end\n\nscope start scope end\n│ │\n└───────────────┘\n┌──────────────┐\n│ │\nblock start block end\n\n scope start scope end\n │ │\n └───────────────┘\n```\n2. Only scopes that are directly used by a block is considered. See the `align-scopes-nested-block-structure` fixture for details.\n\nghstack-source-id: d9051284cec15caa1e0a6840cd20ead7acff122a\nPull Request resolved: https://github.com/facebook/react/pull/29891","shortMessageHtmlLink":"[compiler][rewrite] Patch logic for aligning scopes to non-value blocks"}},{"before":"2d6a434df5e6c1bf66be72c34de2f64bd1642b03","after":"1ba72191a5e2f0f64d128b544bfc2f3ad3e8cd63","ref":"refs/heads/gh/mofeiZ/2/head","pushedAt":"2024-06-14T00:31:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][draft] Patch logic for aligning scopes to non-value blocks\"\n\n\n\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][draft] Patch logic for aligning scopes to non-v…"}},{"before":"ca9779e7eb4a5671d99fd477e8e5a9bdc8d4801c","after":"5d5d2a548bab43dc30c964426d3e4eadfebf4818","ref":"refs/heads/gh/josephsavona/32/orig","pushedAt":"2024-06-14T00:18:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"[compiler] Provide support for custom fbt-like macro functions\n\nghstack-source-id: e3c6455ac2240914c3f25f3266a0cbb4a63971b5\nPull Request resolved: https://github.com/facebook/react/pull/29893","shortMessageHtmlLink":"[compiler] Provide support for custom fbt-like macro functions"}},{"before":"1469d951dab709c46853b48afd1aeabb12988af5","after":"8d4924986386d2fd60b1176d4c660314983e6ac0","ref":"refs/heads/gh/josephsavona/32/head","pushedAt":"2024-06-14T00:18:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"Update on \"[compiler] Provide support for custom fbt-like macro functions\"\n\n\n\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler] Provide support for custom fbt-like macro funct…"}},{"before":null,"after":"ca9779e7eb4a5671d99fd477e8e5a9bdc8d4801c","ref":"refs/heads/gh/josephsavona/32/orig","pushedAt":"2024-06-14T00:16:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"[compiler] Provide support for custom fbt-like macro functions\n\nghstack-source-id: 6c05e7aa20ba8cbd19c932b052ce4c744ed5f07b\nPull Request resolved: https://github.com/facebook/react/pull/29893","shortMessageHtmlLink":"[compiler] Provide support for custom fbt-like macro functions"}},{"before":null,"after":"1469d951dab709c46853b48afd1aeabb12988af5","ref":"refs/heads/gh/josephsavona/32/head","pushedAt":"2024-06-14T00:16:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"[compiler] Provide support for custom fbt-like macro functions\n\n[ghstack-poisoned]","shortMessageHtmlLink":"[compiler] Provide support for custom fbt-like macro functions"}},{"before":null,"after":"2ba462b665bb4691067e67db3cfbffc56959b788","ref":"refs/heads/gh/josephsavona/32/base","pushedAt":"2024-06-14T00:16:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"josephsavona","name":"Joseph Savona","path":"/josephsavona","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6425824?s=80&v=4"},"commit":{"message":"[compiler][playground] Make change detection work in playground\n\nSummary: The change detection mode was unavailable in the playground because the pragma was not a boolean. This fixes that by special casing it in pragma parsing, similar to validateNoCapitalizedCalls\n\nghstack-source-id: 4a8c17d21ab8b7936ca61c9dd1f7fdf8322614c9\nPull Request resolved: https://github.com/facebook/react/pull/29889","shortMessageHtmlLink":"[compiler][playground] Make change detection work in playground"}},{"before":null,"after":"2162d0895901a20e8441036803f1bdec293994ea","ref":"refs/heads/gh/mofeiZ/2/orig","pushedAt":"2024-06-13T20:10:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][draft] Patch logic for aligning scopes to non-value blocks\n\nghstack-source-id: 18fa632d430e36b62a103de48475d03fac4a915b\nPull Request resolved: https://github.com/facebook/react/pull/29891","shortMessageHtmlLink":"[compiler][draft] Patch logic for aligning scopes to non-value blocks"}},{"before":null,"after":"2d6a434df5e6c1bf66be72c34de2f64bd1642b03","ref":"refs/heads/gh/mofeiZ/2/head","pushedAt":"2024-06-13T20:10:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"[compiler][draft] Patch logic for aligning scopes to non-value blocks\n\n[ghstack-poisoned]","shortMessageHtmlLink":"[compiler][draft] Patch logic for aligning scopes to non-value blocks"}},{"before":null,"after":"bec373555a33cf6510748eed049ccb6ea76b0a1e","ref":"refs/heads/gh/mofeiZ/2/base","pushedAt":"2024-06-13T20:10:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mofeiZ","name":null,"path":"/mofeiZ","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/34200447?s=80&v=4"},"commit":{"message":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\"\n\n\n\n\nThe AlignReactiveScope bug should be simplest to fix, but it's also caught by an invariant assertion. I think a fix could be either keeping track of \"active\" block-fallthrough pairs (`retainWhere(pair => pair.range.end > current.instr[0].id)`) or following the approach in `assertValidBlockNesting`.\nI'm tempted to pull the value-block aligning logic out into its own pass (using the current `node` tree traversal), then align to non-value blocks with the `assertValidBlockNesting` approach. Happy to hear feedback on this though!\n\nThe other two are likely bigger issues, as they're not caught by static invariants.\n\nUpdate:\n- removed bug-phi-reference-effect as it's been patched by josephsavona\n- added bug-array-concat-should-capture\n\n[ghstack-poisoned]","shortMessageHtmlLink":"Update on \"[compiler][fixtures] test repros: codegen, alignScope, phis\""}},{"before":"a4cd2c7268c598dd8dc5b743f9367861865303f7","after":null,"ref":"refs/heads/gh/mvitousek/0/orig","pushedAt":"2024-06-13T18:02:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvitousek","name":"Michael Vitousek","path":"/mvitousek","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1629813?s=80&v=4"}},{"before":"8c1b357bf027bb13b8350671dd1039981a5503ad","after":null,"ref":"refs/heads/gh/mvitousek/0/head","pushedAt":"2024-06-13T18:02:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvitousek","name":"Michael Vitousek","path":"/mvitousek","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1629813?s=80&v=4"}},{"before":"8c1b357bf027bb13b8350671dd1039981a5503ad","after":null,"ref":"refs/heads/gh/mvitousek/0/base","pushedAt":"2024-06-13T18:02:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mvitousek","name":"Michael Vitousek","path":"/mvitousek","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1629813?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEZPWw9gA","startCursor":null,"endCursor":null}},"title":"Activity · facebook/react"}