[22m
+[2m );[22m
+[2m $[3] = onClick;[22m
+[2m $[4] = t1;[22m
+[2m $[5] = t2;[22m
+[2m $[6] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[6];[22m
+[2m }[22m
+[2m return t3;[22m
+[2m }[22m
+[2m function _temp2(item) {[22m
+[2m item.flag = true;[22m
+[32m- return
[39m
+[31m+ );[39m
+[2m }[22m
+[2m function _temp() {}[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: { id: 0, text: "Hello", flag: false } }],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
[22m
+
+[31m[1mFAIL:[22m[39m repro-dont-memoize-array-with-capturing-map-after-hook
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useEffect, useState} from 'react';[22m
+[2m import {mutate} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const x = [{...props.value}];[22m
+[2m useEffect(() => {}, []);[22m
+[2m const onClick = () => {[22m
+[2m console.log(x.length);[22m
+[2m };[22m
+[2m let y;[22m
+[2m return ([22m
+[2m
[22m
+[2m {x.map(item => {[22m
+[2m y = item;[22m
+[2m return {item.text};[22m
+[2m })}[22m
+[2m {mutate(y)}[22m
+[2m
[22m
+[2m );[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: {id: 0, text: 'Hello!'}}],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useEffect, useState } from "react";[22m
+[2m import { mutate } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = [{ ...props.value }];[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[32m- useEffect(_temp, t0);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useEffect(Object.freeze(_temp), Object.freeze(t0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m const onClick = () => {[22m
+[2m console.log(x.length);[22m
+[2m };[22m
+
+[2m let y;[22m
+
+[2m const t1 = x.map((item) => {[22m
+[2m y = item;[22m
+[32m- return
[39m
+[31m+ );[39m
+[2m });[22m
+[2m const t2 = mutate(y);[22m
+[2m let t3;[22m
+[2m if ($[1] !== onClick || $[2] !== t1 || $[3] !== t2) {[22m
+[2m t3 = ([22m
+[32m-
[39m
+[31m+
[39m
+[2m {t1}[22m
+[2m {t2}[22m
+[2m
[22m
+[2m );[22m
+[2m $[1] = onClick;[22m
+[2m $[2] = t1;[22m
+[2m $[3] = t2;[22m
+[2m $[4] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[4];[22m
+[2m }[22m
+[2m return t3;[22m
+[2m }[22m
+[2m function _temp() {}[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: { id: 0, text: "Hello!" } }],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
Hello!
[22m
+
+[31m[1mFAIL:[22m[39m repro-dce-circular-reference
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m function Component({data}) {[22m
+[2m let x = 0;[22m
+[2m for (const item of data) {[22m
+[2m const {current, other} = item;[22m
+[2m x += current;[22m
+[2m identity(other);[22m
+[2m }[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [[22m
+[2m {[22m
+[2m data: [[22m
+[2m {current: 2, other: 3},[22m
+[2m {current: 4, other: 5},[22m
+[2m ],[22m
+[2m },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m function Component(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { data } = t0;[22m
+[2m let x = 0;[22m
+[2m for (const item of data) {[22m
+[2m const { current, other } = item;[22m
+[2m x = x + current;[22m
+[2m identity(other);[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[0] !== x) {[22m
+[2m t1 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [[22m
+[2m {[22m
+[2m data: [[22m
+[2m { current: 2, other: 3 },[22m
+[2m { current: 4, other: 5 },[22m
+[2m ],[22m
+[2m },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [6][22m
+
+[31m[1mFAIL:[22m[39m repro-allocating-ternary-test-instruction-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, makeObject_Primitives} from 'shared-runtime';[22m
+
+[2m function useTest({cond}) {[22m
+[2m const val = makeObject_Primitives();[22m
+
+[2m useHook();[22m
+[2m /**[22m
+[2m * We don't technically need a reactive scope for this ternary as[22m
+[2m * it cannot produce newly allocated values.[22m
+[2m * While identity(...) may allocate, we can teach the compiler that[22m
+[2m * its result is only used as as a test condition[22m
+[2m */[22m
+[2m const result = identity(cond) ? val : null;[22m
+[2m return result;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useTest,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, makeObject_Primitives } from "shared-runtime";[22m
+
+[2m function useTest(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { cond } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = makeObject_Primitives();[22m
+[2m $[0] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[0];[22m
+[2m }[22m
+[2m const val = t1;[22m
+[32m-[39m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t2;[22m
+[2m if ($[1] !== cond) {[22m
+[2m t2 = identity(cond) ? val : null;[22m
+[2m $[1] = cond;[22m
+[2m $[2] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[2];[22m
+[2m }[22m
+[2m const result = t2;[22m
+[2m return result;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useTest,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: exception) useHook is not defined[22m
+
+[31m[1mFAIL:[22m[39m reordering-across-blocks
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {Stringify} from 'shared-runtime';[22m
+
+[2m function Component({config}) {[22m
+[2m /**[22m
+[2m * The original memoization is optimal in the sense that it has[22m
+[2m * one output (the object) and one dependency (`config`). Both[22m
+[2m * the `a` and `b` functions will have to be recreated whenever[22m
+[2m * `config` changes, cascading to update the object.[22m
+[2m *[22m
+[2m * However, we currently only consider consecutive scopes for[22m
+[2m * merging, so we first see the `a` scope, then the `b` scope,[22m
+[2m * and see that the output of the `a` scope is used later -[22m
+[2m * so we don't merge these scopes, and so on.[22m
+[2m *[22m
+[2m * The more optimal thing would be to build a dependency graph[22m
+[2m * of scopes so that we can see the data flow is along the lines[22m
+[2m * of:[22m
+[2m *[22m
+[2m * config[22m
+[2m * / \[22m
+[2m * [a] [b][22m
+[2m * \ /[22m
+[2m * [object][22m
+[2m *[22m
+[2m * All the scopes (shown in []) are transitively dependent on[22m
+[2m * `config`, so they can be merged.[22m
+[2m */[22m
+[2m const object = useMemo(() => {[22m
+[2m const a = event => {[22m
+[2m config?.onA?.(event);[22m
+[2m };[22m
+
+[2m const b = event => {[22m
+[2m config?.onB?.(event);[22m
+[2m };[22m
+
+[2m return {[22m
+[2m b,[22m
+[2m a,[22m
+[2m };[22m
+[2m }, [config]);[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { Stringify } from "shared-runtime";[22m
+
+[2m function Component(t0) {[22m
+[2m const $ = _c(9);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { config } = t0;[22m
+[2m let t1;[22m
+[2m let t2;[22m
+[2m if ($[0] !== config) {[22m
+[2m t2 = (event) => {[22m
+[2m config?.onA?.(event);[22m
+[2m };[22m
+[2m $[0] = config;[22m
+[2m $[1] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[1];[22m
+[2m }[22m
+[2m const a = t2;[22m
+[2m let t3;[22m
+[2m if ($[2] !== config) {[22m
+[2m t3 = (event_0) => {[22m
+[2m config?.onB?.(event_0);[22m
+[2m };[22m
+[2m $[2] = config;[22m
+[2m $[3] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[3];[22m
+[2m }[22m
+[2m const b = t3;[22m
+[2m let t4;[22m
+[2m if ($[4] !== b || $[5] !== a) {[22m
+[2m t4 = { b, a };[22m
+[2m $[4] = b;[22m
+[2m $[5] = a;[22m
+[2m $[6] = t4;[22m
+[2m } else {[22m
+[2m t4 = $[6];[22m
+[2m }[22m
+[2m t1 = t4;[22m
+[2m const object = t1;[22m
+[2m let t5;[22m
+[2m if ($[7] !== object) {[22m
+[32m- t5 =
;[39m
+[31m+ t5 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[7] = object;[22m
+[2m $[8] = t5;[22m
+[2m } else {[22m
+[2m t5 = $[8];[22m
+[2m }[22m
+[2m return t5;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: exception) Fixture not implemented[22m
+
+[31m[1mFAIL:[22m[39m renaming-jsx-tag-lowercase
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok)
{"value":{}}
{"value":{}}
+Forget:
+(kind: ok)
{"value":"[[ function params=0 ]]"}
{"value":"[[ function params=0 ]]"}
+
+[31m[1mFAIL:[22m[39m rename-source-variables
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableChangeVariableCodegen[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m const $ = 'module_$';[22m
+[2m const t0 = 'module_t0';[22m
+[2m const c_0 = 'module_c_0';[22m
+[2m function useFoo(props: {value: number}): number {[22m
+[2m const results = identity(props.value);[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return results;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableChangeVariableCodegen[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m const $ = "module_$";[22m
+[2m const t0 = "module_t0";[22m
+[2m const c_0 = "module_c_0";[22m
+[2m function useFoo(props) {[22m
+[2m const $0 = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const c_00 = $0[0] !== props.value;[22m
+[2m let t1;[22m
+[2m if (c_00) {[22m
+[2m t1 = identity(props.value);[22m
+[2m $0[0] = props.value;[22m
+[2m $0[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $0[1];[22m
+[2m }[22m
+[2m const results = t1;[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return results;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 0[22m
+[2m logs: ['module_$','module_t0','module_c_0'][22m
+
+[31m[1mFAIL:[22m[39m rename-source-variables-nested-object-method
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableChangeVariableCodegen[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m const $ = 'module_$';[22m
+[2m const t0 = 'module_t0';[22m
+[2m const c_0 = 'module_c_0';[22m
+[2m function useFoo(props: {value: number}): number {[22m
+[2m const a = {[22m
+[2m foo() {[22m
+[2m const b = {[22m
+[2m bar() {[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return identity(props.value);[22m
+[2m },[22m
+[2m };[22m
+[2m return b;[22m
+[2m },[22m
+[2m };[22m
+[2m return a.foo().bar();[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableChangeVariableCodegen[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m const $ = "module_$";[22m
+[2m const t0 = "module_t0";[22m
+[2m const c_0 = "module_c_0";[22m
+[2m function useFoo(props) {[22m
+[2m const $0 = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const c_00 = $0[0] !== props.value;[22m
+[2m let t1;[22m
+[2m if (c_00) {[22m
+[2m const a = {[22m
+[2m foo() {[22m
+[2m const b = {[22m
+[2m bar() {[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return identity(props.value);[22m
+[2m },[22m
+[2m };[22m
+[2m return b;[22m
+[2m },[22m
+[2m };[22m
+
+[2m t1 = a.foo().bar();[22m
+[2m $0[0] = props.value;[22m
+[2m $0[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $0[1];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 42[22m
+[2m logs: ['module_$','module_t0','module_c_0'][22m
+
+[31m[1mFAIL:[22m[39m rename-source-variables-nested-function
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableChangeVariableCodegen[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m const $ = 'module_$';[22m
+[2m const t0 = 'module_t0';[22m
+[2m const c_0 = 'module_c_0';[22m
+[2m function useFoo(props: {value: number}): number {[22m
+[2m const a = () => {[22m
+[2m const b = () => {[22m
+[2m const c = () => {[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return identity(props.value);[22m
+[2m };[22m
+[2m return c;[22m
+[2m };[22m
+[2m return b;[22m
+[2m };[22m
+[2m return a()()();[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableChangeVariableCodegen[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m const $ = "module_$";[22m
+[2m const t0 = "module_t0";[22m
+[2m const c_0 = "module_c_0";[22m
+[2m function useFoo(props) {[22m
+[2m const $0 = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m const c_00 = $0[0] !== props.value;[22m
+[2m let t1;[22m
+[2m if (c_00) {[22m
+[2m t1 = () => {[22m
+[2m const b = () => {[22m
+[2m const c = () => {[22m
+[2m console.log($);[22m
+[2m console.log(t0);[22m
+[2m console.log(c_0);[22m
+[2m return identity(props.value);[22m
+[2m };[22m
+[2m return c;[22m
+[2m };[22m
+[2m return b;[22m
+[2m };[22m
+[2m $0[0] = props.value;[22m
+[2m $0[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $0[1];[22m
+[2m }[22m
+[2m const a = t1;[22m
+[2m const c_2 = $0[2] !== a;[22m
+[2m let t2;[22m
+[2m if (c_2) {[22m
+[2m t2 = a()()();[22m
+[2m $0[2] = a;[22m
+[2m $0[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $0[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 42[22m
+[2m logs: ['module_$','module_t0','module_c_0'][22m
+
+[31m[1mFAIL:[22m[39m regexp-literal
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const pattern = /foo/g;[22m
+[2m const value = makeValue();[22m
+[2m // We treat RegExp instances as mutable objects (bc they are)[22m
+[2m // so by default we assume this could be mutating `value`:[22m
+[2m if (pattern.test(value)) {[22m
+[2m return
{value}
;[22m
+[2m }[22m
+[2m return
Default
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m let value;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m const pattern = /foo/g;[22m
+[2m value = makeValue();[22m
+
+[2m t0 = pattern.test(value);[22m
+[2m $[0] = t0;[22m
+[2m $[1] = value;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m value = $[1];[22m
+[2m }[22m
+[2m if (t0) {[22m
+[2m let t1;[22m
+[2m if ($[2] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 =
{value}
;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[3] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 =
Default
;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-parameter-mutate-in-effect
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok)
foo
+Forget:
+(kind: exception) Cannot add property current, object is not extensible
+
+[31m[1mFAIL:[22m[39m ref-like-name-in-useCallback
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import {useRef, useCallback} from 'react';[22m
+
+[2m function useCustomRef() {[22m
+[2m return useRef({click: () => {}});[22m
+[2m }[22m
+
+[2m function Foo() {[22m
+[2m const customRef = useCustomRef();[22m
+
+[2m const onClick = useCallback(() => {[22m
+[2m customRef.current?.click();[22m
+[2m }, []);[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import { useRef, useCallback } from "react";[22m
+
+[2m function useCustomRef() {[22m
+[2m const $ = _c(1);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = { click: _temp };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[32m- return useRef(t0);[39m
+[31m+ return (function () {[39m
+[31m+ const $res$ = useRef(Object.freeze(t0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m }[22m
+[2m function _temp() {}[22m
+
+[2m function Foo() {[22m
+[2m const $ = _c(3);[22m
+[32m- const customRef = useCustomRef();[39m
+[31m+ const customRef = (function () {[39m
+[31m+ const $res$ = useCustomRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m customRef.current?.click();[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onClick = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== onClick) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = onClick;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
[22m
+
+[31m[1mFAIL:[22m[39m ref-like-name-in-useCallback-2
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import {useRef, useCallback} from 'react';[22m
+
+[2m function useCustomRef() {[22m
+[2m return useRef({click: () => {}});[22m
+[2m }[22m
+
+[2m function Foo() {[22m
+[2m const ref = useCustomRef();[22m
+
+[2m const onClick = useCallback(() => {[22m
+[2m ref.current?.click();[22m
+[2m }, []);[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import { useRef, useCallback } from "react";[22m
+
+[2m function useCustomRef() {[22m
+[2m const $ = _c(1);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = { click: _temp };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[32m- return useRef(t0);[39m
+[31m+ return (function () {[39m
+[31m+ const $res$ = useRef(Object.freeze(t0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m }[22m
+[2m function _temp() {}[22m
+
+[2m function Foo() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useCustomRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useCustomRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m ref.current?.click();[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onClick = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== onClick) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = onClick;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
[22m
+
+[31m[1mFAIL:[22m[39m ref-like-name-in-effect
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import {useRef, useEffect} from 'react';[22m
+
+[2m function useCustomRef() {[22m
+[2m return useRef({click: () => {}});[22m
+[2m }[22m
+
+[2m function Foo() {[22m
+[2m const ref = useCustomRef();[22m
+
+[2m useEffect(() => {[22m
+[2m ref.current?.click();[22m
+[2m }, []);[22m
+
+[2m return
foo
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableTreatRefLikeIdentifiersAsRefs @validatePreserveExistingMemoizationGuarantees[22m
+[2m import { useRef, useEffect } from "react";[22m
+
+[2m function useCustomRef() {[22m
+[2m const $ = _c(1);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = { click: _temp };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[32m- return useRef(t0);[39m
+[31m+ return (function () {[39m
+[31m+ const $res$ = useRef(Object.freeze(t0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m }[22m
+[2m function _temp() {}[22m
+
+[2m function Foo() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useCustomRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useCustomRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m let t1;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m ref.current?.click();[22m
+[2m };[22m
+[2m t1 = [];[22m
+[2m $[0] = t0;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[32m- useEffect(t0, t1);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useEffect(Object.freeze(t0), Object.freeze(t1));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t2;[22m
+[2m if ($[2] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t2 =
foo
;[22m
+[2m $[2] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[2];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
foo
[22m
+
+[31m[1mFAIL:[22m[39m ref-in-effect
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const ref = useRef(null);[22m
+[2m const onChange = e => {[22m
+[2m const newValue = e.target.value ?? ref.current;[22m
+[2m ref.current = newValue;[22m
+[2m };[22m
+[2m useEffect(() => {[22m
+[2m console.log(ref.current);[22m
+[2m });[22m
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[32m- const ref = useRef(null);[39m
+[31m+ Object.freeze(props);[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef(Object.freeze(null));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = (e) => {[22m
+[2m const newValue = e.target.value ?? ref.current;[22m
+[2m ref.current = newValue;[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onChange = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = () => {[22m
+[2m console.log(ref.current);[22m
+[2m };[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[32m- useEffect(t1);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useEffect(Object.freeze(t1));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t2;[22m
+[2m if ($[2] !== onChange) {[22m
+[32m- t2 =
;[39m
+[31m+ t2 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[2] = onChange;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-write-not-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function VideoTab() {[22m
+[2m const ref = useRef();[22m
+[2m let x = () => {[22m
+[2m ref.current = 1;[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function VideoTab() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m ref.current = 1;[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-optional-field-no-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function VideoTab() {[22m
+[2m const ref = useRef();[22m
+[2m let x = () => {[22m
+[2m ref.current?.x;[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function VideoTab() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m ref.current?.x;[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-not-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function VideoTab() {[22m
+[2m const ref = useRef();[22m
+[2m let x = () => {[22m
+[2m console.log(ref.current);[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function VideoTab() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m console.log(ref.current);[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-not-added-to-dep-2
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @validateRefAccessDuringRender:false[22m
+[2m function Foo({a}) {[22m
+[2m const ref = useRef();[22m
+[2m const x = {a, val: ref.current};[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @validateRefAccessDuringRender:false[22m
+[2m function Foo(t0) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a } = t0;[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t1;[22m
+[2m if ($[0] !== a) {[22m
+[2m t1 = { a, val: ref.current };[22m
+[2m $[0] = a;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const x = t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== x) {[22m
+[32m- t2 =
;[39m
+[31m+ t2 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[2] = x;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-field-write-not-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useRef} from 'react';[22m
+
+[2m function Component() {[22m
+[2m const ref = useRef({text: {value: null}});[22m
+[2m const inputChanged = e => {[22m
+[2m ref.current.text.value = e.target.value;[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useRef } from "react";[22m
+
+[2m function Component() {[22m
+[2m const $ = _c(4);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = { text: { value: null } };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[32m- const ref = useRef(t0);[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef(Object.freeze(t0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t1;[22m
+[2m if ($[1] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = (e) => {[22m
+[2m ref.current.text.value = e.target.value;[22m
+[2m };[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const inputChanged = t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== inputChanged) {[22m
+[32m- t2 =
;[39m
+[31m+ t2 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[2] = inputChanged;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
[22m
+
+[31m[1mFAIL:[22m[39m ref-current-field-not-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @validateRefAccessDuringRender false[22m
+[2m function VideoTab() {[22m
+[2m const ref = useRef();[22m
+[2m let x = () => {[22m
+[2m console.log(ref.current.x);[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @validateRefAccessDuringRender false[22m
+[2m function VideoTab() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m console.log(ref.current.x);[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-aliased-not-added-to-dep-2
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @validateRefAccessDuringRender:false[22m
+[2m function Foo({a}) {[22m
+[2m const ref = useRef();[22m
+[2m const val = ref.current;[22m
+[2m const x = {a, val};[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @validateRefAccessDuringRender:false[22m
+[2m function Foo(t0) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a } = t0;[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m const val = ref.current;[22m
+[2m let t1;[22m
+[2m if ($[0] !== a) {[22m
+[2m t1 = { a, val };[22m
+[2m $[0] = a;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const x = t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== x) {[22m
+[32m- t2 =
;[39m
+[31m+ t2 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[2] = x;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m ref-current-aliased-no-added-to-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @validateRefAccessDuringRender false[22m
+[2m function VideoTab() {[22m
+[2m const ref = useRef();[22m
+[2m const t = ref.current;[22m
+[2m let x = () => {[22m
+[2m console.log(t);[22m
+[2m };[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @validateRefAccessDuringRender false[22m
+[2m function VideoTab() {[22m
+[2m const $ = _c(3);[22m
+[32m- const ref = useRef();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m const t = ref.current;[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m console.log(t);[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 =
;[39m
+[31m+ t1 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reduce-reactive-cond-deps-return-in-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function useFoo({obj, objIsNull}) {[22m
+[2m const x = [];[22m
+[2m if (objIsNull) {[22m
+[2m return;[22m
+[2m } else {[22m
+[2m x.push(obj.a);[22m
+[2m }[22m
+[2m x.push(obj.b);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{obj: null, objIsNull: true}],[22m
+[2m sequentialRenders: [[22m
+[2m {obj: null, objIsNull: true},[22m
+[2m {obj: {a: 2}, objIsNull: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { obj, objIsNull } = t0;[22m
+[2m let x;[22m
+[2m let t1;[22m
+[2m if ($[0] !== objIsNull || $[1] !== obj) {[22m
+[2m t1 = Symbol.for("react.early_return_sentinel");[22m
+[2m bb0: {[22m
+[2m x = [];[22m
+[2m if (objIsNull) {[22m
+[2m t1 = undefined;[22m
+[2m break bb0;[22m
+[2m } else {[22m
+[2m x.push(obj.a);[22m
+[2m }[22m
+
+[2m x.push(obj.b);[22m
+[2m }[22m
+[2m $[0] = objIsNull;[22m
+[2m $[1] = obj;[22m
+[2m $[2] = x;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m x = $[2];[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m if (t1 !== Symbol.for("react.early_return_sentinel")) {[22m
+[2m return t1;[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ obj: null, objIsNull: true }],[22m
+[2m sequentialRenders: [[22m
+[2m { obj: null, objIsNull: true },[22m
+[2m { obj: { a: 2 }, objIsNull: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [22m
+[2m [2,null][22m
+
+[31m[1mFAIL:[22m[39m reduce-reactive-cond-deps-cfg-nested-testifelse
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {setProperty} from 'shared-runtime';[22m
+
+[2m function useFoo({o, branchCheck}: {o: {value: number}; branchCheck: boolean}) {[22m
+[2m let x = {};[22m
+[2m if (branchCheck) {[22m
+[2m setProperty(x, o.value);[22m
+[2m } else {[22m
+[2m if (o.value) {[22m
+[2m setProperty(x, o.value);[22m
+[2m } else {[22m
+[2m setProperty(x, o.value);[22m
+[2m }[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{o: {value: 2}, branchCheck: false}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { setProperty } from "shared-runtime";[22m
+
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { o, branchCheck } = t0;[22m
+[2m let x;[22m
+[2m if ($[0] !== branchCheck || $[1] !== o.value) {[22m
+[2m x = {};[22m
+[2m if (branchCheck) {[22m
+[2m setProperty(x, o.value);[22m
+[2m } else {[22m
+[2m if (o.value) {[22m
+[2m setProperty(x, o.value);[22m
+[2m } else {[22m
+[2m setProperty(x, o.value);[22m
+[2m }[22m
+[2m }[22m
+[2m $[0] = branchCheck;[22m
+[2m $[1] = o.value;[22m
+[2m $[2] = x;[22m
+[2m } else {[22m
+[2m x = $[2];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ o: { value: 2 }, branchCheck: false }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"wat0":2}[22m
+
+[31m[1mFAIL:[22m[39m reduce-reactive-cond-deps-break-in-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function useFoo({obj, objIsNull}) {[22m
+[2m const x = [];[22m
+[2m b0: {[22m
+[2m if (objIsNull) {[22m
+[2m break b0;[22m
+[2m } else {[22m
+[2m x.push(obj.a);[22m
+[2m }[22m
+[2m x.push(obj.b);[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{obj: null, objIsNull: true}],[22m
+[2m sequentialRenders: [[22m
+[2m {obj: null, objIsNull: true},[22m
+[2m {obj: {a: 2}, objIsNull: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { obj, objIsNull } = t0;[22m
+[2m let x;[22m
+[2m if ($[0] !== objIsNull || $[1] !== obj) {[22m
+[2m x = [];[22m
+[2m bb0: {[22m
+[2m if (objIsNull) {[22m
+[2m break bb0;[22m
+[2m } else {[22m
+[2m x.push(obj.a);[22m
+[2m }[22m
+
+[2m x.push(obj.b);[22m
+[2m }[22m
+[2m $[0] = objIsNull;[22m
+[2m $[1] = obj;[22m
+[2m $[2] = x;[22m
+[2m } else {[22m
+[2m x = $[2];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ obj: null, objIsNull: true }],[22m
+[2m sequentialRenders: [[22m
+[2m { obj: null, objIsNull: true },[22m
+[2m { obj: { a: 2 }, objIsNull: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [][22m
+[2m [2,null][22m
+
+[31m[1mFAIL:[22m[39m recursive-function
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(x) {[22m
+[2m if (x <= 0) {[22m
+[2m return 0;[22m
+[2m }[22m
+[2m return x + foo(x - 1) + (() => foo(x - 2))();[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: [10],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(x) {[22m
+[31m+ Object.freeze(x);[39m
+[2m if (x <= 0) {[22m
+[2m return 0;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m t0 = foo(x - 2);[22m
+[2m return x + foo(x - 1) + t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: [10],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 364[22m
+
+[31m[1mFAIL:[22m[39m reassignment
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = [];[22m
+[2m x.push(props.p0);[22m
+[2m let y = x;[22m
+
+[2m x = [];[22m
+[2m let _ =
;[22m
+
+[2m y.push(props.p1);[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.p0 || $[1] !== props.p1) {[22m
+[2m let x = [];[22m
+[2m x.push(props.p0);[22m
+[2m const y = x;[22m
+[2m let t1;[22m
+[2m if ($[3] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = [];[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m x = t1;[22m
+
+[2m y.push(props.p1);[22m
+
+[32m- t0 =
;[39m
+[31m+ t0 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[0] = props.p0;[22m
+[2m $[1] = props.p1;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reassignment-separate-scopes
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m let x = [];[22m
+[2m if (a) {[22m
+[2m x.push(a);[22m
+[2m }[22m
+[2m let y =
{x}
;[22m
+
+[2m switch (b) {[22m
+[2m case 0: {[22m
+[2m x = [];[22m
+[2m x.push(b);[22m
+[2m break;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = [];[22m
+[2m x.push(c);[22m
+[2m }[22m
+[2m }[22m
+[2m return ([22m
+[2m
[22m
+[2m {y}[22m
+[2m {x}[22m
+[2m
[22m
+[2m );[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(10);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let x;[22m
+[2m let t0;[22m
+[2m if ($[0] !== a) {[22m
+[2m x = [];[22m
+[2m if (a) {[22m
+[2m x.push(a);[22m
+[2m }[22m
+
+[2m t0 =
{x}
;[22m
+[2m $[0] = a;[22m
+[2m $[1] = x;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const y = t0;[22m
+[2m bb0: switch (b) {[22m
+[2m case 0: {[22m
+[2m if ($[3] !== b) {[22m
+[2m x = [];[22m
+[2m x.push(b);[22m
+[2m $[3] = b;[22m
+[2m $[4] = x;[22m
+[2m } else {[22m
+[2m x = $[4];[22m
+[2m }[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m default: {[22m
+[2m if ($[5] !== c) {[22m
+[2m x = [];[22m
+[2m x.push(c);[22m
+[2m $[5] = c;[22m
+[2m $[6] = x;[22m
+[2m } else {[22m
+[2m x = $[6];[22m
+[2m }[22m
+[2m }[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[7] !== y || $[8] !== x) {[22m
+[2m t1 = ([22m
+[2m
[22m
+[2m {y}[22m
+[2m {x}[22m
+[2m
[22m
+[2m );[22m
+[2m $[7] = y;[22m
+[2m $[8] = x;[22m
+[2m $[9] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[9];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reassignment-conditional
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = [];[22m
+[2m x.push(props.p0);[22m
+[2m let y = x;[22m
+
+[2m if (props.p1) {[22m
+[2m x = [];[22m
+[2m }[22m
+
+[2m y.push(props.p2);[22m
+
+[2m return
;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.p0 || $[1] !== props.p1 || $[2] !== props.p2) {[22m
+[2m let x = [];[22m
+[2m x.push(props.p0);[22m
+[2m const y = x;[22m
+[2m if (props.p1) {[22m
+[2m let t1;[22m
+[2m if ($[4] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = [];[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m x = t1;[22m
+[2m }[22m
+
+[2m y.push(props.p2);[22m
+
+[32m- t0 =
;[39m
+[31m+ t0 = ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[0] = props.p0;[22m
+[2m $[1] = props.p1;[22m
+[2m $[2] = props.p2;[22m
+[2m $[3] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[3];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reassigned-phi-in-returned-function-expression
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m return () => {[22m
+[2m let str;[22m
+[2m if (arguments.length) {[22m
+[2m str = arguments[0];[22m
+[2m } else {[22m
+[2m str = props.str;[22m
+[2m }[22m
+[2m global.log(str);[22m
+[2m };[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.str) {[22m
+[2m t0 = () => {[22m
+[2m let str;[22m
+[2m if (arguments.length) {[22m
+[2m str = arguments[0];[22m
+[2m } else {[22m
+[2m str = props.str;[22m
+[2m }[22m
+
+[2m global.log(str);[22m
+[2m };[22m
+[2m $[0] = props.str;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reassign-primitive-in-context
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = 5;[22m
+[2m let foo = () => {[22m
+[2m x = {};[22m
+[2m };[22m
+[2m foo();[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m x = 5;[22m
+[2m const foo = () => {[22m
+[2m x = {};[22m
+[2m };[22m
+
+[2m foo();[22m
+[2m $[0] = x;[22m
+[2m } else {[22m
+[2m x = $[0];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {}[22m
+
+[31m[1mFAIL:[22m[39m reassign-object-in-context
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = [];[22m
+[2m let foo = () => {[22m
+[2m x = {};[22m
+[2m };[22m
+[2m foo();[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m x = [];[22m
+[2m const foo = () => {[22m
+[2m x = {};[22m
+[2m };[22m
+
+[2m foo();[22m
+[2m $[0] = x;[22m
+[2m } else {[22m
+[2m x = $[0];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reassign-global-hook-arg
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m let b = 1;[22m
+
+[2m export default function MyApp() {[22m
+[2m const fn = () => {[22m
+[2m b = 2;[22m
+[2m };[22m
+[2m return useFoo(fn);[22m
+[2m }[22m
+
+[2m function useFoo(fn) {}[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: MyApp,[22m
+[2m params: [],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m let b = 1;[22m
+
+[2m export default function MyApp() {[22m
+[2m const fn = _temp;[22m
+[32m- return useFoo(fn);[39m
+[31m+ return (function () {[39m
+[31m+ const $res$ = useFoo(Object.freeze(fn));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m }[22m
+[2m function _temp() {[22m
+[2m b = 2;[22m
+[2m }[22m
+
+[32m- function useFoo(fn) {}[39m
+[31m+ function useFoo(fn) {[39m
+[31m+ Object.freeze(fn);[39m
+[31m+ }[39m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: MyApp,[22m
+[2m params: [],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [22m
+
+[31m[1mFAIL:[22m[39m reanimated-no-memo-arg
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableCustomTypeDefinitionForReanimated[22m
+[2m function Component() {[22m
+[2m const radius = useSharedValue(50);[22m
+
+[2m const animatedProps = useAnimatedProps(() => {[22m
+[2m // draw a circle[22m
+[2m const path = `[22m
+[2m M 100, 100[22m
+[2m m -${radius.value}, 0[22m
+[2m a ${radius.value},${radius.value} 0 1,0 ${radius.value * 2},0[22m
+[2m a ${radius.value},${radius.value} 0 1,0 ${-radius.value * 2},0[22m
+[2m `;[22m
+[2m return {[22m
+[2m d: path,[22m
+[2m };[22m
+[2m });[22m
+
+[2m // attach animated props to an SVG path using animatedProps[22m
+[2m return ([22m
+[2m
[22m
+[2m );[22m
+[2m }[22m
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableCustomTypeDefinitionForReanimated[22m
+[2m function Component() {[22m
+[2m const $ = _c(2);[22m
+[32m- const radius = useSharedValue(50);[39m
+[31m+ const radius = (function () {[39m
+[31m+ const $res$ = useSharedValue(Object.freeze(50));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+
+[32m- const animatedProps = useAnimatedProps(() => {[39m
+[32m- const path = `[39m
+[31m+ const animatedProps = (function () {[39m
+[31m+ const $res$ = useAnimatedProps([39m
+[31m+ Object.freeze(() => {[39m
+[31m+ const path = `[39m
+[2m M 100, 100[22m
+[2m m -${radius.value}, 0[22m
+[2m a ${radius.value},${radius.value} 0 1,0 ${radius.value * 2},0[22m
+[2m a ${radius.value},${radius.value} 0 1,0 ${-radius.value * 2},0[22m
+[2m `;[22m
+[32m- return { d: path };[39m
+[32m- });[39m
+[31m+ return { d: path };[39m
+[31m+ }),[39m
+[31m+ );[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] !== animatedProps) {[22m
+[2m t0 = ([22m
+[2m
[22m
+[2m );[22m
+[2m $[0] = animatedProps;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m readonly-object-method-calls
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const user = useFragment([22m
+[2m graphql`[22m
+[2m fragment Component_user on User {[22m
+[2m name[22m
+[2m }[22m
+[2m `,[22m
+[2m props.user[22m
+[2m );[22m
+[2m const posts = user.timeline.posts.edges.nodes.map(node => ([22m
+[2m
[22m
+[2m ));[22m
+[2m posts.push({});[22m
+[2m const count = posts.length;[22m
+[2m foo(count);[22m
+[2m return <>{posts}>;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[32m- const user = useFragment([39m
+[32m- graphql`[39m
+[32m- fragment Component_user on User {[39m
+[32m- name[39m
+[32m- }[39m
+[32m- `,[39m
+[32m- props.user,[39m
+[32m- );[39m
+[31m+ Object.freeze(props);[39m
+[31m+ const user = (function () {[39m
+[31m+ const $res$ = useFragment([39m
+[31m+ Object.freeze(graphql`[39m
+[31m+ fragment Component_user on User {[39m
+[31m+ name[39m
+[31m+ }[39m
+[31m+ `),[39m
+[31m+ Object.freeze(props.user),[39m
+[31m+ );[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let posts;[22m
+[2m if ($[0] !== user.timeline.posts.edges.nodes) {[22m
+[2m posts = user.timeline.posts.edges.nodes.map(_temp);[22m
+[2m let t0;[22m
+[2m if ($[2] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = {};[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m posts.push(t0);[22m
+[2m $[0] = user.timeline.posts.edges.nodes;[22m
+[2m $[1] = posts;[22m
+[2m } else {[22m
+[2m posts = $[1];[22m
+[2m }[22m
+[2m const count = posts.length;[22m
+[2m foo(count);[22m
+[2m let t0;[22m
+[2m if ($[3] !== posts) {[22m
+[2m t0 = <>{posts}>;[22m
+[2m $[3] = posts;[22m
+[2m $[4] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[4];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m function _temp(node) {[22m
+[32m- return
;[39m
+[31m+ return ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m readonly-object-method-calls-mutable-lambda
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeObject();[22m
+[2m const user = useFragment([22m
+[2m graphql`[22m
+[2m fragment Component_user on User {[22m
+[2m name[22m
+[2m }[22m
+[2m `,[22m
+[2m props.user[22m
+[2m );[22m
+[2m const posts = user.timeline.posts.edges.nodes.map(node => {[22m
+[2m x.y = true;[22m
+[2m return
;[22m
+[2m });[22m
+[2m posts.push({});[22m
+[2m const count = posts.length;[22m
+[2m foo(count);[22m
+[2m return <>{posts}>;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = makeObject();[22m
+[32m- const user = useFragment([39m
+[32m- graphql`[39m
+[32m- fragment Component_user on User {[39m
+[32m- name[39m
+[32m- }[39m
+[32m- `,[39m
+[32m- props.user,[39m
+[32m- );[39m
+[31m+ const user = (function () {[39m
+[31m+ const $res$ = useFragment([39m
+[31m+ Object.freeze(graphql`[39m
+[31m+ fragment Component_user on User {[39m
+[31m+ name[39m
+[31m+ }[39m
+[31m+ `),[39m
+[31m+ Object.freeze(props.user),[39m
+[31m+ );[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m const posts = user.timeline.posts.edges.nodes.map((node) => {[22m
+[2m x.y = true;[22m
+[32m- return
;[39m
+[31m+ return ([39m
+[31m+
[39m
+[31m+ );[39m
+[2m });[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = {};[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m posts.push(t0);[22m
+[2m const count = posts.length;[22m
+[2m foo(count);[22m
+[2m let t1;[22m
+[2m if ($[1] !== posts) {[22m
+[2m t1 = <>{posts}>;[22m
+[2m $[1] = posts;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactivity-via-readonly-alias-of-mutable-value
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = [];[22m
+[2m const y = x;[22m
+
+[2m // y isn't reactive yet when we first visit this, so z is initially non-reactive[22m
+[2m const z = [y];[22m
+
+[2m // then we realize y is reactive. we need a fixpoint to propagate this back to z[22m
+[2m y.push(props.input);[22m
+
+[2m // PruneNonReactiveDependencies partially propagates reactivity (for now) which[22m
+[2m // we bypass with an indirection of storing into another variable[22m
+[2m const a = [z];[22m
+
+[2m // b's value is conditional on `a`, which is reactive per above[22m
+[2m let b = 0;[22m
+[2m if (a[0][0][0] === 42) {[22m
+[2m b = 1;[22m
+[2m }[22m
+
+[2m return [b];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {input: 42},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = [];[22m
+[2m const y = x;[22m
+
+[2m const z = [y];[22m
+
+[2m y.push(props.input);[22m
+
+[2m const a = [z];[22m
+
+[2m let b = 0;[22m
+[2m if (a[0][0][0] === 42) {[22m
+[2m b = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== b) {[22m
+[2m t0 = [b];[22m
+[2m $[0] = b;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { input: 42 },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [0][22m
+[2m [0][22m
+[2m [1][22m
+[2m [0][22m
+[2m [1][22m
+[2m [0][22m
+
+[31m[1mFAIL:[22m[39m reactivity-via-aliased-mutation-through-property-load
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m const y = [];[22m
+[2m x.y = y;[22m
+[2m x.y.push(props.input);[22m
+
+[2m let z = 0;[22m
+[2m if (x.y[0]) {[22m
+[2m z = 1;[22m
+[2m }[22m
+
+[2m return [z];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {input: true},[22m
+[2m {input: true},[22m
+[2m {input: false},[22m
+[2m {input: false},[22m
+[2m {input: true},[22m
+[2m {input: false},[22m
+[2m {input: true},[22m
+[2m {input: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = {};[22m
+[2m const y = [];[22m
+[2m x.y = y;[22m
+[2m x.y.push(props.input);[22m
+
+[2m let z = 0;[22m
+[2m if (x.y[0]) {[22m
+[2m z = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== z) {[22m
+[2m t0 = [z];[22m
+[2m $[0] = z;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { input: true },[22m
+[2m { input: true },[22m
+[2m { input: false },[22m
+[2m { input: false },[22m
+[2m { input: true },[22m
+[2m { input: false },[22m
+[2m { input: true },[22m
+[2m { input: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [0][22m
+[2m [0][22m
+[2m [1][22m
+[2m [0][22m
+[2m [1][22m
+[2m [0][22m
+
+[31m[1mFAIL:[22m[39m reactivity-via-aliased-mutation-lambda
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = [];[22m
+[2m const f = arg => {[22m
+[2m const y = x;[22m
+[2m y.push(arg);[22m
+[2m };[22m
+[2m f(props.input);[22m
+
+[2m return [x[0]];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {input: 42},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] !== props.input) {[22m
+[2m x = [];[22m
+[2m const f = (arg) => {[22m
+[2m const y = x;[22m
+[2m y.push(arg);[22m
+[2m };[22m
+
+[2m f(props.input);[22m
+[2m $[0] = props.input;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+
+[2m const t0 = x[0];[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = [t0];[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { input: 42 },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [42][22m
+[2m [42][22m
+[2m ["sathya"][22m
+[2m ["sathya"][22m
+[2m [42][22m
+[2m ["sathya"][22m
+[2m [42][22m
+[2m ["sathya"][22m
+
+[31m[1mFAIL:[22m[39m reactivity-via-aliased-mutation-array
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = [];[22m
+[2m const y = x;[22m
+[2m y.push(props.input);[22m
+
+[2m return [x[0]];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {input: 42},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m {input: 42},[22m
+[2m {input: 'sathya'},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] !== props.input) {[22m
+[2m x = [];[22m
+[2m const y = x;[22m
+[2m y.push(props.input);[22m
+[2m $[0] = props.input;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+
+[2m const t0 = x[0];[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = [t0];[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { input: 42 },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m { input: 42 },[22m
+[2m { input: "sathya" },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [42][22m
+[2m [42][22m
+[2m ["sathya"][22m
+[2m ["sathya"][22m
+[2m [42][22m
+[2m ["sathya"][22m
+[2m [42][22m
+[2m ["sathya"][22m
+
+[31m[1mFAIL:[22m[39m reactivity-analysis-reactive-via-mutation-of-property-load
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const items = bar();[22m
+[2m mutate(items.a, props.a);[22m
+
+[2m const count = foo(items.length + 1);[22m
+
+[2m return {items, count};[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(7);[22m
+[31m+ Object.freeze(props);[39m
+[2m let items;[22m
+[2m if ($[0] !== props.a) {[22m
+[2m items = bar();[22m
+[2m mutate(items.a, props.a);[22m
+[2m $[0] = props.a;[22m
+[2m $[1] = items;[22m
+[2m } else {[22m
+[2m items = $[1];[22m
+[2m }[22m
+
+[2m const t0 = items.length + 1;[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = foo(t0);[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const count = t1;[22m
+[2m let t2;[22m
+[2m if ($[4] !== items || $[5] !== count) {[22m
+[2m t2 = { items, count };[22m
+[2m $[4] = items;[22m
+[2m $[5] = count;[22m
+[2m $[6] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[6];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactivity-analysis-reactive-via-mutation-of-computed-load
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const items = bar();[22m
+[2m mutate(items[props.key], props.a);[22m
+
+[2m const count = foo(items.length + 1);[22m
+
+[2m return {items, count};[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(8);[22m
+[31m+ Object.freeze(props);[39m
+[2m let items;[22m
+[2m if ($[0] !== props.key || $[1] !== props.a) {[22m
+[2m items = bar();[22m
+[2m mutate(items[props.key], props.a);[22m
+[2m $[0] = props.key;[22m
+[2m $[1] = props.a;[22m
+[2m $[2] = items;[22m
+[2m } else {[22m
+[2m items = $[2];[22m
+[2m }[22m
+
+[2m const t0 = items.length + 1;[22m
+[2m let t1;[22m
+[2m if ($[3] !== t0) {[22m
+[2m t1 = foo(t0);[22m
+[2m $[3] = t0;[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m const count = t1;[22m
+[2m let t2;[22m
+[2m if ($[5] !== items || $[6] !== count) {[22m
+[2m t2 = { items, count };[22m
+[2m $[5] = items;[22m
+[2m $[6] = count;[22m
+[2m $[7] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[7];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactivity-analysis-interleaved-reactivity
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are technically independent, but their mutation is interleaved[22m
+[2m // so they are grouped in a single reactive scope. a does not have any[22m
+[2m // reactive inputs, but b does. therefore, we have to treat a as reactive,[22m
+[2m // since it will be recreated based on a reactive input.[22m
+[2m const a = {};[22m
+[2m const b = [];[22m
+[2m b.push(props.b);[22m
+[2m a.a = null;[22m
+
+[2m // because a may recreate when b does, it becomes reactive. we have to recreate[22m
+[2m // c if a changes.[22m
+[2m const c = [a];[22m
+
+[2m // Example usage that could fail if we didn't treat a as reactive:[22m
+[2m // const [c, a] = Component({b: ...});[22m
+[2m // assert(c[0] === a);[22m
+[2m return [c, a];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(6);[22m
+[31m+ Object.freeze(props);[39m
+[2m let a;[22m
+[2m let t0;[22m
+[2m if ($[0] !== props.b) {[22m
+[2m a = {};[22m
+[2m const b = [];[22m
+[2m b.push(props.b);[22m
+[2m a.a = null;[22m
+
+[2m t0 = [a];[22m
+[2m $[0] = props.b;[22m
+[2m $[1] = a;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m a = $[1];[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const c = t0;[22m
+[2m let t1;[22m
+[2m if ($[3] !== c || $[4] !== a) {[22m
+[2m t1 = [c, a];[22m
+[2m $[3] = c;[22m
+[2m $[4] = a;[22m
+[2m $[5] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[5];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactive-scopes
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function f(a, b) {[22m
+[2m let x = []; // <- x starts being mutable here.[22m
+[2m if (a.length === 1) {[22m
+[2m if (b) {[22m
+[2m x.push(b); // <- x stops being mutable here.[22m
+[2m }[22m
+[2m }[22m
+
+[2m return
{x}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: f,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function f(a, b) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a.length || $[1] !== b) {[22m
+[2m const x = [];[22m
+[2m if (a.length === 1) {[22m
+[2m if (b) {[22m
+[2m x.push(b);[22m
+[2m }[22m
+[2m }[22m
+
+[2m t0 =
{x}
;[22m
+[2m $[0] = a.length;[22m
+[2m $[1] = b;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: f,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactive-scopes-if
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m const x = [];[22m
+[2m if (a) {[22m
+[2m const y = [];[22m
+[2m y.push(b);[22m
+[2m x.push(
{y}
);[22m
+[2m } else {[22m
+[2m x.push(c);[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(8);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let x;[22m
+[2m if ($[0] !== a || $[1] !== b || $[2] !== c) {[22m
+[2m x = [];[22m
+[2m if (a) {[22m
+[2m let y;[22m
+[2m if ($[4] !== b) {[22m
+[2m y = [];[22m
+[2m y.push(b);[22m
+[2m $[4] = b;[22m
+[2m $[5] = y;[22m
+[2m } else {[22m
+[2m y = $[5];[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[6] !== y) {[22m
+[2m t0 =
{y}
;[22m
+[2m $[6] = y;[22m
+[2m $[7] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[7];[22m
+[2m }[22m
+[2m x.push(t0);[22m
+[2m } else {[22m
+[2m x.push(c);[22m
+[2m }[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = c;[22m
+[2m $[3] = x;[22m
+[2m } else {[22m
+[2m x = $[3];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactive-dependency-object-captured-with-reactive-mutated
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m const {mutate} = require('shared-runtime');[22m
+
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m const y = props.y;[22m
+[2m const z = [x, y];[22m
+[2m mutate(z);[22m
+[2m // x's object identity can change bc it co-mutates with z, which is reactive via props.y[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{y: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m const { mutate } = require("shared-runtime");[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.y) {[22m
+[2m const x = {};[22m
+[2m const y = props.y;[22m
+[2m const z = [x, y];[22m
+[2m mutate(z);[22m
+
+[2m t0 = [x];[22m
+[2m $[0] = props.y;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ y: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{}][22m
+
+[31m[1mFAIL:[22m[39m reactive-dependency-nonreactive-captured-with-reactive
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m const y = props.y;[22m
+[2m return [x, y]; // x is captured here along with a reactive value. this shouldn't make `x` reactive![22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{y: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = {};[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m const y = props.y;[22m
+[2m let t1;[22m
+[2m if ($[1] !== y) {[22m
+[2m t1 = [x, y];[22m
+[2m $[1] = y;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ y: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{},42][22m
+
+[31m[1mFAIL:[22m[39m reactive-dependency-fixpoint
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = 0;[22m
+[2m let y = 0;[22m
+
+[2m while (x === 0) {[22m
+[2m x = y;[22m
+[2m y = props.value;[22m
+[2m }[22m
+
+[2m // x and y initially start out with non-reactive values,[22m
+[2m // but after an iteration of the loop y becomes reactive,[22m
+[2m // and this reactive value then flows into x on the next[22m
+[2m // loop iteration, making x reactive.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x = 0;[22m
+[2m let y = 0;[22m
+[2m while (x === 0) {[22m
+[2m x = y;[22m
+[2m y = props.value;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [42][22m
+
+[31m[1mFAIL:[22m[39m reactive-dependencies-non-optional-properties-inside-optional-chain
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m return props.post.feedback.comments?.edges?.map(render);[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.post.feedback.comments) {[22m
+[2m t0 = props.post.feedback.comments?.edges?.map(render);[22m
+[2m $[0] = props.post.feedback.comments;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-while-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m let i = 0;[22m
+[2m while (i < props.test) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m i++;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose value is affected by[22m
+[2m // `props.test` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {test: 12},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m let i = 0;[22m
+[2m while (i < props.test) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+
+[2m i++;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { test: 12 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-via-mutation-switch
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // x is mutated conditionally based on a reactive value,[22m
+[2m // so it needs to be considered reactive[22m
+[2m let x = [];[22m
+[2m if (props.cond) {[22m
+[2m x.push(1);[22m
+[2m }[22m
+[2m // Since x is reactive, y is now reactively controlled too:[22m
+[2m let y = false;[22m
+[2m switch (x[0]) {[22m
+[2m case 1: {[22m
+[2m y = true;[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+[2m // Thus this value should be reactive on `y`:[22m
+[2m return [y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const x = [];[22m
+[2m if (props.cond) {[22m
+[2m x.push(1);[22m
+[2m }[22m
+
+[2m let y = false;[22m
+[2m switch (x[0]) {[22m
+[2m case 1: {[22m
+[2m y = true;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== y) {[22m
+[2m t0 = [y];[22m
+[2m $[0] = y;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [true][22m
+[2m [true][22m
+[2m [false][22m
+[2m [false][22m
+[2m [true][22m
+[2m [false][22m
+[2m [true][22m
+[2m [false][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-via-mutation-if
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // x is mutated conditionally based on a reactive value,[22m
+[2m // so it needs to be considered reactive[22m
+[2m let x = [];[22m
+[2m if (props.cond) {[22m
+[2m x.push(1);[22m
+[2m }[22m
+[2m // Since x is reactive, y is now reactively controlled too:[22m
+[2m let y = false;[22m
+[2m if (x[0]) {[22m
+[2m y = true;[22m
+[2m }[22m
+[2m // Thus this value should be reactive on `y`:[22m
+[2m return [y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const x = [];[22m
+[2m if (props.cond) {[22m
+[2m x.push(1);[22m
+[2m }[22m
+
+[2m let y = false;[22m
+[2m if (x[0]) {[22m
+[2m y = true;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== y) {[22m
+[2m t0 = [y];[22m
+[2m $[0] = y;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [true][22m
+[2m [true][22m
+[2m [false][22m
+[2m [false][22m
+[2m [true][22m
+[2m [false][22m
+[2m [true][22m
+[2m [false][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-switch-condition
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m const GLOBAL = 42;[22m
+
+[2m function Component({value}) {[22m
+[2m let x;[22m
+[2m switch (GLOBAL) {[22m
+[2m case value: {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `props.value` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {value: GLOBAL},[22m
+[2m {value: GLOBAL},[22m
+[2m {value: null},[22m
+[2m {value: null},[22m
+[2m {value: GLOBAL},[22m
+[2m {value: null},[22m
+[2m {value: GLOBAL},[22m
+[2m {value: null},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m const GLOBAL = 42;[22m
+
+[2m function Component(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m let x;[22m
+[2m bb0: switch (GLOBAL) {[22m
+[2m case value: {[22m
+[2m x = 1;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[0] !== x) {[22m
+[2m t1 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { value: GLOBAL },[22m
+[2m { value: GLOBAL },[22m
+[2m { value: null },[22m
+[2m { value: null },[22m
+[2m { value: GLOBAL },[22m
+[2m { value: null },[22m
+[2m { value: GLOBAL },[22m
+[2m { value: null },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-switch-case-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m switch (props.cond) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m case false: {[22m
+[2m x = 2;[22m
+[2m break;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 3;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `props.cond` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m bb0: switch (props.cond) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m case false: {[22m
+[2m x = 2;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 3;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-reactive-after-fixpoint
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = 0;[22m
+
+[2m let value = null;[22m
+[2m loop: for (let i = 0; i < 10; i++) {[22m
+[2m switch (value) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break loop;[22m
+[2m }[22m
+[2m case false: {[22m
+[2m x = 2;[22m
+[2m break loop;[22m
+[2m }[22m
+[2m }[22m
+
+[2m value = props.cond;[22m
+[2m }[22m
+
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `value` used as the switch test[22m
+[2m // condition. That variable is initially null on the first iteration[22m
+[2m // of the loop, but is later set to `props.value` which is reactive.[22m
+[2m // Therefore x should be treated as reactive.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x = 0;[22m
+
+[2m let value = null;[22m
+[2m for (let i = 0; i < 10; i++) {[22m
+[2m switch (value) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m case false: {[22m
+[2m x = 2;[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+
+[2m value = props.cond;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-phi-setState-type
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) ok
+ok
+ok
+ok
+ok
+ok
+ok
+ok
+Forget:
+(kind: ok) [[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+[[ (exception in render) Invariant Violation: Expected the correct setState function ]]
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-on-context-variable
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m // Reassign `x` based on a reactive value, but inside a function expression[22m
+[2m // to make it a context variable[22m
+[2m const f = () => {[22m
+[2m if (props.cond) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m };[22m
+[2m // Pass `f` through a function to prevent IIFE inlining optimizations[22m
+[2m const f2 = identity(f);[22m
+[2m f2();[22m
+
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `props.cond` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] !== props.cond) {[22m
+[2m const f = () => {[22m
+[2m if (props.cond) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m };[22m
+
+[2m const f2 = identity(f);[22m
+[2m f2();[22m
+[2m $[0] = props.cond;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+
+[2m const t0 = x;[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = [t0];[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-if
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m if (props.cond) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `props.cond` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m {cond: true},[22m
+[2m {cond: false},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if (props.cond) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: false },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-while
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m while (c[0][0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m while (c[0][0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [null][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-switch
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m switch (c[0][0]) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m bb0: switch (c[0][0]) {[22m
+[2m case true: {[22m
+[2m x = 1;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m default: {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-if
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m if (c[0][0]) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m if (c[0][0]) {[22m
+[2m x = 1;[22m
+[2m } else {[22m
+[2m x = 2;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [2][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-for-update
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(10);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = 0; i < 10; i += c[0][0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(10);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = 0; i < 10; i = i + c[0][0], i) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-for-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(10);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = 0; i < c[0][0]; i++) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(10);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = 0; i < c[0][0]; i++) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-for-of
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (const i of c[0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(null);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (const i of c[0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-for-init
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(0);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = c[0][0]; i < 10; i++) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(0);[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (let i = c[0][0]; i < 10; i++) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-for-in
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push({a: false});[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (const i in c[0][0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push({ a: false });[22m
+
+[2m const c = [a];[22m
+
+[2m let x;[22m
+[2m for (const i in c[0][0]) {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-from-interleaved-reactivity-do-while
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m // a and b are independent but their mutations are interleaved, so[22m
+[2m // they get grouped in a reactive scope. this means that a becomes[22m
+[2m // reactive since it will effectively re-evaluate based on a reactive[22m
+[2m // input[22m
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(false);[22m
+
+[2m // Downstream consumer of a, which initially seems non-reactive except[22m
+[2m // that a becomes reactive, per above[22m
+[2m const c = [a];[22m
+
+[2m let x = 0;[22m
+[2m do {[22m
+[2m x += 1;[22m
+[2m } while (c[0][0]);[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" value `c[0]` which becomes reactive via[22m
+[2m // being interleaved with `b`.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+
+[2m const a = [];[22m
+[2m const b = [];[22m
+[2m b.push(props.cond);[22m
+[2m a.push(false);[22m
+
+[2m const c = [a];[22m
+
+[2m let x = 0;[22m
+[2m do {[22m
+[2m x = x + 1;[22m
+[2m } while (c[0][0]);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-forof-collection
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m for (const i of props.values) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose value is derived from[22m
+[2m // `props.values` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {values: [12]},[22m
+[2m {values: [12]},[22m
+[2m {values: [1]},[22m
+[2m {values: [1]},[22m
+[2m {values: [12]},[22m
+[2m {values: [1]},[22m
+[2m {values: [12]},[22m
+[2m {values: [1]},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m for (const i of props.values) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { values: [12] },[22m
+[2m { values: [12] },[22m
+[2m { values: [1] },[22m
+[2m { values: [1] },[22m
+[2m { values: [12] },[22m
+[2m { values: [1] },[22m
+[2m { values: [12] },[22m
+[2m { values: [1] },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-forin-collection
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m for (const key in props.values) {[22m
+[2m const i = parseInt(key, 10);[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose value is derived from[22m
+[2m // `props.values` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {values: {'12': true}},[22m
+[2m {values: {'12': true}},[22m
+[2m {values: {'1': true}},[22m
+[2m {values: {'1': true}},[22m
+[2m {values: {'12': true}},[22m
+[2m {values: {'1': true}},[22m
+[2m {values: {'12': true}},[22m
+[2m {values: {'1': true}},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m for (const key in props.values) {[22m
+[2m const i = parseInt(key, 10);[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { values: { "12": true } },[22m
+[2m { values: { "12": true } },[22m
+[2m { values: { "1": true } },[22m
+[2m { values: { "1": true } },[22m
+[2m { values: { "12": true } },[22m
+[2m { values: { "1": true } },[22m
+[2m { values: { "12": true } },[22m
+[2m { values: { "1": true } },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-for-update
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m for (let i = 0; i < 10; i += props.update) {[22m
+[2m if (i > 0 && i % 2 === 0) {[22m
+[2m x = 2;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose possible values are[22m
+[2m // affected by `props.update` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {update: 2},[22m
+[2m {update: 2},[22m
+[2m {update: 1},[22m
+[2m {update: 1},[22m
+[2m {update: 2},[22m
+[2m {update: 1},[22m
+[2m {update: 2},[22m
+[2m {update: 1},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m for (let i = 0; i < 10; i = i + props.update, i) {[22m
+[2m if (i > 0 && i % 2 === 0) {[22m
+[2m x = 2;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { update: 2 },[22m
+[2m { update: 2 },[22m
+[2m { update: 1 },[22m
+[2m { update: 1 },[22m
+[2m { update: 2 },[22m
+[2m { update: 1 },[22m
+[2m { update: 2 },[22m
+[2m { update: 1 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [2][22m
+[2m [2][22m
+[2m [1][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+[2m [2][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-for-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m for (let i = 0; i < props.test; i++) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose value is capped by[22m
+[2m // `props.test` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {test: 12},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m for (let i = 0; i < props.test; i++) {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { test: 12 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-for-init
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m for (let i = props.init; i < 10; i++) {[22m
+[2m if (i === 0) {[22m
+[2m x = 0;[22m
+[2m break;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose initial value `props.init` is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {init: 0},[22m
+[2m {init: 0},[22m
+[2m {init: 10},[22m
+[2m {init: 10},[22m
+[2m {init: 0},[22m
+[2m {init: 10},[22m
+[2m {init: 0},[22m
+[2m {init: 10},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m for (const i = props.init; i < 10; ) {[22m
+[2m if (i === 0) {[22m
+[2m x = 0;[22m
+[2m break;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { init: 0 },[22m
+[2m { init: 0 },[22m
+[2m { init: 10 },[22m
+[2m { init: 10 },[22m
+[2m { init: 0 },[22m
+[2m { init: 10 },[22m
+[2m { init: 0 },[22m
+[2m { init: 10 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [0][22m
+[2m [0][22m
+[2m [null][22m
+[2m [null][22m
+[2m [0][22m
+[2m [null][22m
+[2m [0][22m
+[2m [null][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-do-while-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x;[22m
+[2m let i = 0;[22m
+[2m do {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+[2m i++;[22m
+[2m } while (i < props.test);[22m
+[2m // The values assigned to `x` are non-reactive, but the value of `x`[22m
+[2m // depends on the "control" variable `i`, whose value is affected by[22m
+[2m // `props.test` which is reactive.[22m
+[2m // Therefore x should be treated as reactive too.[22m
+[2m return [x];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {test: 12},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m {test: 12},[22m
+[2m {test: 1},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m let i = 0;[22m
+[2m do {[22m
+[2m if (i > 10) {[22m
+[2m x = 10;[22m
+[2m } else {[22m
+[2m x = 1;[22m
+[2m }[22m
+
+[2m i++;[22m
+[2m } while (i < props.test);[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { test: 12 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m { test: 12 },[22m
+[2m { test: 1 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m reactive-control-dependency-do-while-indirect
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = 0;[22m
+[2m let y = 0;[22m
+[2m let z = 0;[22m
+[2m do {[22m
+[2m x += 1;[22m
+[2m y += 1;[22m
+[2m z = y;[22m
+[2m } while (x < props.limit);[22m
+[2m return [z];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m {limit: 10},[22m
+[2m {limit: 10},[22m
+[2m {limit: 1},[22m
+[2m {limit: 1},[22m
+[2m {limit: 10},[22m
+[2m {limit: 1},[22m
+[2m {limit: 10},[22m
+[2m {limit: 1},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x = 0;[22m
+[2m let y = 0;[22m
+[2m let z;[22m
+[2m do {[22m
+[2m x = x + 1;[22m
+[2m y = y + 1;[22m
+[2m z = y;[22m
+[2m } while (x < props.limit);[22m
+[2m let t0;[22m
+[2m if ($[0] !== z) {[22m
+[2m t0 = [z];[22m
+[2m $[0] = z;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m sequentialRenders: [[22m
+[2m { limit: 10 },[22m
+[2m { limit: 10 },[22m
+[2m { limit: 1 },[22m
+[2m { limit: 1 },[22m
+[2m { limit: 10 },[22m
+[2m { limit: 1 },[22m
+[2m { limit: 10 },[22m
+[2m { limit: 1 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [10][22m
+[2m [10][22m
+[2m [1][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+[2m [10][22m
+[2m [1][22m
+
+[31m[1mFAIL:[22m[39m react-namespace
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m const FooContext = React.createContext({current: null});[22m
+
+[2m function Component(props) {[22m
+[2m const foo = React.useContext(FooContext);[22m
+[2m const ref = React.useRef();[22m
+[2m const [x, setX] = React.useState(false);[22m
+[2m const onClick = () => {[22m
+[2m setX(true);[22m
+[2m ref.current = true;[22m
+[2m };[22m
+[2m return
{React.cloneElement(props.children)}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{children:
Hello
}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m const FooContext = React.createContext({ current: null });[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(6);[22m
+[32m- React.useContext(FooContext);[39m
+[32m- const ref = React.useRef();[39m
+[32m- const [x, setX] = React.useState(false);[39m
+[31m+ Object.freeze(props);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = React.useContext(Object.freeze(FooContext));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[31m+ const ref = (function () {[39m
+[31m+ const $res$ = React.useRef();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[31m+ const [x, setX] = (function () {[39m
+[31m+ const $res$ = React.useState(Object.freeze(false));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m setX(true);[22m
+[2m ref.current = true;[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onClick = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== props.children) {[22m
+[2m t1 = React.cloneElement(props.children);[22m
+[2m $[1] = props.children;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[3] !== onClick || $[4] !== t1) {[22m
+[32m- t2 =
{t1}
;[39m
+[31m+ t2 = ([39m
+[31m+
[39m
+[31m+ {t1}[39m
+[31m+
[39m
+[31m+ );[39m
+[2m $[3] = onClick;[22m
+[2m $[4] = t1;[22m
+[2m $[5] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[5];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ children:
Hello
}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok)
[22m
+
+[31m[1mFAIL:[22m[39m quoted-strings-jsx-attribute-escaped-constant-propagation
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) Some "text"
+Forget:
+(kind: ok)
+logs: ['Warning: Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\n' +
+ ' <%s>{%s}%s>%s','text','text','Child','text','Child','\n' +
+ ' at Child (eval at doEval (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:200:28),
:40:16)\n' +
+ ' at WrapperTestComponent (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:89:26)']
+
+[31m[1mFAIL:[22m[39m quoted-strings-in-jsx-attribute
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) Some "text"
+Forget:
+(kind: ok)
+logs: ['Warning: Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\n' +
+ ' <%s>{%s}%s>%s','text','text','Child','text','Child','\n' +
+ ' at Child (eval at doEval (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:200:28), :40:16)\n' +
+ ' at WrapperTestComponent (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:89:26)']
+
+[31m[1mFAIL:[22m[39m quoted-strings-in-jsx-attribute-escaped
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) Some \"text\"
+Forget:
+(kind: ok)
+logs: ['Warning: Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\n' +
+ ' <%s>{%s}%s>%s','text','text','Child','text','Child','\n' +
+ ' at Child (eval at doEval (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:200:28), :40:16)\n' +
+ ' at WrapperTestComponent (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:89:26)']
+
+[31m[1mFAIL:[22m[39m prune-scopes-whose-deps-may-invalidate-array
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useHook, identity} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m let x = 42;[22m
+[2m if (props.cond) {[22m
+[2m x = [];[22m
+[2m }[22m
+[2m useHook(); // intersperse a hook call to prevent memoization of x[22m
+[2m identity(x);[22m
+
+[2m const y = [x];[22m
+
+[2m return [y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'sathya'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useHook, identity } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x = 42;[22m
+[2m if (props.cond) {[22m
+[2m x = [];[22m
+[2m }[22m
+[32m-[39m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m identity(x);[22m
+[2m let t0;[22m
+[2m if ($[0] !== x) {[22m
+[2m t0 = [x];[22m
+[2m $[0] = x;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const y = t0;[22m
+[2m let t1;[22m
+[2m if ($[2] !== y) {[22m
+[2m t1 = [y];[22m
+[2m $[2] = y;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "sathya" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [[42]][22m
+
+[31m[1mFAIL:[22m[39m prune-scopes-whose-deps-invalidate-object
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useHook} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m useHook(); // intersperse a hook call to prevent memoization of x[22m
+[2m x.value = props.value;[22m
+
+[2m const y = {x};[22m
+
+[2m return {y};[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'sathya'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { useHook } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = {};[22m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m x.value = props.value;[22m
+
+[2m const y = { x };[22m
+[2m return { y };[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "sathya" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"y":{"x":{"value":"sathya"}}}[22m
+
+[31m[1mFAIL:[22m[39m prune-scopes-whose-deps-invalidate-new
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useHook} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const x = new Foo();[22m
+[2m useHook(); // intersperse a hook call to prevent memoization of x[22m
+[2m x.value = props.value;[22m
+
+[2m const y = {x};[22m
+
+[2m return {y};[22m
+[2m }[22m
+
+[2m class Foo {}[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'sathya'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { useHook } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = new Foo();[22m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m x.value = props.value;[22m
+
+[2m const y = { x };[22m
+[2m return { y };[22m
+[2m }[22m
+
+[2m class Foo {}[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "sathya" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"y":{"x":{"value":"sathya"}}}[22m
+
+[31m[1mFAIL:[22m[39m prune-scopes-whose-deps-invalidate-jsx
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useHook} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const o = {};[22m
+[2m const x = {props.value}
; // create within the range of x to group with x[22m
+[2m useHook(); // intersperse a hook call to prevent memoization of x[22m
+[2m o.value = props.value;[22m
+
+[2m const y = {x}
;[22m
+
+[2m return {y}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'sathya'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useHook } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(6);[22m
+[31m+ Object.freeze(props);[39m
+[2m const o = {};[22m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = {props.value}
;[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m o.value = props.value;[22m
+[2m let t1;[22m
+[2m if ($[2] !== x) {[22m
+[2m t1 = {x}
;[22m
+[2m $[2] = x;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m let t2;[22m
+[2m if ($[4] !== y) {[22m
+[2m t2 = {y}
;[22m
+[2m $[4] = y;[22m
+[2m $[5] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[5];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "sathya" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [22m
+
+[31m[1mFAIL:[22m[39m prune-scopes-whose-deps-invalidate-array
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useHook} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const x = [];[22m
+[2m useHook(); // intersperse a hook call to prevent memoization of x[22m
+[2m x.push(props.value);[22m
+
+[2m const y = [x];[22m
+
+[2m return [y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'sathya'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { useHook } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = [];[22m
+[32m- useHook();[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m x.push(props.value);[22m
+
+[2m const y = [x];[22m
+[2m return [y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "sathya" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [[["sathya"]]][22m
+
+[31m[1mFAIL:[22m[39m property-call-spread
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = foo.bar(...props.a, null, ...props.b);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.a || $[1] !== props.b) {[22m
+[2m t0 = foo.bar(...props.a, null, ...props.b);[22m
+[2m $[0] = props.a;[22m
+[2m $[1] = props.b;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m property-assignment
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m const y = [];[22m
+[2m x.y = y;[22m
+[2m const child = ;[22m
+[2m x.y.push(props.p0);[22m
+[2m return {child};[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.p0) {[22m
+[2m const x = {};[22m
+[2m const y = [];[22m
+[2m x.y = y;[22m
+[32m- const child = ;[39m
+[31m+ const child = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m x.y.push(props.p0);[22m
+[32m- t0 = {child};[39m
+[31m+ t0 = ([39m
+[31m+ [39m
+[31m+ {child}[39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[0] = props.p0;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m prop-capturing-function-1
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function component(a, b) {[22m
+[2m let z = {a, b};[22m
+[2m let x = function () {[22m
+[2m console.log(z);[22m
+[2m };[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function component(a, b) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a || $[1] !== b) {[22m
+[2m t0 = { a, b };[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const z = t0;[22m
+[2m let t1;[22m
+[2m if ($[3] !== z) {[22m
+[2m t1 = function () {[22m
+[2m console.log(z);[22m
+[2m };[22m
+[2m $[3] = z;[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m const x = t1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m primitive-reassigned-loop-force-scopes-enabled
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableForest[22m
+[2m function Component({base, start, increment, test}) {[22m
+[2m let value = base;[22m
+[2m for (let i = start; i < test; i += increment) {[22m
+[2m value += i;[22m
+[2m }[22m
+[2m return {value}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{base: 0, start: 0, test: 10, increment: 1}],[22m
+[2m sequentialRenders: [[22m
+[2m {base: 0, start: 1, test: 10, increment: 1},[22m
+[2m {base: 0, start: 0, test: 10, increment: 2},[22m
+[2m {base: 2, start: 0, test: 10, increment: 2},[22m
+[2m {base: 0, start: 0, test: 11, increment: 2},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableForest[22m
+[2m function Component(t0) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { base, start, increment, test } = t0;[22m
+[2m let value;[22m
+[2m if ($[0] !== base || $[1] !== start || $[2] !== test || $[3] !== increment) {[22m
+[2m value = base;[22m
+[2m for (let i = start; i < test; i = i + increment, i) {[22m
+[2m value = value + i;[22m
+[2m }[22m
+[2m $[0] = base;[22m
+[2m $[1] = start;[22m
+[2m $[2] = test;[22m
+[2m $[3] = increment;[22m
+[2m $[4] = value;[22m
+[2m } else {[22m
+[2m value = $[4];[22m
+[2m }[22m
+[2m return {value}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ base: 0, start: 0, test: 10, increment: 1 }],[22m
+[2m sequentialRenders: [[22m
+[2m { base: 0, start: 1, test: 10, increment: 1 },[22m
+[2m { base: 0, start: 0, test: 10, increment: 2 },[22m
+[2m { base: 2, start: 0, test: 10, increment: 2 },[22m
+[2m { base: 0, start: 0, test: 11, increment: 2 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 45
[22m
+[2m 20
[22m
+[2m 22
[22m
+[2m 30
[22m
+
+[31m[1mFAIL:[22m[39m primitive-as-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // props.b + 1 is an non-allocating expression, which means Forget can[22m
+[2m // emit it trivially and repeatedly (e.g. no need to memoize props.b + 1[22m
+[2m // separately from props.b)[22m
+[2m // Correctness:[22m
+[2m // y depends on either props.b or props.b + 1[22m
+[2m function PrimitiveAsDep(props) {[22m
+[2m let y = foo(props.b + 1);[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // props.b + 1 is an non-allocating expression, which means Forget can[22m
+[2m // emit it trivially and repeatedly (e.g. no need to memoize props.b + 1[22m
+[2m // separately from props.b)[22m
+[2m // Correctness:[22m
+[2m // y depends on either props.b or props.b + 1[22m
+[2m function PrimitiveAsDep(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const t0 = props.b + 1;[22m
+[2m let t1;[22m
+[2m if ($[0] !== t0) {[22m
+[2m t1 = foo(t0);[22m
+[2m $[0] = t0;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m primitive-as-dep-nested-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // props.b + 1 is an non-allocating expression, which means Forget can[22m
+[2m // emit it trivially and repeatedly (e.g. no need to memoize props.b + 1[22m
+[2m // separately from props.b)[22m
+[2m // Correctness:[22m
+
+[2m import {identity, mutate, setProperty} from 'shared-runtime';[22m
+
+[2m // y depends on either props.b or props.b + 1[22m
+[2m function PrimitiveAsDepNested(props) {[22m
+[2m let x = {};[22m
+[2m mutate(x);[22m
+[2m let y = identity(props.b + 1);[22m
+[2m setProperty(x, props.a);[22m
+[2m return [x, y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: PrimitiveAsDepNested,[22m
+[2m params: [{a: 1, b: 2}],[22m
+[2m sequentialRenders: [[22m
+[2m // change b[22m
+[2m {a: 1, b: 3},[22m
+[2m // change b[22m
+[2m {a: 1, b: 4},[22m
+[2m // change a[22m
+[2m {a: 2, b: 4},[22m
+[2m // change a[22m
+[2m {a: 3, b: 4},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // props.b + 1 is an non-allocating expression, which means Forget can[22m
+[2m // emit it trivially and repeatedly (e.g. no need to memoize props.b + 1[22m
+[2m // separately from props.b)[22m
+[2m // Correctness:[22m
+
+[2m import { identity, mutate, setProperty } from "shared-runtime";[22m
+
+[2m // y depends on either props.b or props.b + 1[22m
+[2m function PrimitiveAsDepNested(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.b || $[1] !== props.a) {[22m
+[2m const x = {};[22m
+[2m mutate(x);[22m
+[2m const t1 = props.b + 1;[22m
+[2m let t2;[22m
+[2m if ($[3] !== t1) {[22m
+[2m t2 = identity(t1);[22m
+[2m $[3] = t1;[22m
+[2m $[4] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[4];[22m
+[2m }[22m
+[2m const y = t2;[22m
+[2m setProperty(x, props.a);[22m
+[2m t0 = [x, y];[22m
+[2m $[0] = props.b;[22m
+[2m $[1] = props.a;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: PrimitiveAsDepNested,[22m
+[2m params: [{ a: 1, b: 2 }],[22m
+[2m sequentialRenders: [[22m
+[2m // change b[22m
+[2m { a: 1, b: 3 },[22m
+[2m // change b[22m
+[2m { a: 1, b: 4 },[22m
+[2m // change a[22m
+[2m { a: 2, b: 4 },[22m
+[2m // change a[22m
+[2m { a: 3, b: 4 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{"wat0":"joe","wat1":1},4][22m
+[2m [{"wat0":"joe","wat1":1},5][22m
+[2m [{"wat0":"joe","wat1":2},5][22m
+[2m [{"wat0":"joe","wat1":3},5][22m
+
+[31m[1mFAIL:[22m[39m primitive-alias-mutate
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function component(a) {[22m
+[2m let x = 'foo';[22m
+[2m if (a) {[22m
+[2m x = 'bar';[22m
+[2m } else {[22m
+[2m x = 'baz';[22m
+[2m }[22m
+[2m let y = x;[22m
+[2m mutate(y);[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function component(a) {[22m
+[31m+ Object.freeze(a);[39m
+[2m let x;[22m
+[2m if (a) {[22m
+[2m x = "bar";[22m
+[2m } else {[22m
+[2m x = "baz";[22m
+[2m }[22m
+
+[2m const y = x;[22m
+[2m mutate(y);[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m phi-type-inference-property-store
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @debug[22m
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m let y;[22m
+[2m if (props.cond) {[22m
+[2m y = {};[22m
+[2m } else {[22m
+[2m y = {a: props.a};[22m
+[2m }[22m
+[2m // This should be inferred as ` y` s.t. `x` can still[22m
+[2m // be independently memoized. *But* this also must properly[22m
+[2m // extend the mutable range of the object literals in the[22m
+[2m // if/else branches[22m
+[2m y.x = x;[22m
+
+[2m return [x, y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: false, a: 'a!'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @debug[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = {};[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let y;[22m
+[2m if ($[1] !== props) {[22m
+[2m if (props.cond) {[22m
+[2m y = {};[22m
+[2m } else {[22m
+[2m y = { a: props.a };[22m
+[2m }[22m
+
+[2m y.x = x;[22m
+[2m $[1] = props;[22m
+[2m $[2] = y;[22m
+[2m } else {[22m
+[2m y = $[2];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[3] !== y) {[22m
+[2m t1 = [x, y];[22m
+[2m $[3] = y;[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: false, a: "a!" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{},{"a":"a!","x":"[[ cyclic ref *1 ]]"}][22m
+
+[31m[1mFAIL:[22m[39m phi-type-inference-array-push
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {};[22m
+[2m let y;[22m
+[2m if (props.cond) {[22m
+[2m y = [props.value];[22m
+[2m } else {[22m
+[2m y = [];[22m
+[2m }[22m
+[2m // This should be inferred as ` y` s.t. `x` can still[22m
+[2m // be independently memoized. *But* this also must properly[22m
+[2m // extend the mutable range of the array literals in the[22m
+[2m // if/else branches[22m
+[2m y.push(x);[22m
+
+[2m return [x, y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true, value: 42}],[22m
+[2m sequentialRenders: [[22m
+[2m {cond: true, value: 3.14},[22m
+[2m {cond: false, value: 3.14},[22m
+[2m {cond: true, value: 42},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = {};[22m
+[2m let y;[22m
+[2m if (props.cond) {[22m
+[2m y = [props.value];[22m
+[2m } else {[22m
+[2m y = [];[22m
+[2m }[22m
+
+[2m y.push(x);[22m
+
+[2m t0 = [x, y];[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true, value: 42 }],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: true, value: 3.14 },[22m
+[2m { cond: false, value: 3.14 },[22m
+[2m { cond: true, value: 42 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{},[3.14,"[[ cyclic ref *1 ]]"]][22m
+[2m [{},["[[ cyclic ref *1 ]]"]][22m
+[2m [{},[42,"[[ cyclic ref *1 ]]"]][22m
+
+[31m[1mFAIL:[22m[39m phi-reference-effects
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {arrayPush} from 'shared-runtime';[22m
+
+[2m function Foo(cond) {[22m
+[2m let x = null;[22m
+[2m if (cond) {[22m
+[2m x = [];[22m
+[2m } else {[22m
+[2m }[22m
+[2m // Here, x = phi(x$null, x$[]) should receive a ValueKind of Mutable[22m
+[2m arrayPush(x, 2);[22m
+
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{cond: true}],[22m
+[2m sequentialRenders: [{cond: true}, {cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { arrayPush } from "shared-runtime";[22m
+
+[2m function Foo(cond) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(cond);[39m
+[2m let x;[22m
+[2m if ($[0] !== cond) {[22m
+[2m x = null;[22m
+[2m if (cond) {[22m
+[2m x = [];[22m
+[2m }[22m
+
+[2m arrayPush(x, 2);[22m
+[2m $[0] = cond;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{ cond: true }],[22m
+[2m sequentialRenders: [{ cond: true }, { cond: true }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [2][22m
+[2m [2][22m
+
+[31m[1mFAIL:[22m[39m partial-early-return-within-reactive-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = [];[22m
+[2m let y = null;[22m
+[2m if (props.cond) {[22m
+[2m x.push(props.a);[22m
+[2m // oops no memo![22m
+[2m return x;[22m
+[2m } else {[22m
+[2m y = foo();[22m
+[2m if (props.b) {[22m
+[2m return;[22m
+[2m }[22m
+[2m }[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: true, a: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let y;[22m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = Symbol.for("react.early_return_sentinel");[22m
+[2m bb0: {[22m
+[2m const x = [];[22m
+[2m if (props.cond) {[22m
+[2m x.push(props.a);[22m
+[2m t0 = x;[22m
+[2m break bb0;[22m
+[2m } else {[22m
+[2m let t1;[22m
+[2m if ($[3] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = foo();[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m y = t1;[22m
+[2m if (props.b) {[22m
+[2m t0 = undefined;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m }[22m
+[2m }[22m
+[2m $[0] = props;[22m
+[2m $[1] = y;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m y = $[1];[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m if (t0 !== Symbol.for("react.early_return_sentinel")) {[22m
+[2m return t0;[22m
+[2m }[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: true, a: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [42][22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-within-block
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m let x = [];[22m
+[2m if (a) {[22m
+[2m let y = [];[22m
+[2m if (b) {[22m
+[2m y.push(c);[22m
+[2m }[22m
+
+[2m x.push(y);[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(7);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let x;[22m
+[2m if ($[0] !== a || $[1] !== b || $[2] !== c) {[22m
+[2m x = [];[22m
+[2m if (a) {[22m
+[2m let y;[22m
+[2m if ($[4] !== b || $[5] !== c) {[22m
+[2m y = [];[22m
+[2m if (b) {[22m
+[2m y.push(c);[22m
+[2m }[22m
+[2m $[4] = b;[22m
+[2m $[5] = c;[22m
+[2m $[6] = y;[22m
+[2m } else {[22m
+[2m y = $[6];[22m
+[2m }[22m
+
+[2m x.push(y);[22m
+[2m }[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = c;[22m
+[2m $[3] = x;[22m
+[2m } else {[22m
+[2m x = $[3];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-while
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m let x = [];[22m
+[2m let y = [];[22m
+[2m while (c) {[22m
+[2m y.push(b);[22m
+[2m x.push(a);[22m
+[2m }[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m const x = [];[22m
+[2m const y = [];[22m
+[2m while (c) {[22m
+[2m y.push(b);[22m
+[2m x.push(a);[22m
+[2m }[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-shadowing-within-block
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m let x = [];[22m
+[2m if (a) {[22m
+[2m let y = [];[22m
+[2m if (b) {[22m
+[2m y.push(c);[22m
+[2m }[22m
+
+[2m x.push({y}
);[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(9);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let x;[22m
+[2m if ($[0] !== a || $[1] !== b || $[2] !== c) {[22m
+[2m x = [];[22m
+[2m if (a) {[22m
+[2m let y;[22m
+[2m if ($[4] !== b || $[5] !== c) {[22m
+[2m y = [];[22m
+[2m if (b) {[22m
+[2m y.push(c);[22m
+[2m }[22m
+[2m $[4] = b;[22m
+[2m $[5] = c;[22m
+[2m $[6] = y;[22m
+[2m } else {[22m
+[2m y = $[6];[22m
+[2m }[22m
+[2m let t0;[22m
+[2m if ($[7] !== y) {[22m
+[2m t0 = {y}
;[22m
+[2m $[7] = y;[22m
+[2m $[8] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[8];[22m
+[2m }[22m
+[2m x.push(t0);[22m
+[2m }[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = c;[22m
+[2m $[3] = x;[22m
+[2m } else {[22m
+[2m x = $[3];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-shadowed
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b) {[22m
+[2m let x = [];[22m
+[2m let y = [];[22m
+[2m y.push(b);[22m
+[2m x.push(a);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[2m const x = [];[22m
+[2m const y = [];[22m
+[2m y.push(b);[22m
+[2m x.push(a);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-interleaved
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b) {[22m
+[2m let x = [];[22m
+[2m let y = [];[22m
+[2m x.push(a);[22m
+[2m y.push(b);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[2m const x = [];[22m
+[2m const y = [];[22m
+[2m x.push(a);[22m
+[2m y.push(b);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m overlapping-scopes-interleaved-by-terminal
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m const x = [];[22m
+[2m const y = [];[22m
+
+[2m if (x) {[22m
+[2m }[22m
+
+[2m y.push(a);[22m
+[2m x.push(b);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m const x = [];[22m
+[2m const y = [];[22m
+[2m if (x) {[22m
+[2m }[22m
+
+[2m y.push(a);[22m
+[2m x.push(b);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m outlining-in-react-memo
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok)
+Forget:
+(kind: ok)
+logs: ['Warning: Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.%s','function () {\n' +
+ ' const $res$ = item.id;\n' +
+ ' Object.freeze($res$);\n' +
+ ' return $res$;\n' +
+ ' }','\n' +
+ ' at ul\n' +
+ ' at eval (eval at doEval (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:200:28), :34:36)\n' +
+ ' at WrapperTestComponent (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:89:26)']
+
+[31m[1mFAIL:[22m[39m outlining-in-func-expr
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok)
+Forget:
+(kind: ok)
+logs: ['Warning: Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.%s','function () {\n' +
+ ' const $res$ = item.id;\n' +
+ ' Object.freeze($res$);\n' +
+ ' return $res$;\n' +
+ ' }','\n' +
+ ' at ul\n' +
+ ' at WrapperTestComponent (/Users/mvitousek/react/compiler/packages/snap/dist/sprout/evaluator.js:89:26)']
+
+[31m[1mFAIL:[22m[39m outlined-helper
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok)
+Forget:
+(kind: ok) {"item":"[[ function params=0 ]]"}
+
+[31m[1mFAIL:[22m[39m outlined-destructured-params
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) {"name":"one"}
+Forget:
+(kind: ok) {"name":"[[ function params=0 ]]"}
+
+[31m[1mFAIL:[22m[39m optional-receiver-optional-method
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeOptionalObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m const z = x?.optionalMethod?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = makeOptionalObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m t0 = x?.optionalMethod?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const z = t0;[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-receiver-method-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeOptionalObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m const z = x?.method(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = makeOptionalObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m t0 = x?.method(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const z = t0;[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-method-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m const z = x.optionalMethod?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = makeObject(props);[22m
+[2m const y = makeObject(props);[22m
+[2m t0 = x.optionalMethod?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const z = t0;[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-member-expression
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Foo(props) {[22m
+[2m let x = bar(props.a);[22m
+[2m let y = x?.b;[22m
+
+[2m let z = useBar(y);[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Foo(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.a) {[22m
+[2m t0 = bar(props.a);[22m
+[2m $[0] = props.a;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m const y = x?.b;[22m
+
+[32m- const z = useBar(y);[39m
+[31m+ const z = (function () {[39m
+[31m+ const $res$ = useBar(Object.freeze(y));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-member-expression-with-optional-member-expr-as-property
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeObject();[22m
+[2m return x.y?.[props.a?.[props.b?.[props.c]]];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = makeObject();[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m return x.y?.[props.a?.[props.b?.[props.c]]];[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-member-expression-chain
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // Note that `a?.b.c` is semantically different from `(a?.b).c`[22m
+[2m // We should codegen the correct member expressions[22m
+[2m function Component(props) {[22m
+[2m let x = props?.b.c;[22m
+[2m let y = props?.b.c.d?.e.f.g?.h;[22m
+[2m return {x, y};[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // Note that `a?.b.c` is semantically different from `(a?.b).c`[22m
+[2m // We should codegen the correct member expressions[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = props?.b.c;[22m
+[2m const y = props?.b.c.d?.e.f.g?.h;[22m
+[2m let t0;[22m
+[2m if ($[0] !== x || $[1] !== y) {[22m
+[2m t0 = { x, y };[22m
+[2m $[0] = x;[22m
+[2m $[1] = y;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-member-expression-call-as-property
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeObject();[22m
+[2m return x?.[foo(props.value)];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = makeObject();[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== props) {[22m
+[2m t1 = x?.[foo(props.value)];[22m
+[2m $[1] = props;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-computed-member-expression
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const object = makeObject(props);[22m
+[2m return object?.[props.key];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = makeObject(props);[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const object = t0;[22m
+[2m return object?.[props.key];[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-computed-load-static
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m let x = a?.b.c[0];[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = a?.b.c[0];[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeOptionalFunction(props);[22m
+[2m const y = makeObject(props);[22m
+[2m const z = x?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = makeOptionalFunction(props);[22m
+[2m const y = makeObject(props);[22m
+[2m t0 = x?.(y.a, props.a, foo(y.b), bar(props.b));[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const z = t0;[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call-with-optional-property-load
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m return props?.items?.map?.(render)?.filter(Boolean) ?? [];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = props?.items?.map?.(render)?.filter(Boolean) ?? [];[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call-with-independently-memoizable-arg
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = makeOptionalFunction(props);[22m
+[2m // for a regular call, the JSX element could be independently memoized[22m
+[2m // since it is an immutable value. however, because the call is optional,[22m
+[2m // we can't extract out independent memoization for the element w/o[22m
+[2m // forcing that argument to evaluate unconditionally[22m
+[2m const y = x?.([22m
+[2m [22m
+[2m {props.text}[22m
+[2m
[22m
+[2m );[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = makeOptionalFunction(props);[22m
+
+[2m t0 = x?.([22m
+[2m [22m
+[2m {props.text}[22m
+[2m
,[22m
+[2m );[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const y = t0;[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call-simple
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m return foo?.(props);[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = foo?.(props);[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call-logical
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const item = useFragment([22m
+[2m graphql`[22m
+[2m fragment F on T {[22m
+[2m id[22m
+[2m }[22m
+[2m `,[22m
+[2m props.item[22m
+[2m );[22m
+[2m return item.items?.map(item => renderItem(item)) ?? [];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[32m- const item = useFragment([39m
+[32m- graphql`[39m
+[32m- fragment F on T {[39m
+[32m- id[39m
+[32m- }[39m
+[32m- `,[39m
+[32m- props.item,[39m
+[32m- );[39m
+[31m+ Object.freeze(props);[39m
+[31m+ const item = (function () {[39m
+[31m+ const $res$ = useFragment([39m
+[31m+ Object.freeze(graphql`[39m
+[31m+ fragment F on T {[39m
+[31m+ id[39m
+[31m+ }[39m
+[31m+ `),[39m
+[31m+ Object.freeze(props.item),[39m
+[31m+ );[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] !== item.items) {[22m
+[2m t0 = item.items?.map(_temp) ?? [];[22m
+[2m $[0] = item.items;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m function _temp(item_0) {[22m
+[2m return renderItem(item_0);[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m optional-call-chained
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m return call?.(props.a)?.(props.b)?.(props.c);[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = call?.(props.a)?.(props.b)?.(props.c);[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m option-enable-change-variable-codegen
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableChangeVariableCodegen[22m
+[2m function Component(props) {[22m
+[2m const c_0 = [props.a, props.b.c];[22m
+[2m return c_0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{a: 3.14, b: {c: true}}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableChangeVariableCodegen[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m const c_00 = $[0] !== props.a;[22m
+[2m const c_1 = $[1] !== props.b.c;[22m
+[2m let t0;[22m
+[2m if (c_00 || c_1) {[22m
+[2m t0 = [props.a, props.b.c];[22m
+[2m $[0] = props.a;[22m
+[2m $[1] = props.b.c;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const c_0 = t0;[22m
+[2m return c_0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ a: 3.14, b: { c: true } }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [3.14,true][22m
+
+[31m[1mFAIL:[22m[39m object-shorthand-method-nested
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useState} from 'react';[22m
+[2m import {createHookWrapper} from 'shared-runtime';[22m
+
+[2m function useHook({value}) {[22m
+[2m const [state] = useState(false);[22m
+
+[2m return {[22m
+[2m getX() {[22m
+[2m return {[22m
+[2m a: [],[22m
+[2m getY() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m state,[22m
+[2m };[22m
+[2m },[22m
+[2m };[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useState } from "react";[22m
+[2m import { createHookWrapper } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[32m- const [state] = useState(false);[39m
+[31m+ const [state] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(false));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t1;[22m
+[2m if ($[0] !== value || $[1] !== state) {[22m
+[2m t1 = {[22m
+[2m getX() {[22m
+[2m return {[22m
+[2m a: [],[22m
+[2m getY() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m state,[22m
+[2m };[22m
+[2m },[22m
+[2m };[22m
+[2m $[0] = value;[22m
+[2m $[1] = state;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getX":{"kind":"Function","result":{"a":[],"getY":{"kind":"Function","result":0},"state":false}}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-shorthand-method-2
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper} from 'shared-runtime';[22m
+
+[2m function useHook({a, b, c}) {[22m
+[2m return {[22m
+[2m x: [a],[22m
+[2m y() {[22m
+[2m return [b];[22m
+[2m },[22m
+[2m z: {c},[22m
+[2m };[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{a: 1, b: 2, c: 2}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[2m const $ = _c(8);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a, b, c } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== a) {[22m
+[2m t1 = [a];[22m
+[2m $[0] = a;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[2] !== b || $[3] !== c || $[4] !== t1) {[22m
+[2m let t3;[22m
+[2m if ($[6] !== c) {[22m
+[2m t3 = { c };[22m
+[2m $[6] = c;[22m
+[2m $[7] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[7];[22m
+[2m }[22m
+[2m t2 = {[22m
+[2m x: t1,[22m
+[2m y() {[22m
+[2m return [b];[22m
+[2m },[22m
+[2m z: t3,[22m
+[2m };[22m
+[2m $[2] = b;[22m
+[2m $[3] = c;[22m
+[2m $[4] = t1;[22m
+[2m $[5] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[5];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ a: 1, b: 2, c: 2 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"x":[1],"y":{"kind":"Function","result":[2]},"z":{"c":2}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-shorthand-method-1
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper} from 'shared-runtime';[22m
+[2m function useHook({a, b}) {[22m
+[2m return {[22m
+[2m x: function () {[22m
+[2m return [a];[22m
+[2m },[22m
+[2m y() {[22m
+[2m return [b];[22m
+[2m },[22m
+[2m };[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{a: 1, b: 2}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper } from "shared-runtime";[22m
+[2m function useHook(t0) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a, b } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== a) {[22m
+[2m t1 = function () {[22m
+[2m return [a];[22m
+[2m };[22m
+[2m $[0] = a;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[2] !== b || $[3] !== t1) {[22m
+[2m t2 = {[22m
+[2m x: t1,[22m
+[2m y() {[22m
+[2m return [b];[22m
+[2m },[22m
+[2m };[22m
+[2m $[2] = b;[22m
+[2m $[3] = t1;[22m
+[2m $[4] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[4];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ a: 1, b: 2 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"x":{"kind":"Function","result":[1]},"y":{"kind":"Function","result":[2]}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-properties
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m const x = a.x;[22m
+[2m const y = {...b.c.d};[22m
+[2m y.z = c.d.e;[22m
+[2m foo(a.b.c);[22m
+[2m [a.b.c];[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+[39m
+[2m const y = { ...b.c.d };[22m
+[2m y.z = c.d.e;[22m
+[2m foo(a.b.c);[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m object-pattern-params
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function component({a, b}) {[22m
+[2m let y = {a};[22m
+[2m let z = {b};[22m
+[2m return {y, z};[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function component(t0) {[22m
+[2m const $ = _c(7);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a, b } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== a) {[22m
+[2m t1 = { a };[22m
+[2m $[0] = a;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== b) {[22m
+[2m t2 = { b };[22m
+[2m $[2] = b;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m const z = t2;[22m
+[2m let t3;[22m
+[2m if ($[4] !== y || $[5] !== z) {[22m
+[2m t3 = { y, z };[22m
+[2m $[4] = y;[22m
+[2m $[5] = z;[22m
+[2m $[6] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[6];[22m
+[2m }[22m
+[2m return t3;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m object-mutated-in-consequent-alternate-both-return
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {makeObject_Primitives} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const object = makeObject_Primitives();[22m
+[2m if (props.cond) {[22m
+[2m object.value = 1;[22m
+[2m return object;[22m
+[2m } else {[22m
+[2m object.value = props.value;[22m
+[2m return object;[22m
+[2m }[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{cond: false, value: [0, 1, 2]}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { makeObject_Primitives } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m t0 = Symbol.for("react.early_return_sentinel");[22m
+[2m bb0: {[22m
+[2m const object = makeObject_Primitives();[22m
+[2m if (props.cond) {[22m
+[2m object.value = 1;[22m
+[2m t0 = object;[22m
+[2m break bb0;[22m
+[2m } else {[22m
+[2m object.value = props.value;[22m
+[2m t0 = object;[22m
+[2m break bb0;[22m
+[2m }[22m
+[2m }[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m if (t0 !== Symbol.for("react.early_return_sentinel")) {[22m
+[2m return t0;[22m
+[2m }[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ cond: false, value: [0, 1, 2] }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"a":0,"b":"value1","c":true,"value":[0,1,2]}[22m
+
+[31m[1mFAIL:[22m[39m object-method-shorthand-mutated-after
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, mutate, mutateAndReturn} from 'shared-runtime';[22m
+[2m function useHook({value}) {[22m
+[2m const x = mutateAndReturn({value});[22m
+[2m const obj = {[22m
+[2m getValue() {[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+[2m mutate(obj);[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper, mutate, mutateAndReturn } from "shared-runtime";[22m
+[2m function useHook(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m let obj;[22m
+[2m if ($[0] !== value) {[22m
+[2m const x = mutateAndReturn({ value });[22m
+[2m obj = {[22m
+[2m getValue() {[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+
+[2m mutate(obj);[22m
+[2m $[0] = value;[22m
+[2m $[1] = obj;[22m
+[2m } else {[22m
+[2m obj = $[1];[22m
+[2m }[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getValue":{"kind":"Function","result":{"value":0,"wat0":"joe"}},"wat0":"joe"},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-method-shorthand-hook-dep
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper} from 'shared-runtime';[22m
+[2m import {useState} from 'react';[22m
+[2m function useFoo() {[22m
+[2m const [state, _setState] = useState(false);[22m
+[2m return {[22m
+[2m func() {[22m
+[2m return state;[22m
+[2m },[22m
+[2m };[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useFoo),[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper } from "shared-runtime";[22m
+[2m import { useState } from "react";[22m
+[2m function useFoo() {[22m
+[2m const $ = _c(2);[22m
+[32m- const [state] = useState(false);[39m
+[31m+ const [state] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(false));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] !== state) {[22m
+[2m t0 = {[22m
+[2m func() {[22m
+[2m return state;[22m
+[2m },[22m
+[2m };[22m
+[2m $[0] = state;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useFoo),[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"func":{"kind":"Function","result":false}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-method-shorthand-derived-value
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, mutateAndReturn} from 'shared-runtime';[22m
+[2m function useHook({value}) {[22m
+[2m const x = mutateAndReturn({value});[22m
+[2m const obj = {[22m
+[2m getValue() {[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper, mutateAndReturn } from "shared-runtime";[22m
+[2m function useHook(t0) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== value) {[22m
+[2m t1 = mutateAndReturn({ value });[22m
+[2m $[0] = value;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const x = t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== x) {[22m
+[2m t2 = {[22m
+[2m getValue() {[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+[2m $[2] = x;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m const obj = t2;[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getValue":{"kind":"Function","result":{"value":0,"wat0":"joe"}}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-method-shorthand-aliased-mutate-after
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, mutate, mutateAndReturn} from 'shared-runtime';[22m
+[2m function useHook({value}) {[22m
+[2m const x = mutateAndReturn({value});[22m
+[2m const obj = {[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m };[22m
+[2m mutate(x);[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper, mutate, mutateAndReturn } from "shared-runtime";[22m
+[2m function useHook(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m let obj;[22m
+[2m if ($[0] !== value) {[22m
+[2m const x = mutateAndReturn({ value });[22m
+[2m obj = {[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m };[22m
+
+[2m mutate(x);[22m
+[2m $[0] = value;[22m
+[2m $[1] = obj;[22m
+[2m } else {[22m
+[2m obj = $[1];[22m
+[2m }[22m
+[2m return obj;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getValue":{"kind":"Function","result":0}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-method-shorthand-3
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, mutate} from 'shared-runtime';[22m
+
+[2m function useHook(a) {[22m
+[2m const x = {a};[22m
+[2m let obj = {[22m
+[2m method() {[22m
+[2m mutate(x);[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+[2m return obj.method();[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{x: 1}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper, mutate } from "shared-runtime";[22m
+
+[2m function useHook(a) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(a);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a) {[22m
+[2m const x = { a };[22m
+[2m const obj = {[22m
+[2m method() {[22m
+[2m mutate(x);[22m
+[2m return x;[22m
+[2m },[22m
+[2m };[22m
+
+[2m t0 = obj.method();[22m
+[2m $[0] = a;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ x: 1 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"a":{"x":1},"wat0":"joe"},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-method-maybe-alias
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, setProperty} from 'shared-runtime';[22m
+[2m function useHook(props) {[22m
+[2m const x = {[22m
+[2m getX() {[22m
+[2m return props;[22m
+[2m },[22m
+[2m };[22m
+[2m const y = {[22m
+[2m getY() {[22m
+[2m return 'y';[22m
+[2m },[22m
+[2m };[22m
+[2m return setProperty(x, y);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper, setProperty } from "shared-runtime";[22m
+[2m function useHook(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props) {[22m
+[2m const x = {[22m
+[2m getX() {[22m
+[2m return props;[22m
+[2m },[22m
+[2m };[22m
+
+[2m const y = {[22m
+[2m getY() {[22m
+[2m return "y";[22m
+[2m },[22m
+[2m };[22m
+
+[2m t0 = setProperty(x, y);[22m
+[2m $[0] = props;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getX":{"kind":"Function","result":{"value":0}},"wat0":{"getY":{"kind":"Function","result":"y"}}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-literal-spread-element
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {...props.foo};[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.foo) {[22m
+[2m t0 = { ...props.foo };[22m
+[2m $[0] = props.foo;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m object-literal-method-in-ternary-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper, CONST_STRING0, CONST_STRING1} from 'shared-runtime';[22m
+
+[2m function useHook({value}) {[22m
+[2m return {[22m
+[2m getValue() {[22m
+[2m return identity(value);[22m
+[2m },[22m
+[2m }[22m
+[2m ? CONST_STRING0[22m
+[2m : CONST_STRING1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import {[22m
+[2m createHookWrapper,[22m
+[2m CONST_STRING0,[22m
+[2m CONST_STRING1,[22m
+[2m } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m return {[22m
+[2m getValue() {[22m
+[2m return identity(value);[22m
+[2m },[22m
+[2m }[22m
+[2m ? CONST_STRING0[22m
+[2m : CONST_STRING1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":"global string 0","shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-literal-method-in-ternary-consequent
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {createHookWrapper} from 'shared-runtime';[22m
+
+[2m function useHook({isCond, value}) {[22m
+[2m return isCond[22m
+[2m ? {[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m }[22m
+[2m : 42;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{isCond: true, value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { createHookWrapper } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { isCond, value } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== isCond || $[1] !== value) {[22m
+[2m t1 = isCond[22m
+[2m ? {[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m }[22m
+[2m : 42;[22m
+[2m $[0] = isCond;[22m
+[2m $[1] = value;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ isCond: true, value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getValue":{"kind":"Function","result":0}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-literal-method-derived-in-ternary-consequent
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, createHookWrapper} from 'shared-runtime';[22m
+
+[2m function useHook({isCond, value}) {[22m
+[2m return isCond[22m
+[2m ? identity({[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m })[22m
+[2m : 42;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{isCond: true, value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, createHookWrapper } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { isCond, value } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== isCond || $[1] !== value) {[22m
+[2m t1 = isCond[22m
+[2m ? identity({[22m
+[2m getValue() {[22m
+[2m return value;[22m
+[2m },[22m
+[2m })[22m
+[2m : 42;[22m
+[2m $[0] = isCond;[22m
+[2m $[1] = value;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ isCond: true, value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":{"getValue":{"kind":"Function","result":0}},"shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-literal-method-call-in-ternary-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {[22m
+[2m createHookWrapper,[22m
+[2m identity,[22m
+[2m CONST_STRING0,[22m
+[2m CONST_STRING1,[22m
+[2m } from 'shared-runtime';[22m
+
+[2m function useHook({value}) {[22m
+[2m return {[22m
+[2m getValue() {[22m
+[2m return identity(value);[22m
+[2m },[22m
+[2m }.getValue()[22m
+[2m ? CONST_STRING0[22m
+[2m : CONST_STRING1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{value: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import {[22m
+[2m createHookWrapper,[22m
+[2m identity,[22m
+[2m CONST_STRING0,[22m
+[2m CONST_STRING1,[22m
+[2m } from "shared-runtime";[22m
+
+[2m function useHook(t0) {[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { value } = t0;[22m
+[2m return {[22m
+[2m getValue() {[22m
+[2m return identity(value);[22m
+[2m },[22m
+[2m }.getValue()[22m
+[2m ? CONST_STRING0[22m
+[2m : CONST_STRING1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: createHookWrapper(useHook),[22m
+[2m params: [{ value: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"result":"global string 1","shouldInvokeFns":true}
[22m
+
+[31m[1mFAIL:[22m[39m object-expression-string-literal-key
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = {['foo']: props.foo};[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.foo) {[22m
+[2m t0 = { foo: props.foo };[22m
+[2m $[0] = props.foo;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m object-expression-computed-key
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m const SCALE = 2;[22m
+
+[2m function Component(props) {[22m
+[2m const {key} = props;[22m
+[2m const context = {[22m
+[2m [key]: identity([props.value, SCALE]),[22m
+[2m };[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{key: 'Sathya', value: 'Compiler'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m const SCALE = 2;[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m const { key } = props;[22m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = identity([props.value, SCALE]);[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[2] !== key || $[3] !== t0) {[22m
+[2m t1 = { [key]: t0 };[22m
+[2m $[2] = key;[22m
+[2m $[3] = t0;[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m const context = t1;[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ key: "Sathya", value: "Compiler" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"Sathya":["Compiler",2]}[22m
+
+[31m[1mFAIL:[22m[39m object-expression-computed-key-object-mutated-later
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, mutate} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const key = {};[22m
+[2m const context = {[22m
+[2m [key]: identity([props.value]),[22m
+[2m };[22m
+[2m mutate(key);[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, mutate } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = {};[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const key = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== props.value) {[22m
+[2m t1 = identity([props.value]);[22m
+[2m $[1] = props.value;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[3] !== t1) {[22m
+[2m t2 = { [key]: t1 };[22m
+[2m $[3] = t1;[22m
+[2m $[4] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[4];[22m
+[2m }[22m
+[2m const context = t2;[22m
+
+[2m mutate(key);[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"[object Object]":[42]}[22m
+
+[31m[1mFAIL:[22m[39m object-expression-computed-key-non-reactive
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m const SCALE = 2;[22m
+
+[2m function Component(props) {[22m
+[2m const key = SCALE;[22m
+[2m const context = {[22m
+[2m [key]: identity([props.value]),[22m
+[2m };[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{key: 'Sathya', value: 'Compiler'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m const SCALE = 2;[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = identity([props.value]);[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = { [SCALE]: t0 };[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const context = t1;[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ key: "Sathya", value: "Compiler" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"2":["Compiler"]}[22m
+
+[31m[1mFAIL:[22m[39m object-expression-computed-key-constant-string
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const key = 'KeyName';[22m
+[2m const context = {[22m
+[2m [key]: identity([props.value]),[22m
+[2m };[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = identity([props.value]);[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = { ["KeyName"]: t0 };[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const context = t1;[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"KeyName":[42]}[22m
+
+[31m[1mFAIL:[22m[39m object-expression-computed-key-constant-number
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const key = 42;[22m
+[2m const context = {[22m
+[2m [key]: identity([props.value]),[22m
+[2m };[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 'hello!'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = identity([props.value]);[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[2] !== t0) {[22m
+[2m t1 = { [42]: t0 };[22m
+[2m $[2] = t0;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const context = t1;[22m
+[2m return context;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: "hello!" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"42":["hello!"]}[22m
+
+[31m[1mFAIL:[22m[39m object-computed-access-assignment
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m const x = {...a};[22m
+[2m x[b] = c[b];[22m
+[2m x[1 + 2] = c[b * 4];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m const x = { ...a };[22m
+[2m x[b] = c[b];[22m
+[2m x[3] = c[b * 4];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m obj-mutated-after-nested-if-else-with-alias
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c, d) {[22m
+[2m let x = someObj();[22m
+[2m if (a) {[22m
+[2m let z;[22m
+[2m if (b) {[22m
+[2m const w = someObj();[22m
+[2m z = w;[22m
+[2m } else {[22m
+[2m z = someObj();[22m
+[2m }[22m
+[2m const y = z;[22m
+[2m x = z;[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c, d) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+ Object.freeze(d);[39m
+[2m someObj();[22m
+[2m let x;[22m
+[2m if ($[0] !== a || $[1] !== b) {[22m
+[2m if (a) {[22m
+[2m let z;[22m
+[2m if (b) {[22m
+[2m const w = someObj();[22m
+[2m z = w;[22m
+[2m } else {[22m
+[2m z = someObj();[22m
+[2m }[22m
+
+[2m x = z;[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = x;[22m
+[2m } else {[22m
+[2m x = $[2];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m obj-mutated-after-if-else
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c, d) {[22m
+[2m let x = someObj();[22m
+[2m if (a) {[22m
+[2m x = someObj();[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c, d) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+ Object.freeze(d);[39m
+[2m someObj();[22m
+[2m let x;[22m
+[2m if ($[0] !== a) {[22m
+[2m if (a) {[22m
+[2m x = someObj();[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m $[0] = a;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m obj-mutated-after-if-else-with-alias
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c, d) {[22m
+[2m let x = someObj();[22m
+[2m if (a) {[22m
+[2m const y = someObj();[22m
+[2m const z = y;[22m
+[2m x = z;[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c, d) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+ Object.freeze(d);[39m
+[2m someObj();[22m
+[2m let x;[22m
+[2m if ($[0] !== a) {[22m
+[2m if (a) {[22m
+[2m const y = someObj();[22m
+[2m const z = y;[22m
+[2m x = z;[22m
+[2m } else {[22m
+[2m x = someObj();[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m $[0] = a;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m obj-literal-mutated-after-if-else
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c, d) {[22m
+[2m let x = {};[22m
+[2m if (someVal) {[22m
+[2m x = {b};[22m
+[2m } else {[22m
+[2m x = {c};[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c, d) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+ Object.freeze(d);[39m
+[2m let x;[22m
+[2m if ($[0] !== b || $[1] !== c) {[22m
+[2m if (someVal) {[22m
+[2m x = { b };[22m
+[2m } else {[22m
+[2m x = { c };[22m
+[2m }[22m
+
+[2m x.f = 1;[22m
+[2m $[0] = b;[22m
+[2m $[1] = c;[22m
+[2m $[2] = x;[22m
+[2m } else {[22m
+[2m x = $[2];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m obj-literal-cached-in-if-else
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c, d) {[22m
+[2m let x = {};[22m
+[2m if (someVal) {[22m
+[2m x = {b};[22m
+[2m } else {[22m
+[2m x = {c};[22m
+[2m }[22m
+
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c, d) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[31m+ Object.freeze(d);[39m
+[2m let x;[22m
+[2m if (someVal) {[22m
+[2m let t0;[22m
+[2m if ($[0] !== b) {[22m
+[2m t0 = { b };[22m
+[2m $[0] = b;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m x = t0;[22m
+[2m } else {[22m
+[2m let t0;[22m
+[2m if ($[2] !== c) {[22m
+[2m t0 = { c };[22m
+[2m $[2] = c;[22m
+[2m $[3] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[3];[22m
+[2m }[22m
+[2m x = t0;[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m nonreactive-noescaping-dependency-can-inline-into-consuming-scope
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @flow[22m
+[2m function Component() {[22m
+[2m return ([22m
+[2m [22m
+[2m );[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component() {[22m
+[2m const $ = _c(1);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = ([22m
+[2m [22m
+[2m );[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: exception) Fixture not implemented[22m
+
+[31m[1mFAIL:[22m[39m nonoptional-load-from-optional-memberexpr
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // Note that `a?.b.c` is semantically different from `(a?.b).c`[22m
+[2m // Here, 'props?.a` is an optional chain, and `.b` is an unconditional load[22m
+[2m // (nullthrows if a is nullish)[22m
+
+[2m function Component(props) {[22m
+[2m let x = (props?.a).b;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m // Note that `a?.b.c` is semantically different from `(a?.b).c`[22m
+[2m // Here, 'props?.a` is an optional chain, and `.b` is an unconditional load[22m
+[2m // (nullthrows if a is nullish)[22m
+
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = (props?.a).b;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m nonmutating-capture-in-unsplittable-memo-block
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, mutate} from 'shared-runtime';[22m
+
+[2m /**[22m
+[2m * Currently, InferReactiveScopeVariables do not ensure that maybe-aliased[22m
+[2m * values get assigned the same reactive scope. This is safe only when an[22m
+[2m * already-constructed value is captured, e.g.[22m
+[2m * ```js[22m
+[2m * const x = makeObj(); ⌝ mutable range of x[22m
+[2m * mutate(x); ⌟[22m
+[2m * <-- after this point, we can produce a canonical version[22m
+[2m * of x for all following aliases[22m
+[2m * const y = [];[22m
+[2m * y.push(x); <-- y captures x[22m
+[2m * ```[22m
+[2m *[22m
+[2m * However, if a value is captured/aliased during its mutable range and the[22m
+[2m * capturing container is separately memoized, it becomes difficult to guarantee[22m
+[2m * that all aliases refer to the same value.[22m
+[2m *[22m
+[2m */[22m
+[2m function useFoo({a, b}) {[22m
+[2m const x = {a};[22m
+[2m const y = {};[22m
+[2m mutate(x);[22m
+[2m const z = [identity(y), b];[22m
+[2m mutate(y);[22m
+
+[2m if (z[0] !== y) {[22m
+[2m throw new Error('oh no!');[22m
+[2m }[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{a: 2, b: 3}],[22m
+[2m sequentialRenders: [[22m
+[2m {a: 2, b: 3},[22m
+[2m {a: 4, b: 3},[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, mutate } from "shared-runtime";[22m
+
+[2m /**[22m
+[2m * Currently, InferReactiveScopeVariables do not ensure that maybe-aliased[22m
+[2m * values get assigned the same reactive scope. This is safe only when an[22m
+[2m * already-constructed value is captured, e.g.[22m
+[2m * ```js[22m
+[2m * const x = makeObj(); ⌝ mutable range of x[22m
+[2m * mutate(x); ⌟[22m
+[2m * <-- after this point, we can produce a canonical version[22m
+[2m * of x for all following aliases[22m
+[2m * const y = [];[22m
+[2m * y.push(x); <-- y captures x[22m
+[2m * ```[22m
+[2m *[22m
+[2m * However, if a value is captured/aliased during its mutable range and the[22m
+[2m * capturing container is separately memoized, it becomes difficult to guarantee[22m
+[2m * that all aliases refer to the same value.[22m
+[2m *[22m
+[2m */[22m
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(4);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a, b } = t0;[22m
+[2m let z;[22m
+[2m let y;[22m
+[2m if ($[0] !== a || $[1] !== b) {[22m
+[2m const x = { a };[22m
+[2m y = {};[22m
+[2m mutate(x);[22m
+[2m z = [identity(y), b];[22m
+[2m mutate(y);[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = z;[22m
+[2m $[3] = y;[22m
+[2m } else {[22m
+[2m z = $[2];[22m
+[2m y = $[3];[22m
+[2m }[22m
+[2m if (z[0] !== y) {[22m
+[2m throw new Error("oh no!");[22m
+[2m }[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ a: 2, b: 3 }],[22m
+[2m sequentialRenders: [[22m
+[2m { a: 2, b: 3 },[22m
+[2m { a: 4, b: 3 },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{"wat0":"joe"},3][22m
+[2m [{"wat0":"joe"},3][22m
+
+[31m[1mFAIL:[22m[39m non-null-assertion
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m interface ComponentProps {[22m
+[2m name?: string;[22m
+[2m }[22m
+
+[2m function Component(props: ComponentProps) {[22m
+[2m return props.name!.toUpperCase();[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{name: 'Alice'}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m interface ComponentProps {[22m
+[2m name?: string;[22m
+[2m }[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.name) {[22m
+[2m t0 = props.name.toUpperCase();[22m
+[2m $[0] = props.name;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ name: "Alice" }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) "ALICE"[22m
+
+[31m[1mFAIL:[22m[39m noAlias-filter-on-array-prop
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const filtered = props.items.filter(item => item != null);[22m
+[2m return filtered;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [[22m
+[2m {[22m
+[2m items: [{a: true}, null, true, false, null, 'string', 3.14, null, [null]],[22m
+[2m },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.items) {[22m
+[2m t0 = props.items.filter(_temp);[22m
+[2m $[0] = props.items;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const filtered = t0;[22m
+[2m return filtered;[22m
+[2m }[22m
+[2m function _temp(item) {[22m
+[2m return item != null;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [[22m
+[2m {[22m
+[2m items: [[22m
+[2m { a: true },[22m
+[2m null,[22m
+[2m true,[22m
+[2m false,[22m
+[2m null,[22m
+[2m "string",[22m
+[2m 3.14,[22m
+[2m null,[22m
+[2m [null],[22m
+[2m ],[22m
+[2m },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{"a":true},true,false,"string",3.14,[null]][22m
+
+[31m[1mFAIL:[22m[39m no-flow-bailout-unrelated
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableFlowSuppressions[22m
+
+[2m function useX() {}[22m
+
+[2m function Foo(props) {[22m
+[2m // $FlowFixMe[incompatible-type][22m
+[2m useX();[22m
+[2m return null;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m // @enableFlowSuppressions[22m
+
+[2m function useX() {}[22m
+
+[2m function Foo(props) {[22m
+[32m- useX();[39m
+[31m+ Object.freeze(props);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useX();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m return null;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) null[22m
+
+[31m[1mFAIL:[22m[39m new-spread
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const x = new Foo(...props.foo, null, ...[props.bar]);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.bar || $[1] !== props.foo) {[22m
+[2m t0 = new Foo(...props.foo, null, ...[props.bar]);[22m
+[2m $[0] = props.bar;[22m
+[2m $[1] = props.foo;[22m
+[2m $[2] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[2];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m new-does-not-mutate-class
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity} from 'shared-runtime';[22m
+
+[2m class Foo {}[22m
+[2m function Component({val}) {[22m
+[2m const MyClass = identity(Foo);[22m
+[2m const x = [val];[22m
+[2m const y = new MyClass();[22m
+
+[2m return [x, y];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{val: 0}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity } from "shared-runtime";[22m
+
+[2m class Foo {}[22m
+[2m function Component(t0) {[22m
+[2m const $ = _c(6);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { val } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t1 = identity(Foo);[22m
+[2m $[0] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[0];[22m
+[2m }[22m
+[2m const MyClass = t1;[22m
+[2m let t2;[22m
+[2m if ($[1] !== val) {[22m
+[2m t2 = [val];[22m
+[2m $[1] = val;[22m
+[2m $[2] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[2];[22m
+[2m }[22m
+[2m const x = t2;[22m
+[2m let t3;[22m
+[2m if ($[3] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t3 = new MyClass();[22m
+[2m $[3] = t3;[22m
+[2m } else {[22m
+[2m t3 = $[3];[22m
+[2m }[22m
+[2m const y = t3;[22m
+[2m let t4;[22m
+[2m if ($[4] !== x) {[22m
+[2m t4 = [x, y];[22m
+[2m $[4] = x;[22m
+[2m $[5] = t4;[22m
+[2m } else {[22m
+[2m t4 = $[5];[22m
+[2m }[22m
+[2m return t4;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ val: 0 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [[0],{}][22m
+
+[31m[1mFAIL:[22m[39m nested-scopes-hook-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function component(props) {[22m
+[2m let x = [];[22m
+[2m let y = [];[22m
+[2m y.push(useHook(props.foo));[22m
+[2m x.push(y);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const x = [];[22m
+[2m const y = [];[22m
+[32m- y.push(useHook(props.foo));[39m
+[31m+ y.push([39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useHook(Object.freeze(props.foo));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })(),[39m
+[31m+ );[39m
+[2m x.push(y);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m nested-scopes-begin-same-instr-valueblock
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, mutate} from 'shared-runtime';[22m
+
+[2m function Foo({cond}) {[22m
+[2m const x = identity(identity(cond)) ? {a: 2} : {b: 2};[22m
+
+[2m mutate(x);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{cond: false}],[22m
+[2m sequentialRenders: [{cond: false}, {cond: false}, {cond: true}, {cond: true}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, mutate } from "shared-runtime";[22m
+
+[2m function Foo(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { cond } = t0;[22m
+[2m let x;[22m
+[2m if ($[0] !== cond) {[22m
+[2m x = identity(identity(cond)) ? { a: 2 } : { b: 2 };[22m
+
+[2m mutate(x);[22m
+[2m $[0] = cond;[22m
+[2m $[1] = x;[22m
+[2m } else {[22m
+[2m x = $[1];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Foo,[22m
+[2m params: [{ cond: false }],[22m
+[2m sequentialRenders: [[22m
+[2m { cond: false },[22m
+[2m { cond: false },[22m
+[2m { cond: true },[22m
+[2m { cond: true },[22m
+[2m ],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"b":2,"wat0":"joe"}[22m
+[2m {"b":2,"wat0":"joe"}[22m
+[2m {"a":2,"wat0":"joe"}[22m
+[2m {"a":2,"wat0":"joe"}[22m
+
+[31m[1mFAIL:[22m[39m nested-optional-member-expr
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // We should codegen nested optional properties correctly[22m
+[2m // (i.e. placing `?` in the correct PropertyLoad)[22m
+[2m function Component(props) {[22m
+[2m let x = foo(props.a?.b.c.d);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // We should codegen nested optional properties correctly[22m
+[2m // (i.e. placing `?` in the correct PropertyLoad)[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m const t0 = props.a?.b.c.d;[22m
+[2m let t1;[22m
+[2m if ($[0] !== t0) {[22m
+[2m t1 = foo(t0);[22m
+[2m $[0] = t0;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m const x = t1;[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m nested-function-shadowed-identifiers
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component(props) {[22m
+[2m const [x, setX] = useState(null);[22m
+
+[2m const onChange = e => {[22m
+[2m let x = null; // intentionally shadow the original x[22m
+[2m setX(currentX => currentX + x); // intentionally refer to shadowed x[22m
+[2m };[22m
+
+[2m return ;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ['TodoAdd'],[22m
+[2m isComponent: 'TodoAdd',[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component(props) {[22m
+[2m const $ = _c(3);[22m
+[32m- const [x, setX] = useState(null);[39m
+[31m+ Object.freeze(props);[39m
+[31m+ const [x, setX] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(null));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = (e) => {[22m
+[2m setX((currentX) => currentX + null);[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onChange = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] !== x) {[22m
+[32m- t1 = ;[39m
+[31m+ t1 = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[1] = x;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: ["TodoAdd"],[22m
+[2m isComponent: "TodoAdd",[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m mutation-within-jsx
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) {"value":{"a":0,"b":"value1","c":true,"wat0":"joe"}}
+{"value":{"a":0,"b":"value1","c":true,"wat0":"joe"}}
+Forget:
+(kind: ok) {"value":"[[ function params=0 ]]"}
+{"value":"[[ function params=0 ]]"}
+
+[31m[1mFAIL:[22m[39m mutation-within-jsx-and-break
+ >> Unexpected error during test:
+
+
+Found differences in evaluator results
+Non-forget (expected):
+(kind: ok) {"value":{"a":0,"b":"value1","c":true,"wat0":"joe"}}
+{"value":{"a":0,"b":"value1","c":true,"wat0":"joe"}}
+Forget:
+(kind: ok) {"value":"[[ function params=0 ]]"}
+{"value":"[[ function params=0 ]]"}
+
+[31m[1mFAIL:[22m[39m mutation-within-capture-and-mutablerange
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {mutate} from 'shared-runtime';[22m
+
+[2m /**[22m
+[2m * This test fixture is similar to mutation-within-jsx. The only difference[22m
+[2m * is that there is no `freeze` effect here, which means that `z` may be[22m
+[2m * mutated after its memo block through mutating `y`.[22m
+[2m *[22m
+[2m * While this is technically correct (as `z` is a nested memo block), it[22m
+[2m * is an edge case as we believe that values are not mutated after their[22m
+[2m * memo blocks (which may lead to 'tearing', i.e. mutating one render's[22m
+[2m * values in a subsequent render.[22m
+[2m */[22m
+[2m function useFoo({a, b}) {[22m
+[2m // x and y's scopes start here[22m
+[2m const x = {a};[22m
+[2m const y = [b];[22m
+[2m mutate(x);[22m
+[2m // z captures the result of `mutate(y)`, which may be aliased to `y`.[22m
+[2m const z = [mutate(y)];[22m
+[2m // the following line may also mutate z[22m
+[2m mutate(y);[22m
+[2m // and end here[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{a: 2, b: 3}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { mutate } from "shared-runtime";[22m
+
+[2m /**[22m
+[2m * This test fixture is similar to mutation-within-jsx. The only difference[22m
+[2m * is that there is no `freeze` effect here, which means that `z` may be[22m
+[2m * mutated after its memo block through mutating `y`.[22m
+[2m *[22m
+[2m * While this is technically correct (as `z` is a nested memo block), it[22m
+[2m * is an edge case as we believe that values are not mutated after their[22m
+[2m * memo blocks (which may lead to 'tearing', i.e. mutating one render's[22m
+[2m * values in a subsequent render.[22m
+[2m */[22m
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(3);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { a, b } = t0;[22m
+[2m let z;[22m
+[2m if ($[0] !== a || $[1] !== b) {[22m
+[2m const x = { a };[22m
+[2m const y = [b];[22m
+[2m mutate(x);[22m
+
+[2m z = [mutate(y)];[22m
+
+[2m mutate(y);[22m
+[2m $[0] = a;[22m
+[2m $[1] = b;[22m
+[2m $[2] = z;[22m
+[2m } else {[22m
+[2m z = $[2];[22m
+[2m }[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ a: 2, b: 3 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [null][22m
+
+[31m[1mFAIL:[22m[39m mutation-during-jsx-construction
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {identity, mutate, mutateAndReturnNewValue} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m const key = {};[22m
+[2m // Key is modified by the function, but key itself is not frozen[22m
+[2m const element = {props.value}
;[22m
+[2m // Key is later mutated here: this mutation must be grouped with the[22m
+[2m // jsx construction above[22m
+[2m mutate(key);[22m
+[2m return element;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { identity, mutate, mutateAndReturnNewValue } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let element;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m const key = {};[22m
+
+[32m- element = {props.value}
;[39m
+[31m+ element = ([39m
+[31m+ [39m
+[31m+ {props.value}[39m
+[31m+
[39m
+[31m+ );[39m
+
+[2m mutate(key);[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = element;[22m
+[2m } else {[22m
+[2m element = $[1];[22m
+[2m }[22m
+[2m return element;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 42
[22m
+
+[31m[1mFAIL:[22m[39m mutate-outer-scope-within-value-block
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {CONST_TRUE, identity, shallowCopy} from 'shared-runtime';[22m
+
+[2m /**[22m
+[2m * There are three values with their own scopes in this fixture.[22m
+[2m * - arr, whose mutable range extends to the `mutate(...)` call[22m
+[2m * - cond, which has a mutable range of exactly 1 (e.g. created but not[22m
+[2m * mutated)[22m
+[2m * - { val: CONST_TRUE }, which is also not mutated after creation. However,[22m
+[2m * its scope range becomes extended to the value block.[22m
+[2m *[22m
+[2m * After AlignScopesToBlockScopes, our scopes look roughly like this[22m
+[2m * ```js[22m
+[2m * [1] arr = shallowCopy() ⌝@0[22m
+[2m * [2] cond = identity() <- @1 |[22m
+[2m * [3] $0 = Ternary test=cond ⌝@2 |[22m
+[2m * [4] {val : CONST_TRUE} | |[22m
+[2m * [5] mutate(arr) | |[22m
+[2m * [6] return $0 ⌟ ⌟[22m
+[2m * ```[22m
+[2m *[22m
+[2m * Observe that instruction 5 mutates scope 0, which means that scopes 0 and 2[22m
+[2m * should be merged.[22m
+[2m */[22m
+[2m function useFoo({input}) {[22m
+[2m const arr = shallowCopy(input);[22m
+
+[2m const cond = identity(false);[22m
+[2m return cond ? {val: CONST_TRUE} : mutate(arr);[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{input: 3}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { CONST_TRUE, identity, shallowCopy } from "shared-runtime";[22m
+
+[2m /**[22m
+[2m * There are three values with their own scopes in this fixture.[22m
+[2m * - arr, whose mutable range extends to the `mutate(...)` call[22m
+[2m * - cond, which has a mutable range of exactly 1 (e.g. created but not[22m
+[2m * mutated)[22m
+[2m * - { val: CONST_TRUE }, which is also not mutated after creation. However,[22m
+[2m * its scope range becomes extended to the value block.[22m
+[2m *[22m
+[2m * After AlignScopesToBlockScopes, our scopes look roughly like this[22m
+[2m * ```js[22m
+[2m * [1] arr = shallowCopy() ⌝@0[22m
+[2m * [2] cond = identity() <- @1 |[22m
+[2m * [3] $0 = Ternary test=cond ⌝@2 |[22m
+[2m * [4] {val : CONST_TRUE} | |[22m
+[2m * [5] mutate(arr) | |[22m
+[2m * [6] return $0 ⌟ ⌟[22m
+[2m * ```[22m
+[2m *[22m
+[2m * Observe that instruction 5 mutates scope 0, which means that scopes 0 and 2[22m
+[2m * should be merged.[22m
+[2m */[22m
+[2m function useFoo(t0) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(t0);[39m
+[2m const { input } = t0;[22m
+[2m let t1;[22m
+[2m if ($[0] !== input) {[22m
+[2m const arr = shallowCopy(input);[22m
+
+[2m const cond = identity(false);[22m
+[2m t1 = cond ? { val: CONST_TRUE } : mutate(arr);[22m
+[2m $[0] = input;[22m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m return t1;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: useFoo,[22m
+[2m params: [{ input: 3 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: exception) mutate is not defined[22m
+
+[31m[1mFAIL:[22m[39m mutable-liverange-loop
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function mutate() {}[22m
+[2m function cond() {}[22m
+
+[2m function Component(props) {[22m
+[2m let a = {};[22m
+[2m let b = {};[22m
+[2m let c = {};[22m
+[2m let d = {};[22m
+[2m while (true) {[22m
+[2m mutate(a, b);[22m
+[2m if (cond(a)) {[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+
+[2m // all of these tests are seemingly readonly, since the values are never directly[22m
+[2m // mutated again. but they are all aliased by `d`, which is later modified, and[22m
+[2m // these are therefore mutable references:[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+
+[2m mutate(d, null);[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m function mutate() {}[22m
+[2m function cond() {}[22m
+
+[2m function Component(props) {[22m
+[31m+ Object.freeze(props);[39m
+[2m const a = {};[22m
+[2m const b = {};[22m
+[2m const c = {};[22m
+[2m const d = {};[22m
+[2m while (true) {[22m
+[2m mutate(a, b);[22m
+[2m if (cond(a)) {[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+
+[2m mutate(d, null);[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m mutable-lifetime-with-aliasing
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function mutate(x, y) {[22m
+[2m 'use no forget';[22m
+[2m if (!Array.isArray(x.value)) {[22m
+[2m x.value = [];[22m
+[2m }[22m
+[2m x.value.push(y);[22m
+[2m if (y != null) {[22m
+[2m y.value = x;[22m
+[2m }[22m
+[2m }[22m
+
+[2m function Component(props) {[22m
+[2m const a = {};[22m
+[2m const b = [a]; // array elements alias[22m
+[2m const c = {};[22m
+[2m const d = {c}; // object values alias[22m
+
+[2m // capture all the values into this object[22m
+[2m const x = {};[22m
+[2m x.b = b;[22m
+[2m const y = mutate(x, d); // mutation aliases the arg and return value[22m
+
+[2m // all of these tests are seemingly readonly, since the values are never directly[22m
+[2m // mutated again. but they are all aliased by `x`, which is later modified, and[22m
+[2m // these are therefore mutable references:[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+[2m if (y) {[22m
+[2m }[22m
+
+[2m // could in theory mutate any of a/b/c/x/z, so the above should be inferred as mutable[22m
+[2m mutate(x, null);[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function mutate(x, y) {[22m
+[2m "use no forget";[22m
+[2m if (!Array.isArray(x.value)) {[22m
+[2m x.value = [];[22m
+[2m }[22m
+[2m x.value.push(y);[22m
+[2m if (y != null) {[22m
+[2m y.value = x;[22m
+[2m }[22m
+[2m }[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let x;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m const a = {};[22m
+[2m const b = [a];[22m
+[2m const c = {};[22m
+[2m const d = { c };[22m
+
+[2m x = {};[22m
+[2m x.b = b;[22m
+[2m const y = mutate(x, d);[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+[2m if (y) {[22m
+[2m }[22m
+
+[2m mutate(x, null);[22m
+[2m $[0] = x;[22m
+[2m } else {[22m
+[2m x = $[0];[22m
+[2m }[22m
+[2m return x;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}[22m
+
+[31m[1mFAIL:[22m[39m mutable-lifetime-loops
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function mutate(x, y) {[22m
+[2m 'use no forget';[22m
+[2m if (x != null) {[22m
+[2m x.value = (x.value ?? 0) + 1;[22m
+[2m }[22m
+[2m if (y != null) {[22m
+[2m y.value = (y.value ?? 0) + 1;[22m
+[2m }[22m
+[2m }[22m
+[2m function cond(x) {[22m
+[2m 'use no forget';[22m
+[2m return x.value > 5;[22m
+[2m }[22m
+
+[2m function testFunction(props) {[22m
+[2m let a = {};[22m
+[2m let b = {};[22m
+[2m let c = {};[22m
+[2m let d = {};[22m
+[2m while (true) {[22m
+[2m let z = a;[22m
+[2m a = b;[22m
+[2m b = c;[22m
+[2m c = d;[22m
+[2m d = z;[22m
+[2m mutate(a, b);[22m
+[2m if (cond(a)) {[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+
+[2m // all of these tests are seemingly readonly, since the values are never directly[22m
+[2m // mutated again. but they are all aliased by `d`, which is later modified, and[22m
+[2m // these are therefore mutable references:[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+
+[2m mutate(d, null);[22m
+[2m return {a, b, c, d};[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: testFunction,[22m
+[2m params: [{}],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function mutate(x, y) {[22m
+[2m "use no forget";[22m
+[2m if (x != null) {[22m
+[2m x.value = (x.value ?? 0) + 1;[22m
+[2m }[22m
+[2m if (y != null) {[22m
+[2m y.value = (y.value ?? 0) + 1;[22m
+[2m }[22m
+[2m }[22m
+[2m function cond(x) {[22m
+[2m "use no forget";[22m
+[2m return x.value > 5;[22m
+[2m }[22m
+
+[2m function testFunction(props) {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m let a = {};[22m
+[2m let b = {};[22m
+[2m let c = {};[22m
+[2m let d = {};[22m
+[2m while (true) {[22m
+[2m const z = a;[22m
+[2m a = b;[22m
+[2m b = c;[22m
+[2m c = d;[22m
+[2m d = z;[22m
+[2m mutate(a, b);[22m
+[2m if (cond(a)) {[22m
+[2m break;[22m
+[2m }[22m
+[2m }[22m
+[2m if (a) {[22m
+[2m }[22m
+[2m if (b) {[22m
+[2m }[22m
+[2m if (c) {[22m
+[2m }[22m
+[2m if (d) {[22m
+[2m }[22m
+
+[2m mutate(d, null);[22m
+[2m t0 = { a, b, c, d };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: testFunction,[22m
+[2m params: [{}],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}[22m
+
+[31m[1mFAIL:[22m[39m multiple-calls-to-hoisted-callback-from-other-callback
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useState} from 'react';[22m
+
+[2m function Component(props) {[22m
+[2m const [_state, setState] = useState();[22m
+[2m const a = () => {[22m
+[2m return b();[22m
+[2m };[22m
+[2m const b = () => {[22m
+[2m return ([22m
+[2m <>[22m
+[2m onClick(true)}>a
[22m
+[2m onClick(false)}>b
[22m
+[2m >[22m
+[2m );[22m
+[2m };[22m
+[2m const onClick = value => {[22m
+[2m setState(value);[22m
+[2m };[22m
+
+[2m return {a()}
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useState } from "react";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(1);[22m
+[32m- const [_state, setState] = useState();[39m
+[31m+ Object.freeze(props);[39m
+[31m+ const [_state, setState] = (function () {[39m
+[31m+ const $res$ = useState();[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m const a = () => b();[22m
+
+[2m const b = () => ([22m
+[2m <>[22m
+[32m- onClick(true)}>a
[39m
+[32m- onClick(false)}>b
[39m
+[31m+ onClick(true);[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ }}[39m
+[31m+ >[39m
+[31m+ a[39m
+[31m+
[39m
+[31m+ onClick(false);[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ }}[39m
+[31m+ >[39m
+[31m+ b[39m
+[31m+
[39m
+[2m >[22m
+[2m );[22m
+
+[2m const onClick = (value) => {[22m
+[2m setState(value);[22m
+[2m };[22m
+
+[2m t0 = {a()}
;[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [22m
+
+[31m[1mFAIL:[22m[39m multi-directive
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function Component() {[22m
+[2m 'use foo';[22m
+[2m 'use bar';[22m
+[2m return "foo"
;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function Component() {[22m
+[32m- "use foo";[39m
+[32m- "use bar";[39m
+[2m const $ = _c(1);[22m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = "foo"
;[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [],[22m
+[2m isComponent: true,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) "foo"
[22m
+
+[31m[1mFAIL:[22m[39m multi-arrow-expr-gating-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @gating[22m
+[2m const ErrorView = (error, _retry) => ;[22m
+
+[2m const Renderer = props => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+
+[2m export default Renderer;[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { isForgetEnabled_Fixtures } from "ReactForgetFeatureFlag";[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @gating[22m
+[2m const ErrorView = isForgetEnabled_Fixtures()[22m
+[2m ? (error, _retry) => {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(error);[39m
+[31m+ Object.freeze(_retry);[39m
+[2m let t0;[22m
+[2m if ($[0] !== error) {[22m
+[32m- t0 = ;[39m
+[31m+ t0 = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[0] = error;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (error, _retry) => ;[22m
+
+[2m const Renderer = isForgetEnabled_Fixtures()[22m
+[2m ? (props) => {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (props) => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+[2m export default Renderer;[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m multi-arrow-expr-export-gating-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @gating[22m
+[2m const ErrorView = (error, _retry) => ;[22m
+
+[2m export const Renderer = props => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { isForgetEnabled_Fixtures } from "ReactForgetFeatureFlag";[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @gating[22m
+[2m const ErrorView = isForgetEnabled_Fixtures()[22m
+[2m ? (error, _retry) => {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(error);[39m
+[31m+ Object.freeze(_retry);[39m
+[2m let t0;[22m
+[2m if ($[0] !== error) {[22m
+[32m- t0 = ;[39m
+[31m+ t0 = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[0] = error;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (error, _retry) => ;[22m
+
+[2m export const Renderer = isForgetEnabled_Fixtures()[22m
+[2m ? (props) => {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (props) => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m multi-arrow-expr-export-default-gating-test
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @gating[22m
+[2m const ErrorView = (error, _retry) => ;[22m
+
+[2m export default Renderer = props => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { isForgetEnabled_Fixtures } from "ReactForgetFeatureFlag";[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @gating[22m
+[2m const ErrorView = isForgetEnabled_Fixtures()[22m
+[2m ? (error, _retry) => {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(error);[39m
+[31m+ Object.freeze(_retry);[39m
+[2m let t0;[22m
+[2m if ($[0] !== error) {[22m
+[32m- t0 = ;[39m
+[31m+ t0 = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[0] = error;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (error, _retry) => ;[22m
+
+[2m export default Renderer = isForgetEnabled_Fixtures()[22m
+[2m ? (props) => {[22m
+[2m const $ = _c(1);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+[2m : (props) => ([22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m [22m
+[2m );[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m module-scoped-bindings
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import React from 'react';[22m
+[2m import {useState} from 'react';[22m
+
+[2m const CONST = true;[22m
+
+[2m let NON_REASSIGNED_LET = true;[22m
+
+[2m let REASSIGNED_LET = false;[22m
+[2m REASSIGNED_LET = true;[22m
+
+[2m function reassignedFunction() {}[22m
+[2m reassignedFunction = true;[22m
+
+[2m function nonReassignedFunction() {}[22m
+
+[2m class ReassignedClass {}[22m
+[2m ReassignedClass = true;[22m
+
+[2m class NonReassignedClass {}[22m
+
+[2m function Component() {[22m
+[2m const [state] = useState(null);[22m
+[2m return [[22m
+[2m React,[22m
+[2m state,[22m
+[2m CONST,[22m
+[2m NON_REASSIGNED_LET,[22m
+[2m REASSIGNED_LET,[22m
+[2m reassignedFunction,[22m
+[2m nonReassignedFunction,[22m
+[2m ReassignedClass,[22m
+[2m NonReassignedClass,[22m
+[2m ];[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import React from "react";[22m
+[2m import { useState } from "react";[22m
+
+[2m const CONST = true;[22m
+
+[2m let NON_REASSIGNED_LET = true;[22m
+
+[2m let REASSIGNED_LET = false;[22m
+[2m REASSIGNED_LET = true;[22m
+
+[2m function reassignedFunction() {}[22m
+[2m reassignedFunction = true;[22m
+
+[2m function nonReassignedFunction() {}[22m
+
+[2m class ReassignedClass {}[22m
+[2m ReassignedClass = true;[22m
+
+[2m class NonReassignedClass {}[22m
+
+[2m function Component() {[22m
+[2m const $ = _c(2);[22m
+[32m- const [state] = useState(null);[39m
+[31m+ const [state] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(null));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] !== state) {[22m
+[2m t0 = [[22m
+[2m React,[22m
+
+[2m state,[22m
+[2m CONST,[22m
+[2m NON_REASSIGNED_LET,[22m
+[2m REASSIGNED_LET,[22m
+[2m reassignedFunction,[22m
+[2m nonReassignedFunction,[22m
+[2m ReassignedClass,[22m
+[2m NonReassignedClass,[22m
+[2m ];[22m
+[2m $[0] = state;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m return t0;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{}],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [{"Children":{"map":"[[ function params=3 ]]","forEach":"[[ function params=3 ]]","count":"[[ function params=1 ]]","toArray":"[[ function params=1 ]]","only":"[[ function params=1 ]]"},"Component":"[[ function params=3 ]]","PureComponent":"[[ function params=3 ]]","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE":{"H":{"readContext":"[[ function params=1 ]]","use":"[[ function params=1 ]]","useCallback":"[[ function params=2 ]]","useContext":"[[ function params=1 ]]","useEffect":"[[ function params=2 ]]","useImperativeHandle":"[[ function params=3 ]]","useInsertionEffect":"[[ function params=2 ]]","useLayoutEffect":"[[ function params=2 ]]","useMemo":"[[ function params=2 ]]","useReducer":"[[ function params=3 ]]","useRef":"[[ function params=1 ]]","useState":"[[ function params=1 ]]","useDebugValue":"[[ function params=2 ]]","useDeferredValue":"[[ function params=2 ]]","useTransition":"[[ function params=0 ]]","useSyncExternalStore":"[[ function params=3 ]]","useId":"[[ function params=0 ]]","useCacheRefresh":"[[ function params=0 ]]","useMemoCache":"[[ function params=1 ]]","useHostTransitionStatus":"[[ function params=0 ]]","useFormState":"[[ function params=3 ]]","useActionState":"[[ function params=3 ]]","useOptimistic":"[[ function params=2 ]]"},"A":{"getCacheForType":"[[ function params=1 ]]","getOwner":"[[ function params=0 ]]"},"T":null,"actQueue":["[[ function params=0 ]]","[[ function params=1 ]]"],"isBatchingLegacy":false,"didScheduleLegacyUpdate":false,"didUsePromise":false,"thrownErrors":[],"setExtraStackFrame":"[[ function params=1 ]]","getCurrentStack":"[[ function params=0 ]]","getStackAddendum":"[[ function params=0 ]]"},"act":"[[ function params=1 ]]","cache":"[[ function params=1 ]]","cloneElement":"[[ function params=3 ]]","createContext":"[[ function params=1 ]]","createElement":"[[ function params=3 ]]","createRef":"[[ function params=0 ]]","forwardRef":"[[ function params=1 ]]","isValidElement":"[[ function params=1 ]]","lazy":"[[ function params=1 ]]","memo":"[[ function params=2 ]]","startTransition":"[[ function params=2 ]]","unstable_useCacheRefresh":"[[ function params=0 ]]","use":"[[ function params=1 ]]","useActionState":"[[ function params=3 ]]","useCallback":"[[ function params=2 ]]","useContext":"[[ function params=1 ]]","useDebugValue":"[[ function params=2 ]]","useDeferredValue":"[[ function params=2 ]]","useEffect":"[[ function params=2 ]]","useId":"[[ function params=0 ]]","useImperativeHandle":"[[ function params=3 ]]","useInsertionEffect":"[[ function params=2 ]]","useLayoutEffect":"[[ function params=2 ]]","useMemo":"[[ function params=2 ]]","useOptimistic":"[[ function params=2 ]]","useReducer":"[[ function params=3 ]]","useRef":"[[ function params=1 ]]","useState":"[[ function params=1 ]]","useSyncExternalStore":"[[ function params=3 ]]","useTransition":"[[ function params=0 ]]","version":"19.0.0-beta-b498834eab-20240506","c":"[[ function params=1 ]]"},"[[ cyclic ref *6 ]]",true,true,true,true,"[[ function params=0 ]]",true,"[[ function params=0 ]]"][22m
+
+[31m[1mFAIL:[22m[39m method-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {addOne, shallowCopy} from 'shared-runtime';[22m
+
+[2m function foo(a, b, c) {[22m
+[2m // Construct and freeze x[22m
+[2m const x = shallowCopy(a);[22m
+[2m {x}
;[22m
+
+[2m // y should depend on `x` and `b`[22m
+[2m const y = x.foo(b);[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: [{foo: addOne}, 3],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { addOne, shallowCopy } from "shared-runtime";[22m
+
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a) {[22m
+[2m t0 = shallowCopy(a);[22m
+[2m $[0] = a;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[2] !== x || $[3] !== b) {[22m
+[2m t1 = x.foo(b);[22m
+[2m $[2] = x;[22m
+[2m $[3] = b;[22m
+[2m $[4] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[4];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: foo,[22m
+[2m params: [{ foo: addOne }, 3],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) 4[22m
+
+[31m[1mFAIL:[22m[39m method-call-fn-call
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m // Construct and freeze x[22m
+[2m const x = makeObject(a);[22m
+[2m {x}
;[22m
+
+[2m // y should depend on `x` and `b`[22m
+[2m const method = x.method;[22m
+[2m const y = method.call(x, b);[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(6);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a) {[22m
+[2m t0 = makeObject(a);[22m
+[2m $[0] = a;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+
+[2m const method = x.method;[22m
+[2m let t1;[22m
+[2m if ($[2] !== method || $[3] !== x || $[4] !== b) {[22m
+[2m t1 = method.call(x, b);[22m
+[2m $[2] = method;[22m
+[2m $[3] = x;[22m
+[2m $[4] = b;[22m
+[2m $[5] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[5];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m method-call-computed
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m function foo(a, b, c) {[22m
+[2m // Construct and freeze x, y[22m
+[2m const x = makeObject(a);[22m
+[2m const y = makeObject(a);[22m
+[2m [22m
+[2m {x}[22m
+[2m {y}[22m
+[2m
;[22m
+
+[2m // z should depend on `x`, `y.method`, and `b`[22m
+[2m const z = x[y.method](b);[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m function foo(a, b, c) {[22m
+[2m const $ = _c(8);[22m
+[31m+ Object.freeze(a);[39m
+[31m+ Object.freeze(b);[39m
+[31m+ Object.freeze(c);[39m
+[2m let t0;[22m
+[2m if ($[0] !== a) {[22m
+[2m t0 = makeObject(a);[22m
+[2m $[0] = a;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const x = t0;[22m
+[2m let t1;[22m
+[2m if ($[2] !== a) {[22m
+[2m t1 = makeObject(a);[22m
+[2m $[2] = a;[22m
+[2m $[3] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m }[22m
+[2m const y = t1;[22m
+[2m let t2;[22m
+[2m if ($[4] !== x || $[5] !== y.method || $[6] !== b) {[22m
+[2m t2 = x[y.method](b);[22m
+[2m $[4] = x;[22m
+[2m $[5] = y.method;[22m
+[2m $[6] = b;[22m
+[2m $[7] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[7];[22m
+[2m }[22m
+[2m const z = t2;[22m
+[2m return z;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+
+[31m[1mFAIL:[22m[39m merged-scopes-are-valid-effect-deps
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @validateMemoizedEffectDependencies[22m
+
+[2m import {useEffect} from 'react';[22m
+
+[2m function Component(props) {[22m
+[2m const y = [[props.value]]; // merged w scope for inner array[22m
+
+[2m useEffect(() => {[22m
+[2m console.log(y);[22m
+[2m }, [y]); // should still be a valid dependency here[22m
+
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @validateMemoizedEffectDependencies[22m
+
+[2m import { useEffect } from "react";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(5);[22m
+[31m+ Object.freeze(props);[39m
+[2m let t0;[22m
+[2m if ($[0] !== props.value) {[22m
+[2m t0 = [[props.value]];[22m
+[2m $[0] = props.value;[22m
+[2m $[1] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[1];[22m
+[2m }[22m
+[2m const y = t0;[22m
+[2m let t1;[22m
+[2m let t2;[22m
+[2m if ($[2] !== y) {[22m
+[2m t1 = () => {[22m
+[2m console.log(y);[22m
+[2m };[22m
+[2m t2 = [y];[22m
+[2m $[2] = y;[22m
+[2m $[3] = t1;[22m
+[2m $[4] = t2;[22m
+[2m } else {[22m
+[2m t1 = $[3];[22m
+[2m t2 = $[4];[22m
+[2m }[22m
+[32m- useEffect(t1, t2);[39m
+[31m+ (function () {[39m
+[31m+ const $res$ = useEffect(Object.freeze(t1), Object.freeze(t2));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ value: 42 }],[22m
+[2m isComponent: false,[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) [[42]][22m
+[2m logs: [[ [ 42 ] ]][22m
+
+[31m[1mFAIL:[22m[39m merge-scopes-callback
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m // @enableInstructionReordering[22m
+[2m import {useState} from 'react';[22m
+
+[2m function Component() {[22m
+[2m const [state, setState] = useState(0);[22m
+[2m const onClick = () => {[22m
+[2m setState(s => s + 1);[22m
+[2m };[22m
+[2m return ([22m
+[2m <>[22m
+[2m Count: {state}[22m
+[2m [22m
+[2m >[22m
+[2m );[22m
+[2m }[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime"; // @enableInstructionReordering[22m
+[2m import { useState } from "react";[22m
+
+[2m function Component() {[22m
+[2m const $ = _c(4);[22m
+[32m- const [state, setState] = useState(0);[39m
+[31m+ const [state, setState] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = () => {[22m
+[2m setState((s) => s + 1);[22m
+[2m };[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m const onClick = t0;[22m
+[2m let t1;[22m
+[2m if ($[1] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[32m- t1 = ;[39m
+[31m+ t1 = ([39m
+[31m+ [39m
+[31m+ );[39m
+[2m $[1] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[1];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[2] !== state) {[22m
+[2m t2 = ([22m
+[2m <>[22m
+[2m Count: {state}[22m
+[2m {t1}[22m
+[2m >[22m
+[2m );[22m
+[2m $[2] = state;[22m
+[2m $[3] = t2;[22m
+[2m } else {[22m
+[2m t2 = $[3];[22m
+[2m }[22m
+[2m return t2;[22m
+[2m }[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: exception) Fixture not implemented[22m
+
+[31m[1mFAIL:[22m[39m merge-nested-scopes-with-same-inputs
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {setProperty} from 'shared-runtime';[22m
+
+[2m function Component(props) {[22m
+[2m // start of scope for y, depend on props.a[22m
+[2m let y = {};[22m
+
+[2m // nested scope for x, dependent on props.a[22m
+[2m const x = {};[22m
+[2m setProperty(x, props.a);[22m
+[2m // end of scope for x[22m
+
+[2m y.a = props.a;[22m
+[2m y.x = x;[22m
+[2m // end of scope for y[22m
+
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{a: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { setProperty } from "shared-runtime";[22m
+
+[2m function Component(props) {[22m
+[2m const $ = _c(2);[22m
+[31m+ Object.freeze(props);[39m
+[2m let y;[22m
+[2m if ($[0] !== props.a) {[22m
+[2m y = {};[22m
+
+[2m const x = {};[22m
+[2m setProperty(x, props.a);[22m
+
+[2m y.a = props.a;[22m
+[2m y.x = x;[22m
+[2m $[0] = props.a;[22m
+[2m $[1] = y;[22m
+[2m } else {[22m
+[2m y = $[1];[22m
+[2m }[22m
+[2m return y;[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{ a: 42 }],[22m
+[2m };[22m
+
+[2m ```[22m
+[2m [22m
+[2m ### Eval output[22m
+[2m (kind: ok) {"a":42,"x":{"wat0":42}}[22m
+
+[31m[1mFAIL:[22m[39m merge-consecutive-scopes
+[32m- Expected[39m
+[31m+ Received[39m
+
+
+[2m ## Input[22m
+
+[2m ```javascript[22m
+[2m import {useState} from 'react';[22m
+[2m import {Stringify} from 'shared-runtime';[22m
+
+[2m function Component() {[22m
+[2m let [state, setState] = useState(0);[22m
+[2m return ([22m
+[2m [22m
+[2m [22m
+[2m {state}[22m
+[2m [22m
+[2m
[22m
+[2m );[22m
+[2m }[22m
+
+[2m export const FIXTURE_ENTRYPOINT = {[22m
+[2m fn: Component,[22m
+[2m params: [{value: 42}],[22m
+[2m };[22m
+
+[2m ```[22m
+
+[2m ## Code[22m
+
+[2m ```javascript[22m
+[2m import { c as _c } from "react/compiler-runtime";[22m
+[2m import { useState } from "react";[22m
+[2m import { Stringify } from "shared-runtime";[22m
+
+[2m function Component() {[22m
+[2m const $ = _c(8);[22m
+[32m- const [state, setState] = useState(0);[39m
+[31m+ const [state, setState] = (function () {[39m
+[31m+ const $res$ = useState(Object.freeze(0));[39m
+[31m+ Object.freeze($res$);[39m
+[31m+ return $res$;[39m
+[31m+ })();[39m
+[2m let t0;[22m
+[2m if ($[0] === Symbol.for("react.memo_cache_sentinel")) {[22m
+[2m t0 = ;[22m
+[2m $[0] = t0;[22m
+[2m } else {[22m
+[2m t0 = $[0];[22m
+[2m }[22m
+[2m let t1;[22m
+[2m if ($[1] !== state) {[22m
+[2m t1 = {state};[22m
+[2m $[1] = state;[22m
+[2m $[2] = t1;[22m
+[2m } else {[22m
+[2m t1 = $[2];[22m
+[2m }[22m
+[2m let t2;[22m
+[2m if ($[3] !== state) {[22m
+[2m t2 = ([22m
+[32m-