From a2328a155c9868231fbe6357726eb7a426e9926c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Thu, 26 Jan 2023 13:54:17 +0100 Subject: [PATCH 01/27] initial work for compile-time evaluation add if() and process.turbopack --- Cargo.lock | 1 + .../turbopack/basic/comptime/index.js | 44 + .../turbopack/basic/comptime/ok.js | 0 crates/turbopack-ecmascript/Cargo.toml | 5 +- .../src/analyzer/graph.rs | 237 +- .../turbopack-ecmascript/src/analyzer/mod.rs | 120 + .../src/references/constant_condition.rs | 55 + .../src/references/mod.rs | 118 +- .../src/references/unreachable.rs | 44 + .../graph/esbuild/graph-effects.snapshot | 3273 ++-- .../graph/iife/graph-effects.snapshot | 217 +- .../tests/analyzer/graph/iife/input.js | 4 + .../graph/md5_2/graph-effects.snapshot | 2311 +-- .../analyzer/graph/peg/graph-effects.snapshot | 14251 ++++++++++------ 14 files changed, 12944 insertions(+), 7736 deletions(-) create mode 100644 crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js create mode 100644 crates/next-dev-tests/tests/integration/turbopack/basic/comptime/ok.js create mode 100644 crates/turbopack-ecmascript/src/references/constant_condition.rs create mode 100644 crates/turbopack-ecmascript/src/references/unreachable.rs diff --git a/Cargo.lock b/Cargo.lock index 2d565a7ab2abb..f650dcdaf1659 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7845,6 +7845,7 @@ dependencies = [ "next-transform-dynamic", "next-transform-strip-page-exports", "num-bigint", + "num-traits", "once_cell", "pin-project-lite", "regex", diff --git a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js new file mode 100644 index 0000000000000..af26156731f30 --- /dev/null +++ b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js @@ -0,0 +1,44 @@ +function func() { + if (false) { + require("fail"); + import("fail"); + } + if (true) { + require("./ok"); + } + if (true) { + require("./ok"); + } else { + require("fail"); + import("fail"); + } + if (false) { + require("fail"); + import("fail"); + } else { + require("./ok"); + } +} + +it("should not follow conditional references", () => { + func(); + + expect(func.toString()).not.toContain("import("); +}); + +it("should allow replacements in IIFEs", () => { + (function func() { + if (false) { + require("fail"); + import("fail"); + } + })(); +}); + +it("should evaluate process.turbopack", () => { + if (process.turbopack) { + } else { + require("fail"); + import("fail"); + } +}); diff --git a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/ok.js b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/ok.js new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/crates/turbopack-ecmascript/Cargo.toml b/crates/turbopack-ecmascript/Cargo.toml index 6fab87d72d39d..a4854e8273347 100644 --- a/crates/turbopack-ecmascript/Cargo.toml +++ b/crates/turbopack-ecmascript/Cargo.toml @@ -20,6 +20,8 @@ lazy_static = "1.4.0" next-font = { path = "../next-font" } next-transform-dynamic = { path = "../next-transform-dynamic" } next-transform-strip-page-exports = { path = "../next-transform-strip-page-exports" } +num-bigint = "0.4" +num-traits = "0.2.15" once_cell = "1.13.0" pin-project-lite = "0.2.9" regex = "1.5.4" @@ -58,9 +60,6 @@ swc_core = { workspace = true, features = [ "base", ] } - [dependencies.num-bigint] - version = "0.4" - [dev-dependencies] criterion = { version = "0.3.5", features = ["async_tokio"] } rstest = "0.12.0" diff --git a/crates/turbopack-ecmascript/src/analyzer/graph.rs b/crates/turbopack-ecmascript/src/analyzer/graph.rs index 6e0b5391c7adf..121f9cf2402bd 100644 --- a/crates/turbopack-ecmascript/src/analyzer/graph.rs +++ b/crates/turbopack-ecmascript/src/analyzer/graph.rs @@ -1,4 +1,9 @@ -use std::{collections::HashMap, iter, mem::replace, sync::Arc}; +use std::{ + collections::HashMap, + iter, + mem::{replace, take}, + sync::Arc, +}; use swc_core::{ common::{pass::AstNodePath, Mark, Span, Spanned, SyntaxContext}, @@ -15,14 +20,90 @@ use crate::{ utils::unparen, }; +#[derive(Debug, Clone, Default)] +pub struct EffectsBlock { + pub effects: Vec, + /// The ast path to the block or expression. + pub ast_path: Vec, +} + +impl EffectsBlock { + pub fn is_empty(&self) -> bool { + self.effects.is_empty() + } +} + +#[derive(Debug, Clone)] +pub enum ConditionalKind { + /// The blocks of an `if` statement without an `else` block. + If { then: EffectsBlock }, + /// The blocks of an `if ... else` statement. + IfElse { + then: EffectsBlock, + r#else: EffectsBlock, + }, + /// The expressions on the right side of the `?:` operator. + Ternary { + then: EffectsBlock, + r#else: EffectsBlock, + }, + /// The expression on the right side of the `&&` operator. + And { expr: EffectsBlock }, + /// The expression on the right side of the `||` operator. + Or { expr: EffectsBlock }, + /// The expression on the right side of the `??` operator. + NullishCoalescing { expr: EffectsBlock }, +} + +impl ConditionalKind { + /// Normalizes all contained values. + pub fn normalize(&mut self) { + match self { + ConditionalKind::If { then, .. } => { + for effect in &mut then.effects { + effect.normalize(); + } + } + ConditionalKind::IfElse { then, r#else, .. } + | ConditionalKind::Ternary { then, r#else, .. } => { + for effect in &mut then.effects { + effect.normalize(); + } + for effect in &mut r#else.effects { + effect.normalize(); + } + } + ConditionalKind::And { expr, .. } + | ConditionalKind::Or { expr, .. } + | ConditionalKind::NullishCoalescing { expr, .. } => { + for effect in &mut expr.effects { + effect.normalize(); + } + } + } + } +} + #[derive(Debug, Clone)] pub enum Effect { + /// Some condition which effects which effects might be executed. When the + /// condition evaluates to something compile-time constant we can use that + /// to determine which effects are executed and remove the others. + Conditional { + condition: JsValue, + kind: Box, + /// The ast path to the condition. + ast_path: Vec, + span: Span, + }, + /// A function call. Call { func: JsValue, args: Vec, ast_path: Vec, span: Span, }, + /// A function call of a property of an object. MemberCall { obj: JsValue, prop: JsValue, @@ -30,22 +111,26 @@ pub enum Effect { ast_path: Vec, span: Span, }, + /// A property access. Member { obj: JsValue, prop: JsValue, ast_path: Vec, span: Span, }, + /// A reference to an imported binding. ImportedBinding { esm_reference_index: usize, export: Option, ast_path: Vec, span: Span, }, + /// A reference to `import.meta`. ImportMeta { ast_path: Vec, span: Span, }, + /// A reference to `new URL(..., import.meta.url)`. Url { input: JsValue, ast_path: Vec, @@ -54,8 +139,18 @@ pub enum Effect { } impl Effect { + /// Normalizes all contained values. pub fn normalize(&mut self) { match self { + Effect::Conditional { + condition, + kind, + ast_path: _, + span: _, + } => { + condition.normalize(); + kind.normalize(); + } Effect::Call { func, args, @@ -140,6 +235,7 @@ pub fn create_graph(m: &Program, eval_context: &EvalContext) -> VarGraph { &mut Analyzer { data: &mut graph, eval_context, + effects: Default::default(), var_decl_kind: Default::default(), current_value: Default::default(), cur_fn_return_values: Default::default(), @@ -432,6 +528,8 @@ impl EvalContext { struct Analyzer<'a> { data: &'a mut VarGraph, + effects: Vec, + eval_context: &'a EvalContext, var_decl_kind: Option, @@ -449,6 +547,16 @@ struct Analyzer<'a> { pub fn as_parent_path(ast_path: &AstNodePath>) -> Vec { ast_path.iter().map(|n| n.kind()).collect() } +pub fn as_parent_path_with( + ast_path: &AstNodePath>, + additional: AstParentKind, +) -> Vec { + ast_path + .iter() + .map(|n| n.kind()) + .chain([additional].into_iter()) + .collect() +} impl Analyzer<'_> { fn add_value(&mut self, id: Id, value: JsValue) { @@ -468,6 +576,10 @@ impl Analyzer<'_> { self.add_value(id, value); } + fn add_effect(&mut self, effect: Effect) { + self.effects.push(effect); + } + fn check_iife<'ast: 'r, 'r>( &mut self, n: &'ast CallExpr, @@ -685,7 +797,7 @@ impl Analyzer<'_> { }; match &n.callee { Callee::Import(_) => { - self.data.effects.push(Effect::Call { + self.add_effect(Effect::Call { func: JsValue::FreeVar(FreeVarKind::Import), args, ast_path: as_parent_path(ast_path), @@ -705,7 +817,7 @@ impl Analyzer<'_> { self.eval_context.eval(expr) } }; - self.data.effects.push(Effect::MemberCall { + self.add_effect(Effect::MemberCall { obj: obj_value, prop: prop_value, args, @@ -714,7 +826,7 @@ impl Analyzer<'_> { }); } else { let fn_value = self.eval_context.eval(expr); - self.data.effects.push(Effect::Call { + self.add_effect(Effect::Call { func: fn_value, args, ast_path: as_parent_path(ast_path), @@ -740,7 +852,7 @@ impl Analyzer<'_> { } MemberProp::Computed(ComputedPropName { expr, .. }) => self.eval_context.eval(expr), }; - self.data.effects.push(Effect::Member { + self.add_effect(Effect::Member { obj: obj_value, prop: prop_value, ast_path: as_parent_path(ast_path), @@ -841,7 +953,7 @@ impl VisitAstPath for Analyzer<'_> { }) = &*args[1].expr { if &*prop.sym == "url" { - self.data.effects.push(Effect::Url { + self.add_effect(Effect::Url { input: self.eval_context.eval(&args[0].expr), ast_path: as_parent_path(ast_path), span: new_expr.span(), @@ -1142,7 +1254,7 @@ impl VisitAstPath for Analyzer<'_> { if let Some((esm_reference_index, export)) = self.eval_context.imports.get_binding(&ident.to_id()) { - self.data.effects.push(Effect::ImportedBinding { + self.add_effect(Effect::ImportedBinding { esm_reference_index, export, ast_path: as_parent_path(ast_path), @@ -1159,15 +1271,124 @@ impl VisitAstPath for Analyzer<'_> { if expr.kind == MetaPropKind::ImportMeta { // MetaPropExpr also covers `new.target`. Only consider `import.meta` // an effect. - self.data.effects.push(Effect::ImportMeta { + self.add_effect(Effect::ImportMeta { span: expr.span, ast_path: as_parent_path(ast_path), }) } } + + fn visit_program<'ast: 'r, 'r>( + &mut self, + program: &'ast Program, + ast_path: &mut AstNodePath>, + ) { + self.effects = take(&mut self.data.effects); + program.visit_children_with_path(self, ast_path); + self.data.effects = take(&mut self.effects); + } + + fn visit_if_stmt<'ast: 'r, 'r>( + &mut self, + stmt: &'ast IfStmt, + ast_path: &mut AstNodePath>, + ) { + ast_path.with( + AstParentNodeRef::IfStmt(stmt, IfStmtField::Test), + |ast_path| { + stmt.test.visit_with_path(self, ast_path); + }, + ); + let prev_effects = take(&mut self.effects); + let then = ast_path.with( + AstParentNodeRef::IfStmt(stmt, IfStmtField::Cons), + |ast_path| { + stmt.cons.visit_with_path(self, ast_path); + EffectsBlock { + effects: take(&mut self.effects), + ast_path: as_parent_path(ast_path), + } + }, + ); + let r#else = stmt + .alt + .as_ref() + .map(|alt| { + ast_path.with( + AstParentNodeRef::IfStmt(stmt, IfStmtField::Alt), + |ast_path| { + alt.visit_with_path(self, ast_path); + EffectsBlock { + effects: take(&mut self.effects), + ast_path: as_parent_path(ast_path), + } + }, + ) + }) + .unwrap_or_default(); + self.effects = prev_effects; + match (!then.is_empty(), !r#else.is_empty()) { + (true, false) => { + self.add_conditional_effect( + &stmt.test, + ast_path, + AstParentKind::IfStmt(IfStmtField::Test), + stmt.span(), + ConditionalKind::If { then }, + ); + } + (_, true) => { + self.add_conditional_effect( + &stmt.test, + ast_path, + AstParentKind::IfStmt(IfStmtField::Test), + stmt.span(), + ConditionalKind::IfElse { then, r#else }, + ); + } + (false, false) => { + // no effects, can be ignored + } + } + } } impl<'a> Analyzer<'a> { + fn add_conditional_effect<'r>( + &mut self, + test: &Expr, + ast_path: &mut AstNodePath>, + ast_kind: AstParentKind, + span: Span, + mut cond_kind: ConditionalKind, + ) { + let condition = self.eval_context.eval(test); + if condition.is_unknown() { + match &mut cond_kind { + ConditionalKind::If { then } => { + self.effects.append(&mut then.effects); + } + ConditionalKind::IfElse { then, r#else } + | ConditionalKind::Ternary { then, r#else } => { + self.effects.append(&mut then.effects); + self.effects.append(&mut r#else.effects); + } + ConditionalKind::And { expr } + | ConditionalKind::Or { expr } + | ConditionalKind::NullishCoalescing { expr } => { + self.effects.append(&mut expr.effects); + } + } + } else { + self.add_effect(Effect::Conditional { + condition, + kind: box cond_kind, + ast_path: as_parent_path_with(ast_path, ast_kind), + span, + }); + } + } + fn visit_pat_with_value<'ast: 'r, 'r>( &mut self, pat: &'ast Pat, diff --git a/crates/turbopack-ecmascript/src/analyzer/mod.rs b/crates/turbopack-ecmascript/src/analyzer/mod.rs index 2d90d98b3c32f..f1c0bed79e401 100644 --- a/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -10,6 +10,7 @@ use std::{ use indexmap::IndexSet; use num_bigint::BigInt; +use num_traits::identities::Zero; use swc_core::{ common::Mark, ecma::{ @@ -97,6 +98,38 @@ impl ConstantValue { _ => None, } } + + pub fn is_truthy(&self) -> bool { + match self { + Self::Undefined | Self::False | Self::Null => false, + Self::True | Self::Regex(..) => true, + Self::StrWord(s) => !s.is_empty(), + Self::StrAtom(s) => !s.is_empty(), + Self::Num(ConstantNumber(n)) => *n != 0.0, + Self::BigInt(n) => !n.is_zero(), + } + } + + pub fn is_nullish(&self) -> bool { + match self { + Self::Undefined | Self::Null => true, + Self::StrWord(..) + | Self::StrAtom(..) + | Self::Num(..) + | Self::True + | Self::False + | Self::BigInt(..) + | Self::Regex(..) => false, + } + } + + pub fn is_empty_string(&self) -> bool { + match self { + Self::StrWord(s) => s.is_empty(), + Self::StrAtom(s) => s.is_empty(), + _ => false, + } + } } impl Default for ConstantValue { @@ -1051,6 +1084,93 @@ impl JsValue { | JsValue::FreeVar(_) => true, } } + + pub fn is_truthy(&self) -> Option { + match self { + JsValue::Constant(c) => Some(c.is_truthy()), + JsValue::Concat(..) => self.is_empty_string().map(|x| !x), + JsValue::Url(..) + | JsValue::Array(..) + | JsValue::Object(..) + | JsValue::WellKnownObject(..) + | JsValue::WellKnownFunction(..) + | JsValue::Function(..) => Some(true), + JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_truthy())), + _ => None, + } + } + + pub fn is_nullish(&self) -> Option { + match self { + JsValue::Constant(c) => Some(c.is_nullish()), + JsValue::Concat(..) + | JsValue::Url(..) + | JsValue::Array(..) + | JsValue::Object(..) + | JsValue::WellKnownObject(..) + | JsValue::WellKnownFunction(..) + | JsValue::Function(..) => Some(false), + JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_nullish())), + _ => None, + } + } + + pub fn is_empty_string(&self) -> Option { + match self { + JsValue::Constant(c) => Some(c.is_empty_string()), + JsValue::Concat(_, list) => all_if_known(list.iter().map(|x| x.is_empty_string())), + JsValue::Alternatives(_, list) => { + merge_if_known(list.iter().map(|x| x.is_empty_string())) + } + JsValue::Url(..) + | JsValue::Array(..) + | JsValue::Object(..) + | JsValue::WellKnownObject(..) + | JsValue::WellKnownFunction(..) + | JsValue::Function(..) => Some(false), + _ => None, + } + } + + pub fn is_unknown(&self) -> bool { + match self { + JsValue::Unknown(..) => true, + JsValue::Alternatives(_, list) => list.iter().any(|x| x.is_unknown()), + _ => false, + } + } +} + +fn merge_if_known(list: impl IntoIterator>) -> Option { + let mut current = None; + for item in list { + if item.is_some() { + if current.is_none() { + current = item; + } else if current != item { + return None; + } + } else { + return None; + } + } + current +} + +fn all_if_known(list: impl IntoIterator>) -> Option { + let mut unknown = false; + for item in list { + match item { + Some(false) => return Some(false), + None => unknown = true, + _ => {} + } + } + if unknown { + None + } else { + Some(true) + } } macro_rules! for_each_children_async { diff --git a/crates/turbopack-ecmascript/src/references/constant_condition.rs b/crates/turbopack-ecmascript/src/references/constant_condition.rs new file mode 100644 index 0000000000000..1200171a4f667 --- /dev/null +++ b/crates/turbopack-ecmascript/src/references/constant_condition.rs @@ -0,0 +1,55 @@ +use anyhow::Result; +use swc_core::quote; +use turbo_tasks::Value; +use turbopack_core::chunk::ChunkingContextVc; + +use super::AstPathVc; +use crate::{ + code_gen::{CodeGenerateable, CodeGenerateableVc, CodeGeneration, CodeGenerationVc}, + create_visitor, +}; + +#[turbo_tasks::value(serialization = "auto_for_input")] +#[derive(Debug, Clone, Copy, Hash, PartialOrd, Ord)] +pub enum ConstantConditionValue { + Truthy, + Falsy, + Nullish, +} + +#[turbo_tasks::value] +pub struct ConstantCondition { + value: ConstantConditionValue, + path: AstPathVc, +} + +#[turbo_tasks::value_impl] +impl ConstantConditionVc { + #[turbo_tasks::function] + pub fn new(value: Value, path: AstPathVc) -> Self { + Self::cell(ConstantCondition { + value: value.into_value(), + path, + }) + } +} + +#[turbo_tasks::value_impl] +impl CodeGenerateable for ConstantCondition { + #[turbo_tasks::function] + async fn code_generation(&self, _context: ChunkingContextVc) -> Result { + let value = self.value; + let visitors = [ + create_visitor!(exact &self.path.await?, visit_mut_expr(expr: &mut Expr) { + *expr = match value { + ConstantConditionValue::Truthy => quote!("(\"TURBOPACK compile-time truthy\", 1)" as Expr), + ConstantConditionValue::Falsy => quote!("(\"TURBOPACK compile-time falsy\", 0)" as Expr), + ConstantConditionValue::Nullish => quote!("(\"TURBOPACK compile-time nullish\", null)" as Expr), + }; + }), + ] + .into(); + + Ok(CodeGeneration { visitors }.cell()) + } +} diff --git a/crates/turbopack-ecmascript/src/references/mod.rs b/crates/turbopack-ecmascript/src/references/mod.rs index 3407b1823ffd3..761fd3986edcd 100644 --- a/crates/turbopack-ecmascript/src/references/mod.rs +++ b/crates/turbopack-ecmascript/src/references/mod.rs @@ -1,10 +1,12 @@ pub mod amd; pub mod cjs; +pub mod constant_condition; pub mod esm; pub mod node; pub mod pattern_mapping; pub mod raw; pub mod typescript; +pub mod unreachable; pub mod util; use std::{ @@ -16,6 +18,7 @@ use std::{ }; use anyhow::Result; +use constant_condition::{ConstantConditionValue, ConstantConditionVc}; use lazy_static::lazy_static; use regex::Regex; use swc_core::{ @@ -43,6 +46,7 @@ use turbopack_core::{ }, }; use turbopack_swc_utils::emitter::IssueEmitter; +use unreachable::UnreachableVc; use self::{ amd::{ @@ -81,7 +85,11 @@ use super::{ EcmascriptModuleAssetType, }; use crate::{ - analyzer::{graph::EvalContext, imports::Reexport, ModuleValue}, + analyzer::{ + graph::{ConditionalKind, EvalContext}, + imports::Reexport, + ModuleValue, + }, chunk::{EcmascriptExports, EcmascriptExportsVc}, code_gen::{CodeGenerateableVc, CodeGenerateablesVc}, magic_identifier, @@ -1074,8 +1082,109 @@ pub(crate) async fn analyze_ecmascript_module( // the object allocation. let mut first_import_meta = true; - for effect in effects.into_iter() { + let mut queue = Vec::new(); + queue.extend(effects.into_iter().rev()); + + while let Some(effect) = queue.pop() { match effect { + Effect::Conditional { + condition, + kind, + ast_path: condition_ast_path, + span: _, + } => { + let condition = link_value(condition).await?; + macro_rules! inactive { + ($block:ident) => { + analysis.add_code_gen(UnreachableVc::new(AstPathVc::cell( + $block.ast_path.to_vec(), + ))); + }; + } + macro_rules! condition { + ($expr:expr) => { + analysis.add_code_gen(ConstantConditionVc::new( + Value::new($expr), + AstPathVc::cell(condition_ast_path.to_vec()), + )); + }; + } + macro_rules! active { + ($block:ident) => { + queue.extend($block.effects.into_iter().rev()); + }; + } + match *kind { + ConditionalKind::If { then } => { + if let Some(value) = condition.is_truthy() { + if value { + condition!(ConstantConditionValue::Truthy); + active!(then); + } else { + condition!(ConstantConditionValue::Falsy); + inactive!(then); + } + } else { + active!(then); + } + } + ConditionalKind::IfElse { then, r#else } + | ConditionalKind::Ternary { then, r#else } => { + if let Some(value) = condition.is_truthy() { + if value { + condition!(ConstantConditionValue::Truthy); + active!(then); + inactive!(r#else); + } else { + condition!(ConstantConditionValue::Falsy); + active!(r#else); + inactive!(then); + } + } else { + active!(then); + active!(r#else); + } + } + ConditionalKind::And { expr } => { + if let Some(value) = condition.is_truthy() { + if value { + condition!(ConstantConditionValue::Truthy); + active!(expr); + } else { + // The condition value need to stay since it's used + inactive!(expr); + } + } else { + active!(expr); + } + } + ConditionalKind::Or { expr } => { + if let Some(value) = condition.is_truthy() { + if value { + // The condition value need to stay since it's used + inactive!(expr); + } else { + condition!(ConstantConditionValue::Falsy); + active!(expr); + } + } else { + active!(expr); + } + } + ConditionalKind::NullishCoalescing { expr } => { + if let Some(value) = condition.is_nullish() { + if value { + condition!(ConstantConditionValue::Nullish); + active!(expr); + } else { + inactive!(expr); + } + } else { + active!(expr); + } + } + } + } Effect::Call { func, args, @@ -1501,6 +1610,11 @@ async fn value_visitor_inner( Some(Arc::new(v)), "cross function analyzing is not yet supported", ), + JsValue::Member( + _, + box JsValue::WellKnownObject(WellKnownObjectKind::NodeProcess), + box JsValue::Constant(value), + ) if value.as_str() == Some("turbopack") => JsValue::Constant(ConstantValue::True), _ => { let (mut v, mut modified) = replace_well_known(v, environment).await?; modified = replace_builtin(&mut v) || modified; diff --git a/crates/turbopack-ecmascript/src/references/unreachable.rs b/crates/turbopack-ecmascript/src/references/unreachable.rs new file mode 100644 index 0000000000000..4c70c505ec84a --- /dev/null +++ b/crates/turbopack-ecmascript/src/references/unreachable.rs @@ -0,0 +1,44 @@ +use anyhow::Result; +use swc_core::quote; +use turbopack_core::chunk::ChunkingContextVc; + +use super::AstPathVc; +use crate::{ + code_gen::{CodeGenerateable, CodeGenerateableVc, CodeGeneration, CodeGenerationVc}, + create_visitor, +}; + +#[turbo_tasks::value] +pub struct Unreachable { + path: AstPathVc, +} + +#[turbo_tasks::value_impl] +impl UnreachableVc { + #[turbo_tasks::function] + pub fn new(path: AstPathVc) -> Self { + Self::cell(Unreachable { path }) + } +} + +#[turbo_tasks::value_impl] +impl CodeGenerateable for Unreachable { + #[turbo_tasks::function] + async fn code_generation(&self, _context: ChunkingContextVc) -> Result { + let path = self.path.await?; + let visitors = [ + // Unreachable might be used on Stmt or Expr + create_visitor!(exact path, visit_mut_expr(expr: &mut Expr) { + *expr = quote!("(\"TURBOPACK unreachable\", undefined)" as Expr); + }), + create_visitor!(exact path, visit_mut_stmt(stmt: &mut Stmt) { + // TODO walk ast to find all `var` declarations and keep them + // since they hoist out of the scope + *stmt = quote!("{\"TURBOPACK unreachable\";}" as Stmt); + }), + ] + .into(); + + Ok(CodeGeneration { visitors }.cell()) + } +} diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot index ac1e40f00d45d..7638358e5e1e0 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot @@ -1463,1297 +1463,1426 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( + Conditional { + condition: Variable( ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('dirname' type=inline), + Atom('isYarnPnP' type=dynamic), + #4, ), ), - args: [ - MemberCall( - 4, - FreeVar( - Require, - ), - Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - [ - Constant( - StrWord( - Atom('esbuild' type=inline), + kind: If { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('path' type=static), + #1, + ), ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2299, - ), - hi: BytePos( - 2339, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('dirname' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2299, - ), - hi: BytePos( - 2311, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: FreeVar( - Require, - ), - prop: Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - args: [ - Constant( - StrWord( - Atom('esbuild' type=inline), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2312, - ), - hi: BytePos( - 2338, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Require, - ), - prop: Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2312, - ), - hi: BytePos( - 2327, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('join' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('esbuildLibDir' type=dynamic), - #7, - ), - ), - Concat( - 8, - [ - Constant( - StrAtom( - "pnpapi-", - ), - ), - Variable( - ( - Atom('pkg' type=inline), - #4, - ), - ), - Constant( - StrAtom( - "-", + prop: Constant( + StrWord( + Atom('dirname' type=inline), + ), ), - ), - MemberCall( - 4, - Variable( + args: [ + MemberCall( + 4, + FreeVar( + Require, + ), + Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + [ + Constant( + StrWord( + Atom('esbuild' type=inline), + ), + ), + ], + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2299, + ), + hi: BytePos( + 2339, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( ( Atom('path' type=static), #1, ), ), - Constant( + prop: Constant( StrWord( - Atom('basename' type=dynamic), + Atom('dirname' type=inline), ), ), - [ - Variable( - ( - Atom('subpath' type=inline), - #4, + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, ), ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), ], + span: Span { + lo: BytePos( + 2299, + ), + hi: BytePos( + 2311, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + args: [ + Constant( + StrWord( + Atom('esbuild' type=inline), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2312, + ), + hi: BytePos( + 2338, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2312, + ), + hi: BytePos( + 2327, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Variable( + ( + Atom('path' type=static), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('join' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('esbuildLibDir' type=dynamic), + #7, + ), + ), + Concat( + 8, + [ + Constant( + StrAtom( + "pnpapi-", + ), + ), + Variable( + ( + Atom('pkg' type=inline), + #4, + ), + ), + Constant( + StrAtom( + "-", + ), + ), + MemberCall( + 4, + Variable( + ( + Atom('path' type=static), + #1, + ), + ), + Constant( + StrWord( + Atom('basename' type=dynamic), + ), + ), + [ + Variable( + ( + Atom('subpath' type=inline), + #4, + ), + ), + ], + ), + ], + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2367, + ), + hi: BytePos( + 2452, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('path' type=static), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('join' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2367, + ), + hi: BytePos( + 2376, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Variable( + ( + Atom('path' type=static), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('basename' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('subpath' type=inline), + #4, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Tpl, + ), + Tpl( + Exprs( + 1, + ), + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2422, + ), + hi: BytePos( + 2444, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('path' type=static), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('basename' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Tpl, + ), + Tpl( + Exprs( + 1, + ), + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2422, + ), + hi: BytePos( + 2435, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('existsSync' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Unary, + ), + UnaryExpr( + Arg, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2463, + ), + hi: BytePos( + 2491, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('existsSync' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Unary, + ), + UnaryExpr( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2463, + ), + hi: BytePos( + 2476, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('copyFileSync' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('binPath' type=inline), + #4, + ), + ), + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2501, + ), + hi: BytePos( + 2540, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('copyFileSync' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2501, + ), + hi: BytePos( + 2516, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('chmodSync' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + Constant( + Num( + ConstantNumber( + 493.0, + ), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2548, + ), + hi: BytePos( + 2580, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('chmodSync' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2548, + ), + hi: BytePos( + 2560, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2367, - ), - hi: BytePos( - 2452, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('join' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2367, - ), - hi: BytePos( - 2376, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('basename' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('subpath' type=inline), - #4, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Tpl, - ), - Tpl( - Exprs( - 1, - ), - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2422, - ), - hi: BytePos( - 2444, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('basename' type=dynamic), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Tpl, - ), - Tpl( - Exprs( - 1, - ), - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2422, - ), - hi: BytePos( - 2435, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('existsSync' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Unary, - ), - UnaryExpr( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2463, - ), - hi: BytePos( - 2491, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('existsSync' type=dynamic), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Unary, - ), - UnaryExpr( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2463, - ), - hi: BytePos( - 2476, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('copyFileSync' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('binPath' type=inline), - #4, - ), - ), - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2501, - ), - hi: BytePos( - 2540, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('copyFileSync' type=dynamic), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2501, - ), - hi: BytePos( - 2516, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('chmodSync' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - Constant( - Num( - ConstantNumber( - 493.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2548, - ), - hi: BytePos( - 2580, - ), - ctxt: #0, + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, }, - }, - Member { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('chmodSync' type=dynamic), - ), - ), ast_path: [ Program( Script, @@ -2784,55 +2913,15 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 2548, + 2256, ), hi: BytePos( - 2560, + 2617, ), ctxt: #0, }, @@ -3037,105 +3126,7 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('path2' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('basename' type=dynamic), - ), - ), - args: [ - FreeVar( - Dirname, - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Arrow, - ), - ArrowExpr( - Body, - ), - BlockStmtOrExpr( - BlockStmt, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2775, - ), - hi: BytePos( - 2800, - ), - ctxt: #0, - }, - }, - Member { + MemberCall { obj: Variable( ( Atom('path2' type=inline), @@ -3147,6 +3138,11 @@ Atom('basename' type=dynamic), ), ), + args: [ + FreeVar( + Dirname, + ), + ], ast_path: [ Program( Script, @@ -3217,27 +3213,18 @@ Expr( Call, ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), ], span: Span { lo: BytePos( 2775, ), hi: BytePos( - 2789, + 2800, ), ctxt: #0, }, }, - MemberCall { + Member { obj: Variable( ( Atom('path2' type=inline), @@ -3246,29 +3233,9 @@ ), prop: Constant( StrWord( - Atom('join' type=inline), + Atom('basename' type=dynamic), ), ), - args: [ - FreeVar( - Dirname, - ), - Constant( - StrWord( - Atom('..' type=inline), - ), - ), - Constant( - StrWord( - Atom('bin' type=inline), - ), - ), - Constant( - StrWord( - Atom('esbuild' type=inline), - ), - ), - ], ast_path: [ Program( Script, @@ -3303,77 +3270,355 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Bin, ), - BlockStmt( - Stmts( - 0, - ), + BinExpr( + Right, ), - Stmt( - Return, + Expr( + Paren, ), - ReturnStmt( - Arg, + ParenExpr( + Expr, ), Expr( - Array, + Bin, ), - ArrayLit( - Elems( - 1, - ), + BinExpr( + Right, ), - ExprOrSpread( - Expr, + Expr( + Bin, + ), + BinExpr( + Left, ), Expr( - Array, + Call, ), - ArrayLit( - Elems( - 0, - ), + CallExpr( + Callee, ), - ExprOrSpread( + Callee( Expr, ), Expr( - Call, + Member, ), ], span: Span { lo: BytePos( - 3526, + 2775, ), hi: BytePos( - 3571, + 2789, ), ctxt: #0, }, }, - Member { - obj: Variable( - ( - Atom('path2' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('join' type=inline), - ), - ), + Conditional { + condition: Constant( + False, + ), + kind: If { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('path2' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('join' type=inline), + ), + ), + args: [ + FreeVar( + Dirname, + ), + Constant( + StrWord( + Atom('..' type=inline), + ), + ), + Constant( + StrWord( + Atom('bin' type=inline), + ), + ), + Constant( + StrWord( + Atom('esbuild' type=inline), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 7, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Array, + ), + ArrayLit( + Elems( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Array, + ), + ArrayLit( + Elems( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 3526, + ), + hi: BytePos( + 3571, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('path2' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('join' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 7, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Array, + ), + ArrayLit( + Elems( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Array, + ), + ArrayLit( + Elems( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 3526, + ), + hi: BytePos( + 3536, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 7, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -3415,63 +3660,15 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Array, - ), - ArrayLit( - Elems( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Array, - ), - ArrayLit( - Elems( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 3526, + 3492, ), hi: BytePos( - 3536, + 3578, ), ctxt: #0, }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/iife/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/iife/graph-effects.snapshot index fe51488c7066f..c5fd9dcfee9a2 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/iife/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/iife/graph-effects.snapshot @@ -1 +1,216 @@ -[] +[ + Conditional { + condition: Constant( + True, + ), + kind: If { + then: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('f' type=inline), + #5, + ), + ), + args: [ + Constant( + StrWord( + Atom('test' type=inline), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 153, + ), + hi: BytePos( + 162, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Arrow, + ), + ArrowExpr( + Body, + ), + BlockStmtOrExpr( + BlockStmt, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + ], + span: Span { + lo: BytePos( + 137, + ), + hi: BytePos( + 167, + ), + ctxt: #0, + }, + }, +] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/iife/input.js b/crates/turbopack-ecmascript/tests/analyzer/graph/iife/input.js index 49c11c1d97624..67967a40df511 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/iife/input.js +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/iife/input.js @@ -11,4 +11,8 @@ let a = require; ((f) => { let g = f; + + if (true) { + f("test"); + } })(a); diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot index a5cb3854a80b2..a7e51a7ec0c76 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot @@ -1392,990 +1392,1313 @@ ctxt: #0, }, }, - MemberCall { - obj: Member( - 5, - Member( - 3, - FreeVar( - Other( - Atom('Array' type=static), - ), - ), - Constant( - StrWord( - Atom('prototype' type=dynamic), - ), - ), - ), - Constant( - StrWord( - Atom('slice' type=static), - ), - ), - ), - prop: Constant( - StrWord( - Atom('call' type=static), - ), - ), - args: [ + Conditional { + condition: Call( + 3, Variable( ( - Atom('message' type=inline), - #3, - ), - ), - Constant( - Num( - ConstantNumber( - 0.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, + Atom('isBuffer' type=dynamic), + #1, ), ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 489, - ), - hi: BytePos( - 527, - ), - ctxt: #0, - }, - }, - Member { - obj: Member( - 5, - Member( - 3, - FreeVar( - Other( - Atom('Array' type=static), - ), - ), - Constant( - StrWord( - Atom('prototype' type=dynamic), + [ + Variable( + ( + Atom('message' type=inline), + #3, ), ), - ), - Constant( - StrWord( - Atom('slice' type=static), - ), - ), - ), - prop: Constant( - StrWord( - Atom('call' type=static), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 489, - ), - hi: BytePos( - 515, - ), - ctxt: #0, - }, - }, - Member { - obj: Member( - 3, - FreeVar( - Other( - Atom('Array' type=static), - ), - ), - Constant( - StrWord( - Atom('prototype' type=dynamic), - ), - ), - ), - prop: Constant( - StrWord( - Atom('slice' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - MemberExpr( - Obj, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 489, - ), - hi: BytePos( - 510, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Other( - Atom('Array' type=static), - ), - ), - prop: Constant( - StrWord( - Atom('prototype' type=dynamic), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - MemberExpr( - Obj, - ), - Expr( - Member, - ), - MemberExpr( - Obj, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 489, - ), - hi: BytePos( - 504, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: FreeVar( - Other( - Atom('Array' type=static), - ), - ), - prop: Constant( - StrWord( - Atom('isArray' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Unary, - ), - UnaryExpr( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 545, - ), - hi: BytePos( - 567, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Other( - Atom('Array' type=static), - ), - ), - prop: Constant( - StrWord( - Atom('isArray' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Unary, - ), - UnaryExpr( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 545, - ), - hi: BytePos( - 558, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - prop: Constant( - StrWord( - Atom('toString' type=static), - ), - ), - args: [], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 579, - ), - hi: BytePos( - 597, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Member( + 5, + Member( + 3, + FreeVar( + Other( + Atom('Array' type=static), + ), + ), + Constant( + StrWord( + Atom('prototype' type=dynamic), + ), + ), + ), + Constant( + StrWord( + Atom('slice' type=static), + ), + ), + ), + prop: Constant( + StrWord( + Atom('call' type=static), + ), + ), + args: [ + Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + Constant( + Num( + ConstantNumber( + 0.0, + ), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 489, + ), + hi: BytePos( + 527, + ), + ctxt: #0, + }, + }, + Member { + obj: Member( + 5, + Member( + 3, + FreeVar( + Other( + Atom('Array' type=static), + ), + ), + Constant( + StrWord( + Atom('prototype' type=dynamic), + ), + ), + ), + Constant( + StrWord( + Atom('slice' type=static), + ), + ), + ), + prop: Constant( + StrWord( + Atom('call' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 489, + ), + hi: BytePos( + 515, + ), + ctxt: #0, + }, + }, + Member { + obj: Member( + 3, + FreeVar( + Other( + Atom('Array' type=static), + ), + ), + Constant( + StrWord( + Atom('prototype' type=dynamic), + ), + ), + ), + prop: Constant( + StrWord( + Atom('slice' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + MemberExpr( + Obj, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 489, + ), + hi: BytePos( + 510, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('Array' type=static), + ), + ), + prop: Constant( + StrWord( + Atom('prototype' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + MemberExpr( + Obj, + ), + Expr( + Member, + ), + MemberExpr( + Obj, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 489, + ), + hi: BytePos( + 504, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + MemberCall { + obj: FreeVar( + Other( + Atom('Array' type=static), + ), + ), + prop: Constant( + StrWord( + Atom('isArray' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Unary, + ), + UnaryExpr( + Arg, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 545, + ), + hi: BytePos( + 567, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('Array' type=static), + ), + ), + prop: Constant( + StrWord( + Atom('isArray' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Unary, + ), + UnaryExpr( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 545, + ), + hi: BytePos( + 558, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + prop: Constant( + StrWord( + Atom('toString' type=static), + ), + ), + args: [], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 579, + ), + hi: BytePos( + 597, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + prop: Constant( + StrWord( + Atom('toString' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 579, + ), + hi: BytePos( + 595, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Member { - obj: Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - prop: Constant( - StrWord( - Atom('toString' type=static), - ), - ), ast_path: [ Program( Script, @@ -2458,45 +2781,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 579, + 448, ), hi: BytePos( - 595, + 598, ), ctxt: #0, }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot index 2064f39cad095..6e9b1f0682036 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot @@ -26121,551 +26121,1250 @@ ctxt: #0, }, }, - Member { - obj: Variable( - ( - Atom('peg$posDetailsCache' type=dynamic), - #21, - ), - ), - prop: Variable( - ( - Atom('p' type=static), - #80, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - While, - ), - WhileStmt( - Test, - ), - Expr( - Unary, - ), - UnaryExpr( - Arg, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 18879, - ), - hi: BytePos( - 18901, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('peg$posDetailsCache' type=dynamic), - #21, - ), - ), - prop: Variable( - ( - Atom('p' type=static), - #80, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 18943, - ), - hi: BytePos( - 18965, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( + Conditional { + condition: Variable( ( Atom('details' type=static), #80, ), ), - prop: Constant( - StrWord( - Atom('line' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Object, - ), - ObjectLit( - Props( - 0, - ), - ), - PropOrSpread( - Prop, - ), - Prop( - KeyValue, - ), - KeyValueProp( - Value, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 18999, - ), - hi: BytePos( - 19011, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('details' type=static), - #80, - ), - ), - prop: Constant( - StrWord( - Atom('column' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Object, - ), - ObjectLit( - Props( - 1, - ), - ), - PropOrSpread( - Prop, - ), - Prop( - KeyValue, - ), - KeyValueProp( - Value, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 19029, - ), - hi: BytePos( - 19043, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charCodeAt' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('p' type=static), - #80, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 19091, - ), - hi: BytePos( - 19110, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Member { + obj: Variable( + ( + Atom('peg$posDetailsCache' type=dynamic), + #21, + ), + ), + prop: Variable( + ( + Atom('p' type=static), + #80, + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + While, + ), + WhileStmt( + Test, + ), + Expr( + Unary, + ), + UnaryExpr( + Arg, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 18879, + ), + hi: BytePos( + 18901, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('peg$posDetailsCache' type=dynamic), + #21, + ), + ), + prop: Variable( + ( + Atom('p' type=static), + #80, + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 18943, + ), + hi: BytePos( + 18965, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('details' type=static), + #80, + ), + ), + prop: Constant( + StrWord( + Atom('line' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Object, + ), + ObjectLit( + Props( + 0, + ), + ), + PropOrSpread( + Prop, + ), + Prop( + KeyValue, + ), + KeyValueProp( + Value, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 18999, + ), + hi: BytePos( + 19011, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('details' type=static), + #80, + ), + ), + prop: Constant( + StrWord( + Atom('column' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Object, + ), + ObjectLit( + Props( + 1, + ), + ), + PropOrSpread( + Prop, + ), + Prop( + KeyValue, + ), + KeyValueProp( + Value, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19029, + ), + hi: BytePos( + 19043, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charCodeAt' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('p' type=static), + #80, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Bin, + ), + BinExpr( + Left, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 19091, + ), + hi: BytePos( + 19110, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charCodeAt' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Bin, + ), + BinExpr( + Left, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19091, + ), + hi: BytePos( + 19107, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('details' type=static), + #80, + ), + ), + prop: Constant( + StrWord( + Atom('line' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Update, + ), + UpdateExpr( + Arg, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19131, + ), + hi: BytePos( + 19143, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('details' type=static), + #80, + ), + ), + prop: Constant( + StrWord( + Atom('column' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Left, + ), + PatOrExpr( + Pat, + ), + Pat( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19157, + ), + hi: BytePos( + 19171, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('details' type=static), + #80, + ), + ), + prop: Constant( + StrWord( + Atom('column' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Update, + ), + UpdateExpr( + Arg, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19204, + ), + hi: BytePos( + 19218, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('peg$posDetailsCache' type=dynamic), + #21, + ), + ), + prop: Variable( + ( + Atom('pos' type=inline), + #80, + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 5, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Left, + ), + PatOrExpr( + Pat, + ), + Pat( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 19261, + ), + hi: BytePos( + 19285, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 12, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charCodeAt' type=dynamic), - ), - ), ast_path: [ Program( Script, @@ -26712,539 +27411,16 @@ Stmt( If, ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), IfStmt( Test, ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 19091, - ), - hi: BytePos( - 19107, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('details' type=static), - #80, - ), - ), - prop: Constant( - StrWord( - Atom('line' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Update, - ), - UpdateExpr( - Arg, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 19131, - ), - hi: BytePos( - 19143, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('details' type=static), - #80, - ), - ), - prop: Constant( - StrWord( - Atom('column' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 19157, - ), - hi: BytePos( - 19171, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('details' type=static), - #80, - ), - ), - prop: Constant( - StrWord( - Atom('column' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Update, - ), - UpdateExpr( - Arg, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 19204, - ), - hi: BytePos( - 19218, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('peg$posDetailsCache' type=dynamic), - #21, - ), - ), - prop: Variable( - ( - Atom('pos' type=inline), - #80, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 5, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), ], span: Span { lo: BytePos( - 19261, + 18796, ), hi: BytePos( - 19285, + 19324, ), ctxt: #0, }, @@ -56107,284 +56283,608 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c51' type=inline), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( + [ + MemberCall( 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 52217, - ), - hi: BytePos( - 52242, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 52217, - ), - hi: BytePos( - 52229, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 52217, + ), + hi: BytePos( + 52242, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 52217, + ), + hi: BytePos( + 52229, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 52364, + ), + hi: BytePos( + 52381, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c52' type=inline), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -56460,46 +56960,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 52364, + 52155, ), hi: BytePos( - 52381, + 52404, ), ctxt: #0, }, @@ -56620,309 +57089,14 @@ ), BlockStmt( Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 52488, - ), - hi: BytePos( - 52499, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('s3' type=inline), - #102, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 52488, - ), - hi: BytePos( - 52495, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('peg$c51' type=inline), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('test' type=inline), - ), - ), - args: [ - MemberCall( - 4, - Variable( - ( - Atom('input' type=static), - #21, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, + 0, ), ), Stmt( - If, + Expr, ), - IfStmt( - Test, + ExprStmt( + Expr, ), Expr( Call, @@ -56930,10 +57104,10 @@ ], span: Span { lo: BytePos( - 52517, + 52488, ), hi: BytePos( - 52556, + 52499, ), ctxt: #0, }, @@ -56941,13 +57115,13 @@ Member { obj: Variable( ( - Atom('peg$c51' type=inline), - #21, + Atom('s3' type=inline), + #102, ), ), prop: Constant( StrWord( - Atom('test' type=inline), + Atom('push' type=inline), ), ), ast_path: [ @@ -57046,14 +57220,14 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( - If, + Expr, ), - IfStmt( - Test, + ExprStmt( + Expr, ), Expr( Call, @@ -57070,10 +57244,10 @@ ], span: Span { lo: BytePos( - 52517, + 52488, ), hi: BytePos( - 52529, + 52495, ), ctxt: #0, }, @@ -57081,21 +57255,37 @@ MemberCall { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c51' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), args: [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), ], ast_path: [ @@ -57206,24 +57396,13 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), ], span: Span { lo: BytePos( - 52530, + 52517, ), hi: BytePos( - 52555, + 52556, ), ctxt: #0, }, @@ -57231,13 +57410,13 @@ Member { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c51' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), ast_path: [ @@ -57348,17 +57527,6 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), CallExpr( Callee, ), @@ -57371,10 +57539,10 @@ ], span: Span { lo: BytePos( - 52530, + 52517, ), hi: BytePos( - 52542, + 52529, ), ctxt: #0, }, @@ -57502,38 +57670,29 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), ], span: Span { lo: BytePos( - 52579, + 52530, ), hi: BytePos( - 52604, + 52555, ), ctxt: #0, }, @@ -57653,28 +57812,19 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), @@ -57690,29 +57840,756 @@ ], span: Span { lo: BytePos( - 52579, + 52530, ), hi: BytePos( - 52591, + 52542, ), ctxt: #0, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c52' type=inline), - #21, - ), - ), - ], + }, + Conditional { + condition: MemberCall( + 7, + Variable( + ( + Atom('peg$c51' type=inline), + #21, + ), + ), + Constant( + StrWord( + Atom('test' type=inline), + ), + ), + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ), + ], + ), + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 52579, + ), + hi: BytePos( + 52604, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 52579, + ), + hi: BytePos( + 52591, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 52746, + ), + hi: BytePos( + 52763, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -57816,46 +58693,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 52746, + 52513, ), hi: BytePos( - 52763, + 52794, ), ctxt: #0, }, @@ -58867,340 +59713,748 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c51' type=inline), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( + [ + MemberCall( 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 53311, - ), - hi: BytePos( - 53336, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 53311, - ), - hi: BytePos( - 53323, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 53311, + ), + hi: BytePos( + 53336, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 53311, + ), + hi: BytePos( + 53323, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 53478, + ), + hi: BytePos( + 53495, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c52' type=inline), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -59304,46 +60558,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 53478, + 53245, ), hi: BytePos( - 53495, + 53526, ), ctxt: #0, }, @@ -59510,358 +60733,7 @@ 53622, ), hi: BytePos( - 53633, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('s6' type=inline), - #102, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 53622, - ), - hi: BytePos( - 53629, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('peg$c51' type=inline), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('test' type=inline), - ), - ), - args: [ - MemberCall( - 4, - Variable( - ( - Atom('input' type=static), - #21, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 53655, - ), - hi: BytePos( - 53694, + 53633, ), ctxt: #0, }, @@ -59869,13 +60741,13 @@ Member { obj: Variable( ( - Atom('peg$c51' type=inline), - #21, + Atom('s6' type=inline), + #102, ), ), prop: Constant( StrWord( - Atom('test' type=inline), + Atom('push' type=inline), ), ), ast_path: [ @@ -60002,14 +60874,14 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( - If, + Expr, ), - IfStmt( - Test, + ExprStmt( + Expr, ), Expr( Call, @@ -60026,10 +60898,10 @@ ], span: Span { lo: BytePos( - 53655, + 53622, ), hi: BytePos( - 53667, + 53629, ), ctxt: #0, }, @@ -60037,21 +60909,37 @@ MemberCall { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c51' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), args: [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), ], ast_path: [ @@ -60190,24 +61078,13 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), ], span: Span { lo: BytePos( - 53668, + 53655, ), hi: BytePos( - 53693, + 53694, ), ctxt: #0, }, @@ -60215,13 +61092,13 @@ Member { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c51' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), ast_path: [ @@ -60360,17 +61237,6 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), CallExpr( Callee, ), @@ -60383,10 +61249,10 @@ ], span: Span { lo: BytePos( - 53668, + 53655, ), hi: BytePos( - 53680, + 53667, ), ctxt: #0, }, @@ -60542,38 +61408,29 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), ], span: Span { lo: BytePos( - 53721, + 53668, ), hi: BytePos( - 53746, + 53693, ), ctxt: #0, }, @@ -60721,28 +61578,19 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), @@ -60758,29 +61606,896 @@ ], span: Span { lo: BytePos( - 53721, + 53668, ), hi: BytePos( - 53733, + 53680, ), ctxt: #0, }, }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$c52' type=inline), + Atom('peg$c51' type=inline), #21, ), ), - ], + Constant( + StrWord( + Atom('test' type=inline), + ), + ), + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ), + ], + ), + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 53721, + ), + hi: BytePos( + 53746, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 53721, + ), + hi: BytePos( + 53733, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 53908, + ), + hi: BytePos( + 53925, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 34, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -60912,46 +62627,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 53908, + 53651, ), hi: BytePos( - 53925, + 53964, ), ctxt: #0, }, @@ -71827,179 +73511,12 @@ ), [ Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 39, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 65216, - ), - hi: BytePos( - 65255, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('peg$c61' type=inline), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('test' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 39, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 65216, - ), - hi: BytePos( - 65228, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, - ), + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), ], ast_path: [ @@ -72054,24 +73571,13 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), ], span: Span { lo: BytePos( - 65229, + 65216, ), hi: BytePos( - 65254, + 65255, ), ctxt: #0, }, @@ -72079,13 +73585,13 @@ Member { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c61' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), ast_path: [ @@ -72140,17 +73646,6 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), CallExpr( Callee, ), @@ -72163,10 +73658,10 @@ ], span: Span { lo: BytePos( - 65229, + 65216, ), hi: BytePos( - 65241, + 65228, ), ctxt: #0, }, @@ -72238,38 +73733,29 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), ], span: Span { lo: BytePos( - 65270, + 65229, ), hi: BytePos( - 65295, + 65254, ), ctxt: #0, }, @@ -72333,28 +73819,19 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), @@ -72370,29 +73847,476 @@ ], span: Span { lo: BytePos( - 65270, + 65229, ), hi: BytePos( - 65282, + 65241, ), ctxt: #0, }, }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$c62' type=inline), + Atom('peg$c61' type=inline), #21, ), ), - ], + Constant( + StrWord( + Atom('test' type=inline), + ), + ), + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ), + ], + ), + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 39, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 65270, + ), + hi: BytePos( + 65295, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 39, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 65270, + ), + hi: BytePos( + 65282, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 39, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c62' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 39, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 65397, + ), + hi: BytePos( + 65414, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 39, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -72440,46 +74364,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 65397, + 65212, ), hi: BytePos( - 65414, + 65429, ), ctxt: #0, }, @@ -73204,256 +75097,538 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c65' type=inline), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( + [ + MemberCall( 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 65929, - ), - hi: BytePos( - 65954, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 65929, - ), - hi: BytePos( - 65941, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 65929, + ), + hi: BytePos( + 65954, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 65929, + ), + hi: BytePos( + 65941, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c66' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 66066, + ), + hi: BytePos( + 66083, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c66' type=inline), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -73515,46 +75690,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 66066, + 65869, ), hi: BytePos( - 66083, + 66102, ), ctxt: #0, }, @@ -73621,234 +75765,14 @@ ), BlockStmt( Stmts( - 7, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 66298, - ), - hi: BytePos( - 66325, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('s2' type=inline), - #108, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('s3' type=inline), - #108, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 8, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 66602, - ), - hi: BytePos( - 66613, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('s2' type=inline), - #108, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 8, + 7, ), ), Stmt( - While, + If, ), - WhileStmt( - Body, + IfStmt( + Cons, ), Stmt( Block, @@ -73865,24 +75789,21 @@ Expr, ), Expr( - Call, - ), - CallExpr( - Callee, + Assign, ), - Callee( - Expr, + AssignExpr( + Right, ), Expr( - Member, + Call, ), ], span: Span { lo: BytePos( - 66602, + 66298, ), hi: BytePos( - 66609, + 66325, ), ctxt: #0, }, @@ -73890,37 +75811,21 @@ MemberCall { obj: Variable( ( - Atom('peg$c65' type=inline), - #21, + Atom('s2' type=inline), + #108, ), ), prop: Constant( StrWord( - Atom('test' type=inline), + Atom('push' type=inline), ), ), args: [ - MemberCall( - 4, - Variable( - ( - Atom('input' type=static), - #21, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), + Variable( + ( + Atom('s3' type=inline), + #108, ), - [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, - ), - ), - ], ), ], ast_path: [ @@ -73991,14 +75896,14 @@ ), BlockStmt( Stmts( - 4, + 0, ), ), Stmt( - If, + Expr, ), - IfStmt( - Test, + ExprStmt( + Expr, ), Expr( Call, @@ -74006,10 +75911,10 @@ ], span: Span { lo: BytePos( - 66706, + 66602, ), hi: BytePos( - 66745, + 66613, ), ctxt: #0, }, @@ -74017,13 +75922,13 @@ Member { obj: Variable( ( - Atom('peg$c65' type=inline), - #21, + Atom('s2' type=inline), + #108, ), ), prop: Constant( StrWord( - Atom('test' type=inline), + Atom('push' type=inline), ), ), ast_path: [ @@ -74094,14 +75999,14 @@ ), BlockStmt( Stmts( - 4, + 0, ), ), Stmt( - If, + Expr, ), - IfStmt( - Test, + ExprStmt( + Expr, ), Expr( Call, @@ -74118,10 +76023,10 @@ ], span: Span { lo: BytePos( - 66706, + 66602, ), hi: BytePos( - 66718, + 66609, ), ctxt: #0, }, @@ -74129,21 +76034,37 @@ MemberCall { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c65' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), args: [ - Variable( - ( - Atom('peg$currPos' type=dynamic), - #21, + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), ], ast_path: [ @@ -74226,24 +76147,13 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), ], span: Span { lo: BytePos( - 66719, + 66706, ), hi: BytePos( - 66744, + 66745, ), ctxt: #0, }, @@ -74251,13 +76161,13 @@ Member { obj: Variable( ( - Atom('input' type=static), + Atom('peg$c65' type=inline), #21, ), ), prop: Constant( StrWord( - Atom('charAt' type=inline), + Atom('test' type=inline), ), ), ast_path: [ @@ -74340,17 +76250,6 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), CallExpr( Callee, ), @@ -74363,10 +76262,10 @@ ], span: Span { lo: BytePos( - 66719, + 66706, ), hi: BytePos( - 66731, + 66718, ), ctxt: #0, }, @@ -74466,38 +76365,29 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), ], span: Span { lo: BytePos( - 66764, + 66719, ), hi: BytePos( - 66789, + 66744, ), ctxt: #0, }, @@ -74589,28 +76479,19 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Call, ), - BlockStmt( - Stmts( + CallExpr( + Args( 0, ), ), - Stmt( - Expr, - ), - ExprStmt( + ExprOrSpread( Expr, ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), Expr( Call, ), @@ -74626,29 +76507,616 @@ ], span: Span { lo: BytePos( - 66764, + 66719, ), hi: BytePos( - 66776, + 66731, ), ctxt: #0, }, }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$c66' type=inline), + Atom('peg$c65' type=inline), #21, ), ), - ], + Constant( + StrWord( + Atom('test' type=inline), + ), + ), + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ), + ], + ), + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 8, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 66764, + ), + hi: BytePos( + 66789, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 8, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 66764, + ), + hi: BytePos( + 66776, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 8, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c66' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 8, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 66911, + ), + hi: BytePos( + 66928, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 40, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 8, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -74724,46 +77192,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 66911, + 66702, ), hi: BytePos( - 66928, + 66951, ), ctxt: #0, }, @@ -97734,228 +100171,468 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c117' type=dynamic), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 65, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 89161, - ), - hi: BytePos( - 89186, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 65, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 89161, - ), - hi: BytePos( - 89173, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 65, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 89161, + ), + hi: BytePos( + 89186, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 65, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 89161, + ), + hi: BytePos( + 89173, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 65, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c118' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 65, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 89288, + ), + hi: BytePos( + 89306, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 65, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c118' type=dynamic), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -98000,49 +100677,18 @@ ), ), Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, + If, ), - Expr( - Call, + IfStmt( + Test, ), ], span: Span { lo: BytePos( - 89288, + 89102, ), hi: BytePos( - 89306, + 89321, ), ctxt: #0, }, @@ -98552,256 +101198,538 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c119' type=dynamic), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 89579, - ), - hi: BytePos( - 89604, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 89579, - ), - hi: BytePos( - 89591, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 89579, + ), + hi: BytePos( + 89604, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 89579, + ), + hi: BytePos( + 89591, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c120' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 89716, + ), + hi: BytePos( + 89734, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c120' type=dynamic), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -98863,46 +101791,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 89716, + 89518, ), hi: BytePos( - 89734, + 89753, ), ctxt: #0, }, @@ -99614,284 +102511,608 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c119' type=dynamic), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 89880, - ), - hi: BytePos( - 89905, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 89880, - ), - hi: BytePos( - 89892, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 89880, + ), + hi: BytePos( + 89905, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 89880, + ), + hi: BytePos( + 89892, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c120' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 90027, + ), + hi: BytePos( + 90045, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 66, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c120' type=dynamic), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -99967,46 +103188,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 90027, + 89817, ), hi: BytePos( - 90045, + 90068, ), ctxt: #0, }, @@ -111568,228 +114758,468 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c153' type=dynamic), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 78, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 101908, - ), - hi: BytePos( - 101933, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 78, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 101908, - ), - hi: BytePos( - 101920, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 78, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 101908, + ), + hi: BytePos( + 101933, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 78, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 101908, + ), + hi: BytePos( + 101920, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 78, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c154' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 78, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 102035, + ), + hi: BytePos( + 102053, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 78, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c154' type=dynamic), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -111837,46 +115267,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 102035, + 101849, ), hi: BytePos( - 102053, + 102068, ), ctxt: #0, }, @@ -169680,228 +173079,468 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c51' type=inline), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 106, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 164525, - ), - hi: BytePos( - 164550, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 106, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 164525, - ), - hi: BytePos( - 164537, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 164525, + ), + hi: BytePos( + 164550, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 164525, + ), + hi: BytePos( + 164537, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 164652, + ), + hi: BytePos( + 164669, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c52' type=inline), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -169949,46 +173588,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 164652, + 164467, ), hi: BytePos( - 164669, + 164684, ), ctxt: #0, }, @@ -170700,284 +174308,608 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ + Conditional { + condition: MemberCall( + 7, Variable( ( - Atom('peg$currPos' type=dynamic), + Atom('peg$c51' type=inline), #21, ), ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 106, + Constant( + StrWord( + Atom('test' type=inline), ), ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( + [ + MemberCall( 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 164839, - ), - hi: BytePos( - 164864, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 106, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - While, - ), - WhileStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 164839, - ), - hi: BytePos( - 164851, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('peg$currPos' type=dynamic), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 164839, + ), + hi: BytePos( + 164864, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 164839, + ), + hi: BytePos( + 164851, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$c52' type=inline), + #21, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 164986, + ), + hi: BytePos( + 165003, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 106, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 4, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + While, + ), + WhileStmt( + Body, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$c52' type=inline), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -171053,46 +174985,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 164986, + 164777, ), hi: BytePos( - 165003, + 165026, ), ctxt: #0, }, From ab9eebe4b2fa402d3daef78383ccca1a551eeeb5 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 27 Jan 2023 00:05:40 +0100 Subject: [PATCH 02/27] add logical operations --- .../turbopack/basic/comptime/index.js | 14 + .../src/analyzer/builtin.rs | 84 +- .../src/analyzer/graph.rs | 27 +- .../turbopack-ecmascript/src/analyzer/mod.rs | 255 +- .../graph/esbuild/graph-effects.snapshot | 1760 +++++++------ .../graph/logical/graph-effects.snapshot | 1 + .../graph/logical/graph-explained.snapshot | 25 + .../analyzer/graph/logical/graph.snapshot | 305 +++ .../tests/analyzer/graph/logical/input.js | 14 + .../graph/logical/resolved-explained.snapshot | 33 + .../graph/md5_2/graph-effects.snapshot | 1695 +++++++----- .../mongoose-reduced/graph-explained.snapshot | 2 +- .../graph/mongoose-reduced/graph.snapshot | 3 +- .../analyzer/graph/peg/graph-effects.snapshot | 2310 ++++++++++------- .../graph/peg/graph-explained.snapshot | 27 +- .../tests/analyzer/graph/peg/graph.snapshot | 330 ++- .../graph/peg/resolved-explained.snapshot | 166 +- 17 files changed, 4655 insertions(+), 2396 deletions(-) create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-effects.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-explained.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/logical/input.js create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/logical/resolved-explained.snapshot diff --git a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js index af26156731f30..af1c0632c3a0b 100644 --- a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js +++ b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js @@ -42,3 +42,17 @@ it("should evaluate process.turbopack", () => { import("fail"); } }); + +it("should evaluate !process.turbopack", () => { + if (!process.turbopack) { + require("fail"); + import("fail"); + } +}); + +// it("should evaluate NODE_ENV", () => { +// if (process.env.NODE_ENV !== "development") { +// require("fail"); +// import("fail"); +// } +// }); diff --git a/crates/turbopack-ecmascript/src/analyzer/builtin.rs b/crates/turbopack-ecmascript/src/analyzer/builtin.rs index eb313dbd87b91..d05056f30a426 100644 --- a/crates/turbopack-ecmascript/src/analyzer/builtin.rs +++ b/crates/turbopack-ecmascript/src/analyzer/builtin.rs @@ -1,6 +1,6 @@ use std::{mem::take, sync::Arc}; -use super::{ConstantNumber, ConstantValue, JsValue, ObjectPart}; +use super::{ConstantNumber, ConstantValue, JsValue, LogicalOperator, ObjectPart}; use crate::analyzer::FreeVarKind; const ARRAY_METHODS: [&str; 2] = ["concat", "map"]; @@ -25,6 +25,14 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { value.make_unknown("property on number or string"); true } + JsValue::Logical(..) => { + value.make_unknown("property on logical operation"); + true + } + JsValue::Not(..) => { + value.make_unknown("property on not operation"); + true + } JsValue::Unknown(..) => { value.make_unknown("property on unknown"); true @@ -108,7 +116,10 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { ); true } - JsValue::Concat(..) | JsValue::Add(..) => { + JsValue::Concat(..) + | JsValue::Add(..) + | JsValue::Logical(..) + | JsValue::Not(..) => { if prop.has_placeholder() { // keep the member infact since it might be handled later false @@ -211,7 +222,10 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { ); true } - JsValue::Concat(..) | JsValue::Add(..) => { + JsValue::Concat(..) + | JsValue::Add(..) + | JsValue::Logical(..) + | JsValue::Not(..) => { if prop.has_placeholder() { // keep the member intact since it might be handled later false @@ -408,6 +422,14 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { value.make_unknown("call of number or string"); true } + JsValue::Logical(..) => { + value.make_unknown("call of logical operation"); + true + } + JsValue::Not(..) => { + value.make_unknown("call of not operation"); + true + } JsValue::WellKnownFunction(..) => { value.make_unknown("unknown call of well known function"); true @@ -474,6 +496,62 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { false } } + JsValue::Logical(_, op, ref mut parts) => { + let len = parts.len(); + for (i, part) in take(parts).into_iter().enumerate() { + if i == len - 1 { + parts.push(part); + break; + } + let skip_part = match op { + LogicalOperator::And => part.is_truthy(), + LogicalOperator::Or => part.is_falsy(), + LogicalOperator::NullishCoalescing => part.is_falsy(), + }; + match skip_part { + Some(true) => { + continue; + } + Some(false) => { + parts.push(part); + break; + } + None => { + parts.push(part); + continue; + } + } + } + if parts.len() == 1 { + *value = parts.pop().unwrap(); + true + } else { + if parts.iter().all(|part| !part.has_placeholder()) { + *value = JsValue::alternatives(take(parts)); + true + } else { + parts.len() != len + } + } + } + JsValue::Not(_, ref inner) => match inner.is_truthy() { + Some(true) => { + *value = JsValue::Constant(ConstantValue::False); + true + } + Some(false) => { + *value = JsValue::Constant(ConstantValue::True); + true + } + None => { + if inner.has_placeholder() { + false + } else { + value.make_unknown("negation of unknown value"); + true + } + } + }, _ => false, } } diff --git a/crates/turbopack-ecmascript/src/analyzer/graph.rs b/crates/turbopack-ecmascript/src/analyzer/graph.rs index 121f9cf2402bd..f40e5e8bc29ac 100644 --- a/crates/turbopack-ecmascript/src/analyzer/graph.rs +++ b/crates/turbopack-ecmascript/src/analyzer/graph.rs @@ -313,6 +313,7 @@ impl EvalContext { pub fn eval(&self, e: &Expr) -> JsValue { match e { + Expr::Paren(e) => self.eval(&e.expr), Expr::Lit(e) => JsValue::Constant(e.clone().into()), Expr::Ident(i) => { let id = i.to_id(); @@ -334,6 +335,14 @@ impl EvalContext { } } + Expr::Unary(UnaryExpr { + op: op!("!"), arg, .. + }) => { + let arg = self.eval(arg); + + JsValue::logical_not(box arg) + } + Expr::Bin(BinExpr { op: op!(bin, "+"), left, @@ -353,11 +362,25 @@ impl EvalContext { } Expr::Bin(BinExpr { - op: op!("||") | op!("??"), + op: op!("&&"), + left, + right, + .. + }) => JsValue::logical_and(vec![self.eval(left), self.eval(right)]), + + Expr::Bin(BinExpr { + op: op!("||"), + left, + right, + .. + }) => JsValue::logical_or(vec![self.eval(left), self.eval(right)]), + + Expr::Bin(BinExpr { + op: op!("??"), left, right, .. - }) => JsValue::alternatives(vec![self.eval(left), self.eval(right)]), + }) => JsValue::nullish_coalescing(vec![self.eval(left), self.eval(right)]), &Expr::Cond(CondExpr { box ref cons, diff --git a/crates/turbopack-ecmascript/src/analyzer/mod.rs b/crates/turbopack-ecmascript/src/analyzer/mod.rs index f1c0bed79e401..daed9c096936d 100644 --- a/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -180,6 +180,30 @@ pub struct ModuleValue { pub annotations: ImportAnnotations, } +#[derive(Debug, Clone, Hash, PartialEq, Eq)] +pub enum LogicalOperator { + And, + Or, + NullishCoalescing, +} + +impl LogicalOperator { + fn joiner(&self) -> &'static str { + match self { + LogicalOperator::And => " && ", + LogicalOperator::Or => " || ", + LogicalOperator::NullishCoalescing => " ?? ", + } + } + fn multi_line_joiner(&self) -> &'static str { + match self { + LogicalOperator::And => "&& ", + LogicalOperator::Or => "|| ", + LogicalOperator::NullishCoalescing => "?? ", + } + } +} + /// TODO: Use `Arc` #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum JsValue { @@ -208,6 +232,12 @@ pub enum JsValue { /// is string. Add(usize, Vec), + /// Logical negation `!expr` + Not(usize, Box), + + /// Logical operator chain `expr && expr` + Logical(usize, LogicalOperator, Vec), + /// `(callee, args)` Call(usize, Box, Vec), @@ -350,6 +380,15 @@ impl Display for JsValue { .collect::>() .join(" + ") ), + JsValue::Not(_, value) => write!(f, "!({})", value), + JsValue::Logical(_, op, list) => write!( + f, + "({})", + list.iter() + .map(|v| v.to_string()) + .collect::>() + .join(op.joiner()) + ), JsValue::Call(_, callee, list) => write!( f, "{}({})", @@ -451,6 +490,26 @@ impl JsValue { Self::Add(1 + total_nodes(&list), list) } + pub fn logical_and(list: Vec) -> Self { + Self::Logical(1 + total_nodes(&list), LogicalOperator::And, list) + } + + pub fn logical_or(list: Vec) -> Self { + Self::Logical(1 + total_nodes(&list), LogicalOperator::Or, list) + } + + pub fn nullish_coalescing(list: Vec) -> Self { + Self::Logical( + 1 + total_nodes(&list), + LogicalOperator::NullishCoalescing, + list, + ) + } + + pub fn logical_not(inner: Box) -> Self { + Self::Not(1 + inner.total_nodes(), inner) + } + pub fn array(list: Vec) -> Self { Self::Array(1 + total_nodes(&list), list) } @@ -505,6 +564,8 @@ impl JsValue { | JsValue::Alternatives(c, _) | JsValue::Concat(c, _) | JsValue::Add(c, _) + | JsValue::Not(c, _) + | JsValue::Logical(c, _, _) | JsValue::Call(c, _, _) | JsValue::MemberCall(c, _, _, _) | JsValue::Member(c, _, _) @@ -527,10 +588,15 @@ impl JsValue { JsValue::Array(c, list) | JsValue::Alternatives(c, list) | JsValue::Concat(c, list) - | JsValue::Add(c, list) => { + | JsValue::Add(c, list) + | JsValue::Logical(c, _, list) => { *c = 1 + total_nodes(list); } + JsValue::Not(c, r) => { + *c = 1 + r.total_nodes(); + } + JsValue::Object(c, props) => { *c = 1 + props .iter() @@ -579,10 +645,14 @@ impl JsValue { JsValue::Array(_, list) | JsValue::Alternatives(_, list) | JsValue::Concat(_, list) + | JsValue::Logical(_, _, list) | JsValue::Add(_, list) => { make_max_unknown(list.iter_mut()); self.update_total_nodes(); } + JsValue::Not(_, r) => { + r.make_unknown_without_content("node limit reached"); + } JsValue::Object(_, list) => { make_max_unknown(list.iter_mut().flat_map(|v| match v { // TODO this probably can avoid heap allocation somehow @@ -786,6 +856,28 @@ impl JsValue { "+ " ) ), + JsValue::Logical(_, op, list) => format!( + "({})", + pretty_join( + &list + .iter() + .map(|v| v.explain_internal_inner( + hints, + indent_depth + 1, + depth, + unknown_depth + )) + .collect::>(), + indent_depth, + op.joiner(), + "", + op.multi_line_joiner() + ) + ), + JsValue::Not(_, value) => format!( + "!({})", + value.explain_internal_inner(hints, indent_depth, depth, unknown_depth) + ), JsValue::Call(_, callee, list) => { format!( "{}({})", @@ -1069,7 +1161,9 @@ impl JsValue { | JsValue::Object(..) | JsValue::Alternatives(..) | JsValue::Concat(..) - | JsValue::Add(..) => { + | JsValue::Add(..) + | JsValue::Not(..) + | JsValue::Logical(..) => { let mut result = false; self.for_each_children(&mut |child| { result = result || child.has_placeholder(); @@ -1096,10 +1190,26 @@ impl JsValue { | JsValue::WellKnownFunction(..) | JsValue::Function(..) => Some(true), JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_truthy())), + JsValue::Not(_, value) => value.is_truthy().map(|x| !x), + JsValue::Logical(_, op, list) => match op { + LogicalOperator::And => all_if_known(list.iter().map(|x| x.is_truthy())), + LogicalOperator::Or => any_if_known(list.iter().map(|x| x.is_truthy())), + LogicalOperator::NullishCoalescing => { + if all_if_known(list[..list.len() - 1].iter().map(|x| x.is_nullish()))? { + list.last().unwrap().is_truthy() + } else { + Some(false) + } + } + }, _ => None, } } + pub fn is_falsy(&self) -> Option { + self.is_truthy().map(|x| !x) + } + pub fn is_nullish(&self) -> Option { match self { JsValue::Constant(c) => Some(c.is_nullish()), @@ -1109,8 +1219,20 @@ impl JsValue { | JsValue::Object(..) | JsValue::WellKnownObject(..) | JsValue::WellKnownFunction(..) + | JsValue::Not(..) | JsValue::Function(..) => Some(false), JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_nullish())), + JsValue::Logical(_, op, list) => match op { + LogicalOperator::And => { + shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_nullish) + } + LogicalOperator::Or => { + shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_nullish) + } + LogicalOperator::NullishCoalescing => { + all_if_known(list.iter().map(|x| x.is_nullish())) + } + }, _ => None, } } @@ -1122,6 +1244,17 @@ impl JsValue { JsValue::Alternatives(_, list) => { merge_if_known(list.iter().map(|x| x.is_empty_string())) } + JsValue::Logical(_, op, list) => match op { + LogicalOperator::And => { + shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_empty_string) + } + LogicalOperator::Or => { + shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_empty_string) + } + LogicalOperator::NullishCoalescing => { + shortcircut_if_known(list, JsValue::is_nullish, JsValue::is_empty_string) + } + }, JsValue::Url(..) | JsValue::Array(..) | JsValue::Object(..) @@ -1173,12 +1306,37 @@ fn all_if_known(list: impl IntoIterator>) -> Option { } } +fn any_if_known(list: impl IntoIterator>) -> Option { + all_if_known(list.into_iter().map(|x| x.map(|x| !x))).map(|x| !x) +} + +fn shortcircut_if_known( + list: impl IntoIterator, + use_item: impl Fn(T) -> Option, + item_value: impl FnOnce(T) -> Option, +) -> Option { + let mut it = list.into_iter().peekable(); + while let Some(item) = it.next() { + if it.peek().is_none() { + return item_value(item); + } else { + match use_item(item) { + Some(true) => return item_value(item), + None => return None, + _ => {} + } + } + } + None +} + macro_rules! for_each_children_async { ($value:expr, $visit_fn:expr, $($args:expr),+) => { Ok(match &mut $value { JsValue::Alternatives(_, list) | JsValue::Concat(_, list) | JsValue::Add(_, list) + | JsValue::Logical(_, _, list) | JsValue::Array(_, list) => { let mut modified = false; for item in list.iter_mut() { @@ -1257,6 +1415,13 @@ macro_rules! for_each_children_async { $value.update_total_nodes(); ($value, modified) } + JsValue::Not(_, box value) => { + let (new_value, modified) = $visit_fn(take(value), $($args),+).await?; + *value = new_value; + + $value.update_total_nodes(); + ($value, modified) + } JsValue::Member(_, box obj, box prop) => { let (v, m1) = $visit_fn(take(obj), $($args),+).await?; *obj = v; @@ -1413,6 +1578,7 @@ impl JsValue { JsValue::Alternatives(_, list) | JsValue::Concat(_, list) | JsValue::Add(_, list) + | JsValue::Logical(_, _, list) | JsValue::Array(_, list) => { let mut modified = false; for item in list.iter_mut() { @@ -1423,6 +1589,11 @@ impl JsValue { self.update_total_nodes(); modified } + JsValue::Not(_, value) => { + let modified = visitor(value); + self.update_total_nodes(); + modified + } JsValue::Object(_, list) => { let mut modified = false; for item in list.iter_mut() { @@ -1501,11 +1672,15 @@ impl JsValue { JsValue::Alternatives(_, list) | JsValue::Concat(_, list) | JsValue::Add(_, list) + | JsValue::Logical(_, _, list) | JsValue::Array(_, list) => { for item in list.iter() { visitor(item); } } + JsValue::Not(_, value) => { + visitor(value); + } JsValue::Object(_, list) => { for item in list.iter() { match item { @@ -1551,42 +1726,54 @@ impl JsValue { } } - pub fn is_string(&self) -> bool { + pub fn is_string(&self) -> Option { match self { JsValue::Constant(ConstantValue::StrWord(..)) | JsValue::Constant(ConstantValue::StrAtom(..)) - | JsValue::Concat(..) => true, + | JsValue::Concat(..) => Some(true), JsValue::Constant(..) | JsValue::Array(..) | JsValue::Object(..) | JsValue::Url(..) | JsValue::Module(..) - | JsValue::Function(..) => false, + | JsValue::Function(..) => Some(false), - JsValue::FreeVar(FreeVarKind::Dirname | FreeVarKind::Filename) => true, + JsValue::FreeVar(FreeVarKind::Dirname | FreeVarKind::Filename) => Some(true), JsValue::FreeVar( FreeVarKind::Object | FreeVarKind::Require | FreeVarKind::Define | FreeVarKind::Import | FreeVarKind::NodeProcess, - ) => false, - JsValue::FreeVar(FreeVarKind::Other(_)) => false, - - JsValue::Add(_, v) => v.iter().any(|v| v.is_string()), + ) => Some(false), + JsValue::FreeVar(FreeVarKind::Other(_)) => None, + + JsValue::Not(..) => Some(false), + JsValue::Add(_, list) => any_if_known(list.iter().map(|v| v.is_string())), + JsValue::Logical(_, op, list) => match op { + LogicalOperator::And => { + shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_string) + } + LogicalOperator::Or => { + shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_string) + } + LogicalOperator::NullishCoalescing => { + shortcircut_if_known(list, JsValue::is_nullish, JsValue::is_string) + } + }, - JsValue::Alternatives(_, v) => v.iter().all(|v| v.is_string()), + JsValue::Alternatives(_, v) => merge_if_known(v.iter().map(|v| v.is_string())), - JsValue::Variable(_) | JsValue::Unknown(..) | JsValue::Argument(..) => false, + JsValue::Variable(_) | JsValue::Unknown(..) | JsValue::Argument(..) => None, JsValue::Call( _, box JsValue::WellKnownFunction(WellKnownFunctionKind::RequireResolve), _, - ) => true, - JsValue::Call(..) | JsValue::MemberCall(..) | JsValue::Member(..) => false, - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) => false, + ) => Some(true), + JsValue::Call(..) | JsValue::MemberCall(..) | JsValue::Member(..) => None, + JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) => Some(false), } } @@ -1755,7 +1942,7 @@ impl JsValue { let mut added: Vec = Vec::new(); let mut iter = take(v).into_iter(); while let Some(item) = iter.next() { - if item.is_string() { + if item.is_string() == Some(true) { let mut concat = match added.len() { 0 => Vec::new(), 1 => vec![added.into_iter().next().unwrap()], @@ -1784,6 +1971,28 @@ impl JsValue { self.update_total_nodes(); } } + JsValue::Logical(_, op, list) => { + if list.iter().any(|v| { + if let JsValue::Logical(_, inner_op, _) = v { + inner_op == op + } else { + false + } + }) { + for mut v in take(list).into_iter() { + if let JsValue::Logical(_, inner_op, inner_list) = &mut v { + if inner_op == op { + list.append(inner_list); + } else { + list.push(v); + } + } else { + list.push(v); + } + } + self.update_total_nodes(); + } + } _ => {} } } @@ -1836,6 +2045,10 @@ impl JsValue { lc == rc && all_similar(l, r, depth - 1) } (JsValue::Add(lc, l), JsValue::Add(rc, r)) => lc == rc && all_similar(l, r, depth - 1), + (JsValue::Logical(lc, lo, l), JsValue::Logical(rc, ro, r)) => { + lc == rc && lo == ro && all_similar(l, r, depth - 1) + } + (JsValue::Not(lc, l), JsValue::Not(rc, r)) => lc == rc && l.similar(r, depth - 1), (JsValue::Call(lc, lf, la), JsValue::Call(rc, rf, ra)) => { lc == rc && lf.similar(rf, depth - 1) && all_similar(la, ra, depth - 1) } @@ -1900,14 +2113,16 @@ impl JsValue { match self { JsValue::Constant(v) => Hash::hash(v, state), - JsValue::Array(_, v) => all_similar_hash(v, state, depth - 1), JsValue::Object(_, v) => all_parts_similar_hash(v, state, depth - 1), JsValue::Url(v) => Hash::hash(v, state), - JsValue::Alternatives(_, v) => all_similar_hash(v, state, depth - 1), JsValue::FreeVar(v) => Hash::hash(v, state), JsValue::Variable(v) => Hash::hash(v, state), - JsValue::Concat(_, v) => all_similar_hash(v, state, depth - 1), - JsValue::Add(_, v) => all_similar_hash(v, state, depth - 1), + JsValue::Array(_, v) + | JsValue::Alternatives(_, v) + | JsValue::Concat(_, v) + | JsValue::Add(_, v) + | JsValue::Logical(_, _, v) => all_similar_hash(v, state, depth - 1), + JsValue::Not(_, v) => v.similar_hash(state, depth - 1), JsValue::Call(_, a, b) => { a.similar_hash(state, depth - 1); all_similar_hash(b, state, depth - 1); diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot index 7638358e5e1e0..57fbdada1785e 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/graph-effects.snapshot @@ -1190,401 +1190,51 @@ ctxt: #0, }, }, - MemberCall { - obj: FreeVar( - Require, - ), - prop: Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('pkg' type=inline), - #4, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - Try, - ), - TryStmt( - Handler, - ), - CatchClause( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Try, - ), - TryStmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1758, - ), - hi: BytePos( - 1778, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Require, - ), - prop: Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - Try, - ), - TryStmt( - Handler, - ), - CatchClause( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Try, - ), - TryStmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1758, - ), - hi: BytePos( - 1773, - ), - ctxt: #0, - }, - }, - Call { - func: FreeVar( - Require, - ), - args: [ - Constant( - StrWord( - Atom('pnpapi' type=inline), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 5, + Conditional { + condition: Not( + 5, + MemberCall( + 4, + FreeVar( + Other( + Atom('fs' type=inline), + ), ), - ), - Stmt( - Try, - ), - TryStmt( - Block, - ), - BlockStmt( - Stmts( - 0, + Constant( + StrWord( + Atom('existsSync' type=dynamic), + ), ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2196, - ), - hi: BytePos( - 2213, - ), - ctxt: #0, - }, - }, - Conditional { - condition: Variable( - ( - Atom('isYarnPnP' type=dynamic), - #4, + [ + Variable( + ( + Atom('binPath' type=inline), + #4, + ), + ), + ], ), ), kind: If { then: EffectsBlock { effects: [ MemberCall { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), + obj: FreeVar( + Require, ), prop: Constant( StrWord( - Atom('dirname' type=inline), + Atom('resolve' type=inline), ), ), args: [ - MemberCall( - 4, - FreeVar( - Require, - ), - Constant( - StrWord( - Atom('resolve' type=inline), - ), - ), - [ - Constant( - StrWord( - Atom('esbuild' type=inline), - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 6, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2299, - ), - hi: BytePos( - 2339, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('dirname' type=inline), + Variable( + ( + Atom('pkg' type=inline), + #4, + ), ), - ), + ], ast_path: [ Program( Script, @@ -1608,7 +1258,21 @@ ), BlockStmt( Stmts( - 6, + 3, + ), + ), + Stmt( + Try, + ), + TryStmt( + Handler, + ), + CatchClause( + Body, + ), + BlockStmt( + Stmts( + 1, ), ), Stmt( @@ -1626,43 +1290,37 @@ ), ), Stmt( - Decl, + Try, ), - Decl( - Var, + TryStmt( + Block, ), - VarDecl( - Decls( + BlockStmt( + Stmts( 0, ), ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Callee, + Stmt( + Expr, ), - Callee( + ExprStmt( Expr, ), Expr( - Member, + Call, ), ], span: Span { lo: BytePos( - 2299, + 1758, ), hi: BytePos( - 2311, + 1778, ), ctxt: #0, }, }, - MemberCall { + Member { obj: FreeVar( Require, ), @@ -1671,13 +1329,6 @@ Atom('resolve' type=inline), ), ), - args: [ - Constant( - StrWord( - Atom('esbuild' type=inline), - ), - ), - ], ast_path: [ Program( Script, @@ -1701,7 +1352,21 @@ ), BlockStmt( Stmts( - 6, + 3, + ), + ), + Stmt( + Try, + ), + TryStmt( + Handler, + ), + CatchClause( + Body, + ), + BlockStmt( + Stmts( + 1, ), ), Stmt( @@ -1719,53 +1384,262 @@ ), ), Stmt( - Decl, + Try, ), - Decl( - Var, + TryStmt( + Block, ), - VarDecl( - Decls( + BlockStmt( + Stmts( 0, ), ), - VarDeclarator( - Init, + Stmt( + Expr, + ), + ExprStmt( + Expr, ), Expr( Call, ), CallExpr( - Args( - 0, - ), + Callee, ), - ExprOrSpread( + Callee( Expr, ), Expr( - Call, + Member, ), ], span: Span { lo: BytePos( - 2312, + 1758, ), hi: BytePos( - 2338, + 1773, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + Try, + ), + TryStmt( + Handler, + ), + CatchClause( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 3, + ), + ), + Stmt( + Try, + ), + TryStmt( + Handler, + ), + CatchClause( + Body, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + ], + span: Span { + lo: BytePos( + 1707, + ), + hi: BytePos( + 2154, + ), + ctxt: #0, + }, + }, + Call { + func: FreeVar( + Require, + ), + args: [ + Constant( + StrWord( + Atom('pnpapi' type=inline), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 5, + ), + ), + Stmt( + Try, + ), + TryStmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2196, + ), + hi: BytePos( + 2213, + ), + ctxt: #0, + }, + }, + Conditional { + condition: Variable( + ( + Atom('isYarnPnP' type=dynamic), + #4, + ), + ), + kind: If { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('path' type=static), + #1, ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Require, ), prop: Constant( StrWord( - Atom('resolve' type=inline), + Atom('dirname' type=inline), ), ), + args: [ + MemberCall( + 4, + FreeVar( + Require, + ), + Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + [ + Constant( + StrWord( + Atom('esbuild' type=inline), + ), + ), + ], + ), + ], ast_path: [ Program( Script, @@ -1823,38 +1697,18 @@ Expr( Call, ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), ], span: Span { lo: BytePos( - 2312, + 2299, ), hi: BytePos( - 2327, + 2339, ), ctxt: #0, }, }, - MemberCall { + Member { obj: Variable( ( Atom('path' type=static), @@ -1863,60 +1717,9 @@ ), prop: Constant( StrWord( - Atom('join' type=inline), + Atom('dirname' type=inline), ), ), - args: [ - Variable( - ( - Atom('esbuildLibDir' type=dynamic), - #7, - ), - ), - Concat( - 8, - [ - Constant( - StrAtom( - "pnpapi-", - ), - ), - Variable( - ( - Atom('pkg' type=inline), - #4, - ), - ), - Constant( - StrAtom( - "-", - ), - ), - MemberCall( - 4, - Variable( - ( - Atom('path' type=static), - #1, - ), - ), - Constant( - StrWord( - Atom('basename' type=dynamic), - ), - ), - [ - Variable( - ( - Atom('subpath' type=inline), - #4, - ), - ), - ], - ), - ], - ), - ], ast_path: [ Program( Script, @@ -1954,7 +1757,7 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( @@ -1974,29 +1777,42 @@ Expr( Call, ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), ], span: Span { lo: BytePos( - 2367, + 2299, ), hi: BytePos( - 2452, + 2311, ), ctxt: #0, }, }, - Member { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), + MemberCall { + obj: FreeVar( + Require, ), prop: Constant( StrWord( - Atom('join' type=inline), + Atom('resolve' type=inline), ), ), + args: [ + Constant( + StrWord( + Atom('esbuild' type=inline), + ), + ), + ], ast_path: [ Program( Script, @@ -2034,7 +1850,7 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( @@ -2055,45 +1871,36 @@ Call, ), CallExpr( - Callee, + Args( + 0, + ), ), - Callee( + ExprOrSpread( Expr, ), Expr( - Member, + Call, ), ], span: Span { lo: BytePos( - 2367, + 2312, ), hi: BytePos( - 2376, + 2338, ), ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('path' type=static), - #1, - ), + Member { + obj: FreeVar( + Require, ), prop: Constant( StrWord( - Atom('basename' type=dynamic), + Atom('resolve' type=inline), ), ), - args: [ - Variable( - ( - Atom('subpath' type=inline), - #4, - ), - ), - ], ast_path: [ Program( Script, @@ -2131,7 +1938,7 @@ ), BlockStmt( Stmts( - 1, + 0, ), ), Stmt( @@ -2153,35 +1960,36 @@ ), CallExpr( Args( - 1, + 0, ), ), ExprOrSpread( Expr, ), Expr( - Tpl, + Call, ), - Tpl( - Exprs( - 1, - ), + CallExpr( + Callee, + ), + Callee( + Expr, ), Expr( - Call, + Member, ), ], span: Span { lo: BytePos( - 2422, + 2312, ), hi: BytePos( - 2444, + 2327, ), ctxt: #0, }, }, - Member { + MemberCall { obj: Variable( ( Atom('path' type=static), @@ -2190,9 +1998,60 @@ ), prop: Constant( StrWord( - Atom('basename' type=dynamic), + Atom('join' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('esbuildLibDir' type=dynamic), + #7, + ), + ), + Concat( + 8, + [ + Constant( + StrAtom( + "pnpapi-", + ), + ), + Variable( + ( + Atom('pkg' type=inline), + #4, + ), + ), + Constant( + StrAtom( + "-", + ), + ), + MemberCall( + 4, + Variable( + ( + Atom('path' type=static), + #1, + ), + ), + Constant( + StrWord( + Atom('basename' type=dynamic), + ), + ), + [ + Variable( + ( + Atom('subpath' type=inline), + #4, + ), + ), + ], + ), + ], ), - ), + ], ast_path: [ Program( Script, @@ -2250,64 +2109,29 @@ Expr( Call, ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Tpl, - ), - Tpl( - Exprs( - 1, - ), - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), ], span: Span { lo: BytePos( - 2422, + 2367, ), hi: BytePos( - 2435, + 2452, ), ctxt: #0, }, }, - MemberCall { - obj: FreeVar( - Other( - Atom('fs' type=inline), + Member { + obj: Variable( + ( + Atom('path' type=static), + #1, ), ), prop: Constant( StrWord( - Atom('existsSync' type=dynamic), + Atom('join' type=inline), ), ), - args: [ - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - ], ast_path: [ Program( Script, @@ -2345,46 +2169,66 @@ ), BlockStmt( Stmts( - 2, + 1, ), ), Stmt( - If, + Decl, ), - IfStmt( - Test, + Decl( + Var, ), - Expr( - Unary, + VarDecl( + Decls( + 0, + ), ), - UnaryExpr( - Arg, + VarDeclarator( + Init, ), Expr( Call, ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), ], span: Span { lo: BytePos( - 2463, + 2367, ), hi: BytePos( - 2491, + 2376, ), ctxt: #0, }, }, - Member { - obj: FreeVar( - Other( - Atom('fs' type=inline), + MemberCall { + obj: Variable( + ( + Atom('path' type=static), + #1, ), ), prop: Constant( StrWord( - Atom('existsSync' type=dynamic), + Atom('basename' type=dynamic), ), ), + args: [ + Variable( + ( + Atom('subpath' type=inline), + #4, + ), + ), + ], ast_path: [ Program( Script, @@ -2422,69 +2266,68 @@ ), BlockStmt( Stmts( - 2, + 1, ), ), Stmt( - If, + Decl, ), - IfStmt( - Test, + Decl( + Var, ), - Expr( - Unary, + VarDecl( + Decls( + 0, + ), ), - UnaryExpr( - Arg, + VarDeclarator( + Init, ), Expr( Call, ), CallExpr( - Callee, + Args( + 1, + ), ), - Callee( + ExprOrSpread( Expr, ), Expr( - Member, + Tpl, + ), + Tpl( + Exprs( + 1, + ), + ), + Expr( + Call, ), ], span: Span { lo: BytePos( - 2463, + 2422, ), hi: BytePos( - 2476, + 2444, ), ctxt: #0, }, }, - MemberCall { - obj: FreeVar( - Other( - Atom('fs' type=inline), + Member { + obj: Variable( + ( + Atom('path' type=static), + #1, ), ), prop: Constant( StrWord( - Atom('copyFileSync' type=dynamic), + Atom('basename' type=dynamic), ), ), - args: [ - Variable( - ( - Atom('binPath' type=inline), - #4, - ), - ), - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - ], ast_path: [ Program( Script, @@ -2522,44 +2365,66 @@ ), BlockStmt( Stmts( - 2, + 1, ), ), Stmt( - If, - ), - IfStmt( - Cons, + Decl, ), - Stmt( - Block, + Decl( + Var, ), - BlockStmt( - Stmts( + VarDecl( + Decls( 0, ), ), - Stmt( - Expr, + VarDeclarator( + Init, ), - ExprStmt( + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( Expr, ), + Expr( + Tpl, + ), + Tpl( + Exprs( + 1, + ), + ), Expr( Call, ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), ], span: Span { lo: BytePos( - 2501, + 2422, ), hi: BytePos( - 2540, + 2435, ), ctxt: #0, }, }, - Member { + MemberCall { obj: FreeVar( Other( Atom('fs' type=inline), @@ -2567,9 +2432,17 @@ ), prop: Constant( StrWord( - Atom('copyFileSync' type=dynamic), + Atom('existsSync' type=dynamic), ), ), + args: [ + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + ], ast_path: [ Program( Script, @@ -2614,46 +2487,29 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, + Test, ), Expr( - Call, - ), - CallExpr( - Callee, + Unary, ), - Callee( - Expr, + UnaryExpr( + Arg, ), Expr( - Member, + Call, ), ], span: Span { lo: BytePos( - 2501, + 2463, ), hi: BytePos( - 2516, + 2491, ), ctxt: #0, }, }, - MemberCall { + Member { obj: FreeVar( Other( Atom('fs' type=inline), @@ -2661,24 +2517,9 @@ ), prop: Constant( StrWord( - Atom('chmodSync' type=dynamic), + Atom('existsSync' type=dynamic), ), ), - args: [ - Variable( - ( - Atom('binTargetPath' type=dynamic), - #7, - ), - ), - Constant( - Num( - ConstantNumber( - 493.0, - ), - ), - ), - ], ast_path: [ Program( Script, @@ -2723,47 +2564,502 @@ If, ), IfStmt( - Cons, + Test, ), - Stmt( - Block, + Expr( + Unary, ), - BlockStmt( - Stmts( - 1, - ), + UnaryExpr( + Arg, ), - Stmt( - Expr, + Expr( + Call, ), - ExprStmt( + CallExpr( + Callee, + ), + Callee( Expr, ), Expr( - Call, + Member, ), ], span: Span { lo: BytePos( - 2548, + 2463, ), hi: BytePos( - 2580, + 2476, ), ctxt: #0, }, }, - Member { - obj: FreeVar( - Other( - Atom('fs' type=inline), - ), - ), - prop: Constant( - StrWord( - Atom('chmodSync' type=dynamic), + Conditional { + condition: Not( + 5, + MemberCall( + 4, + FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + Constant( + StrWord( + Atom('existsSync' type=dynamic), + ), + ), + [ + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + ], ), ), + kind: If { + then: EffectsBlock { + effects: [ + MemberCall { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('copyFileSync' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('binPath' type=inline), + #4, + ), + ), + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2501, + ), + hi: BytePos( + 2540, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('copyFileSync' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2501, + ), + hi: BytePos( + 2516, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('chmodSync' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('binTargetPath' type=dynamic), + #7, + ), + ), + Constant( + Num( + ConstantNumber( + 493.0, + ), + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 2548, + ), + hi: BytePos( + 2580, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Other( + Atom('fs' type=inline), + ), + ), + prop: Constant( + StrWord( + Atom('chmodSync' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 2548, + ), + hi: BytePos( + 2560, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 6, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 6, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -2808,41 +3104,15 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 2548, + 2458, ), hi: BytePos( - 2560, + 2587, ), ctxt: #0, }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-effects.snapshot new file mode 100644 index 0000000000000..fe51488c7066f --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-effects.snapshot @@ -0,0 +1 @@ +[] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-explained.snapshot new file mode 100644 index 0000000000000..8a56ef7b5b36d --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph-explained.snapshot @@ -0,0 +1,25 @@ +a = (x && y) + +b = (x || y) + +c = (x ?? y) + +chain1 = (1 && 2 && 3 && FreeVar(global)) + +chain2 = ((1 && 2 && FreeVar(global)) || 3 || 4) + +d = !(x) + +e = !(!(x)) + +resolve1 = (1 && 2 && FreeVar(global) && 3 && 4) + +resolve2 = (1 && 2 && 0 && FreeVar(global) && 4) + +resolve3 = (FreeVar(global) || true) + +resolve4 = (true || FreeVar(global)) + +x = true + +y = false diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph.snapshot new file mode 100644 index 0000000000000..bfa1253f3dc66 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/graph.snapshot @@ -0,0 +1,305 @@ +[ + ( + "a", + Logical( + 3, + And, + [ + Variable( + ( + Atom('x' type=static), + #1, + ), + ), + Variable( + ( + Atom('y' type=inline), + #1, + ), + ), + ], + ), + ), + ( + "b", + Logical( + 3, + Or, + [ + Variable( + ( + Atom('x' type=static), + #1, + ), + ), + Variable( + ( + Atom('y' type=inline), + #1, + ), + ), + ], + ), + ), + ( + "c", + Logical( + 3, + NullishCoalescing, + [ + Variable( + ( + Atom('x' type=static), + #1, + ), + ), + Variable( + ( + Atom('y' type=inline), + #1, + ), + ), + ], + ), + ), + ( + "chain1", + Logical( + 5, + And, + [ + Constant( + Num( + ConstantNumber( + 1.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 2.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 3.0, + ), + ), + ), + FreeVar( + Other( + Atom('global' type=static), + ), + ), + ], + ), + ), + ( + "chain2", + Logical( + 7, + Or, + [ + Logical( + 4, + And, + [ + Constant( + Num( + ConstantNumber( + 1.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 2.0, + ), + ), + ), + FreeVar( + Other( + Atom('global' type=static), + ), + ), + ], + ), + Constant( + Num( + ConstantNumber( + 3.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 4.0, + ), + ), + ), + ], + ), + ), + ( + "d", + Not( + 2, + Variable( + ( + Atom('x' type=static), + #1, + ), + ), + ), + ), + ( + "e", + Not( + 3, + Not( + 2, + Variable( + ( + Atom('x' type=static), + #1, + ), + ), + ), + ), + ), + ( + "resolve1", + Logical( + 6, + And, + [ + Constant( + Num( + ConstantNumber( + 1.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 2.0, + ), + ), + ), + FreeVar( + Other( + Atom('global' type=static), + ), + ), + Constant( + Num( + ConstantNumber( + 3.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 4.0, + ), + ), + ), + ], + ), + ), + ( + "resolve2", + Logical( + 6, + And, + [ + Constant( + Num( + ConstantNumber( + 1.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 2.0, + ), + ), + ), + Constant( + Num( + ConstantNumber( + 0.0, + ), + ), + ), + FreeVar( + Other( + Atom('global' type=static), + ), + ), + Constant( + Num( + ConstantNumber( + 4.0, + ), + ), + ), + ], + ), + ), + ( + "resolve3", + Logical( + 3, + Or, + [ + FreeVar( + Other( + Atom('global' type=static), + ), + ), + Constant( + True, + ), + ], + ), + ), + ( + "resolve4", + Logical( + 3, + Or, + [ + Constant( + True, + ), + FreeVar( + Other( + Atom('global' type=static), + ), + ), + ], + ), + ), + ( + "x", + Constant( + True, + ), + ), + ( + "y", + Constant( + False, + ), + ), +] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/logical/input.js b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/input.js new file mode 100644 index 0000000000000..770fb991566b1 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/input.js @@ -0,0 +1,14 @@ +let x = true; +let y = false; +let a = x && y; +let b = x || y; +let c = x ?? y; +let d = !x; +let e = !!x; + +let chain1 = 1 && 2 && 3 && global; +let chain2 = (1 && 2 && global) || 3 || 4; +let resolve1 = 1 && 2 && global && 3 && 4; +let resolve2 = 1 && 2 && 0 && global && 4; +let resolve3 = global || true; +let resolve4 = true || global; diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/logical/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/resolved-explained.snapshot new file mode 100644 index 0000000000000..a5ae85b7bffb9 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/logical/resolved-explained.snapshot @@ -0,0 +1,33 @@ +a = false + +b = true + +c = true + +chain1 = ???*0* +- *0* FreeVar(global) + ⚠️ unknown global + +chain2 = (???*0* | 3) +- *0* FreeVar(global) + ⚠️ unknown global + +d = false + +e = true + +resolve1 = (???*0* | 4) +- *0* FreeVar(global) + ⚠️ unknown global + +resolve2 = 0 + +resolve3 = (???*0* | true) +- *0* FreeVar(global) + ⚠️ unknown global + +resolve4 = true + +x = true + +y = false diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot index a7e51a7ec0c76..4ec341b36ec9b 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/graph-effects.snapshot @@ -757,409 +757,725 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('bin' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('stringToBytes' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, + Conditional { + condition: Logical( + 3, + And, + [ + Variable( + ( + Atom('options' type=inline), + #3, + ), ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, + Unknown( + None, + "unsupported expression", ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 357, - ), - hi: BytePos( - 383, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('bin' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('stringToBytes' type=dynamic), - ), + ], ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 357, - ), - hi: BytePos( - 374, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('utf8' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('stringToBytes' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 408, - ), - hi: BytePos( - 435, - ), - ctxt: #0, + kind: IfElse { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('bin' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('stringToBytes' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 357, + ), + hi: BytePos( + 383, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('bin' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('stringToBytes' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 357, + ), + hi: BytePos( + 374, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('utf8' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('stringToBytes' type=dynamic), + ), + ), + args: [ + Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 408, + ), + hi: BytePos( + 435, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('utf8' type=inline), + #1, + ), + ), + prop: Constant( + StrWord( + Atom('stringToBytes' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 408, + ), + hi: BytePos( + 426, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + ], + }, }, - }, - Member { - obj: Variable( - ( - Atom('utf8' type=inline), - #1, - ), - ), - prop: Constant( - StrWord( - Atom('stringToBytes' type=dynamic), - ), - ), ast_path: [ Program( Script, @@ -1242,39 +1558,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 408, + 291, ), hi: BytePos( - 426, + 436, ), ctxt: #0, }, @@ -2345,147 +2637,394 @@ ctxt: #0, }, }, - MemberCall { - obj: Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - prop: Constant( - StrWord( - Atom('toString' type=static), - ), - ), - args: [], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 4, + Conditional { + condition: Not( + 5, + MemberCall( + 4, + FreeVar( + Other( + Atom('Array' type=static), + ), ), - ), - VarDeclarator( - Init, - ), - Expr( - Fn, - ), - FnExpr( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, + Constant( + StrWord( + Atom('isArray' type=inline), + ), ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 579, - ), - hi: BytePos( - 597, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('message' type=inline), - #3, - ), - ), - prop: Constant( - StrWord( - Atom('toString' type=static), + [ + Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + ], ), ), + kind: If { + then: EffectsBlock { + effects: [ + MemberCall { + obj: Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + prop: Constant( + StrWord( + Atom('toString' type=static), + ), + ), + args: [], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 579, + ), + hi: BytePos( + 597, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('message' type=inline), + #3, + ), + ), + prop: Constant( + StrWord( + Atom('toString' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Assign, + ), + AssignExpr( + Right, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 579, + ), + hi: BytePos( + 595, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Paren, + ), + ParenExpr( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 4, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -2574,39 +3113,15 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 579, + 540, ), hi: BytePos( - 595, + 598, ), ctxt: #0, }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph-explained.snapshot index e928080a4c0bb..5b78df0d6fce1 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph-explained.snapshot @@ -2,4 +2,4 @@ Collection = FreeVar(Require)(`${driver}/collection`) Connection = FreeVar(Require)(`${driver}/connection`) -driver = (FreeVar(global)["MONGOOSE_DRIVER_PATH"] | "./drivers/node-mongodb-native") +driver = (FreeVar(global)["MONGOOSE_DRIVER_PATH"] || "./drivers/node-mongodb-native") diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph.snapshot index e89f6d4ca28e2..b341ad7676ac0 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/graph.snapshot @@ -55,8 +55,9 @@ ), ( "driver", - Alternatives( + Logical( 5, + Or, [ Member( 3, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot index 6e9b1f0682036..d7a007e7ee962 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-effects.snapshot @@ -24797,18 +24797,174 @@ ctxt: #0, }, }, - Member { - obj: Variable( - ( - Atom('options' type=inline), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('startRule' type=dynamic), + Conditional { + condition: Not( + 2, + Unknown( + None, + "unsupported expression", ), ), + kind: If { + then: EffectsBlock { + effects: [ + Member { + obj: Variable( + ( + Atom('options' type=inline), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('startRule' type=dynamic), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + New, + ), + NewExpr( + Args, + ), + ExprOrSpread( + Expr, + ), + Expr( + Bin, + ), + BinExpr( + Left, + ), + Expr( + Bin, + ), + BinExpr( + Right, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 17326, + ), + hi: BytePos( + 17343, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 2, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, ast_path: [ Program( Script, @@ -24853,53 +25009,15 @@ If, ), IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - New, - ), - NewExpr( - Args, - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, + Test, ), ], span: Span { lo: BytePos( - 17326, + 17204, ), hi: BytePos( - 17343, + 17365, ), ctxt: #0, }, @@ -178859,307 +178977,731 @@ ctxt: #0, }, }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, + Conditional { + condition: Logical( + 3, + And, + [ + Unknown( + None, + "unsupported expression", ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, + Unknown( + None, + "unsupported expression", ), - ), - Stmt( - If, - ), - IfStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 169512, - ), - hi: BytePos( - 169524, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('peg$fail' type=dynamic), - #21, - ), + ], ), - args: [ - Call( - 2, - Variable( - ( - Atom('peg$endExpectation' type=dynamic), - #21, + kind: IfElse { + then: EffectsBlock { + effects: [], + ast_path: [ + Program( + Script, ), - ), - [], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 169534, - ), - hi: BytePos( - 169564, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('peg$endExpectation' type=dynamic), - #21, - ), - ), - args: [], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 169543, - ), - hi: BytePos( - 169563, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('peg$buildStructuredError' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$maxFailExpected' type=dynamic), - #21, - ), - ), - Alternatives( - 6, - [ - MemberCall( - 4, - Variable( + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + else: EffectsBlock { + effects: [ + Member { + obj: Variable( ( Atom('input' type=static), #21, ), ), - Constant( + prop: Constant( + StrWord( + Atom('length' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + Expr( + Bin, + ), + BinExpr( + Right, + ), + Expr( + Bin, + ), + BinExpr( + Right, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 169512, + ), + hi: BytePos( + 169524, + ), + ctxt: #0, + }, + }, + Conditional { + condition: Logical( + 3, + And, + [ + Unknown( + None, + "unsupported expression", + ), + Unknown( + None, + "unsupported expression", + ), + ], + ), + kind: If { + then: EffectsBlock { + effects: [ + Call { + func: Variable( + ( + Atom('peg$fail' type=dynamic), + #21, + ), + ), + args: [ + Call( + 2, + Variable( + ( + Atom('peg$endExpectation' type=dynamic), + #21, + ), + ), + [], + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169534, + ), + hi: BytePos( + 169564, + ), + ctxt: #0, + }, + }, + Call { + func: Variable( + ( + Atom('peg$endExpectation' type=dynamic), + #21, + ), + ), + args: [], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Expr, + ), + ExprStmt( + Expr, + ), + Expr( + Call, + ), + CallExpr( + Args( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169543, + ), + hi: BytePos( + 169563, + ), + ctxt: #0, + }, + }, + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Cons, + ), + ], + }, + }, + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + If, + ), + IfStmt( + Test, + ), + ], + span: Span { + lo: BytePos( + 169465, + ), + hi: BytePos( + 169571, + ), + ctxt: #0, + }, + }, + Call { + func: Variable( + ( + Atom('peg$buildStructuredError' type=dynamic), + #21, + ), + ), + args: [ + Variable( + ( + Atom('peg$maxFailExpected' type=dynamic), + #21, + ), + ), + Alternatives( + 6, + [ + MemberCall( + 4, + Variable( + ( + Atom('input' type=static), + #21, + ), + ), + Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + [ + Variable( + ( + Atom('peg$maxFailPos' type=dynamic), + #21, + ), + ), + ], + ), + Constant( + Null, + ), + ], + ), + Alternatives( + 11, + [ + Call( + 6, + Variable( + ( + Atom('peg$computeLocation' type=dynamic), + #21, + ), + ), + [ + Variable( + ( + Atom('peg$maxFailPos' type=dynamic), + #21, + ), + ), + Add( + 3, + [ + Variable( + ( + Atom('peg$maxFailPos' type=dynamic), + #21, + ), + ), + Constant( + Num( + ConstantNumber( + 1.0, + ), + ), + ), + ], + ), + ], + ), + Call( + 4, + Variable( + ( + Atom('peg$computeLocation' type=dynamic), + #21, + ), + ), + [ + Variable( + ( + Atom('peg$maxFailPos' type=dynamic), + #21, + ), + ), + Variable( + ( + Atom('peg$maxFailPos' type=dynamic), + #21, + ), + ), + ], + ), + ], + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169583, + ), + hi: BytePos( + 169880, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('length' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Test, + ), + Expr( + Bin, + ), + BinExpr( + Right, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 169659, + ), + hi: BytePos( + 169671, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( StrWord( Atom('charAt' type=inline), ), ), - [ + args: [ Variable( ( Atom('peg$maxFailPos' type=dynamic), @@ -179167,24 +179709,284 @@ ), ), ], - ), - Constant( - Null, - ), - ], - ), - Alternatives( - 11, - [ - Call( - 6, - Variable( + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Cons, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169674, + ), + hi: BytePos( + 169702, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('charAt' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 1, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Cons, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 169674, + ), + hi: BytePos( + 169686, + ), + ctxt: #0, + }, + }, + Member { + obj: Variable( + ( + Atom('input' type=static), + #21, + ), + ), + prop: Constant( + StrWord( + Atom('length' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 2, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Test, + ), + Expr( + Bin, + ), + BinExpr( + Right, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 169734, + ), + hi: BytePos( + 169746, + ), + ctxt: #0, + }, + }, + Call { + func: Variable( ( Atom('peg$computeLocation' type=dynamic), #21, ), ), - [ + args: [ Variable( ( Atom('peg$maxFailPos' type=dynamic), @@ -179210,16 +180012,91 @@ ], ), ], - ), - Call( - 4, - Variable( + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 2, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Cons, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169757, + ), + hi: BytePos( + 169812, + ), + ctxt: #0, + }, + }, + Call { + func: Variable( ( Atom('peg$computeLocation' type=dynamic), #21, ), ), - [ + args: [ Variable( ( Atom('peg$maxFailPos' type=dynamic), @@ -179233,586 +180110,119 @@ ), ), ], - ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, + ), + ), + Stmt( + If, + ), + IfStmt( + Alt, + ), + Stmt( + Block, + ), + BlockStmt( + Stmts( + 1, + ), + ), + Stmt( + Throw, + ), + ThrowStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Args( + 2, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Cond, + ), + CondExpr( + Alt, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 169823, + ), + hi: BytePos( + 169874, + ), + ctxt: #0, + }, + }, ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 169583, - ), - hi: BytePos( - 169880, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 169659, - ), - hi: BytePos( - 169671, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('peg$maxFailPos' type=dynamic), - #21, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Cons, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 169674, - ), - hi: BytePos( - 169702, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Cons, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 169674, - ), - hi: BytePos( - 169686, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #21, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 2, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 169734, - ), - hi: BytePos( - 169746, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('peg$computeLocation' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$maxFailPos' type=dynamic), - #21, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('peg$maxFailPos' type=dynamic), - #21, + ast_path: [ + Program( + Script, + ), + Script( + Body( + 5, ), ), - Constant( - Num( - ConstantNumber( - 1.0, - ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 111, ), ), + Stmt( + If, + ), + IfStmt( + Alt, + ), ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 5, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 111, - ), - ), - Stmt( - If, - ), - IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 2, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Cons, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 169757, - ), - hi: BytePos( - 169812, - ), - ctxt: #0, + }, }, - }, - Call { - func: Variable( - ( - Atom('peg$computeLocation' type=dynamic), - #21, - ), - ), - args: [ - Variable( - ( - Atom('peg$maxFailPos' type=dynamic), - #21, - ), - ), - Variable( - ( - Atom('peg$maxFailPos' type=dynamic), - #21, - ), - ), - ], ast_path: [ Program( Script, @@ -179843,49 +180253,15 @@ If, ), IfStmt( - Alt, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Throw, - ), - ThrowStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 2, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Cond, - ), - CondExpr( - Alt, - ), - Expr( - Call, + Test, ), ], span: Span { lo: BytePos( - 169823, + 169362, ), hi: BytePos( - 169874, + 169885, ), ctxt: #0, }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-explained.snapshot index ffde1db819918..c59f848dad49c 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph-explained.snapshot @@ -138,8 +138,7 @@ *anonymous function 5936* = (...) => {"type": "sort_expression", "expression": expression, "order": order} -*anonymous function 625* = (...) => ???*0* -- *0* unsupported expression +*anonymous function 625* = (...) => `Expected ${describeExpected(expected)} but ${describeFound(found)} found.` *anonymous function 6287* = (...) => {"type": "scalar_function_expression", "name": name, "arguments": args, "udf": true} @@ -165,8 +164,7 @@ "value": (FreeVar(parseInt)(text(), 16) | FreeVar(parseFloat)(text())) } -*anonymous function 804* = (...) => `[${???*0*}${escapedParts}]` -- *0* unsupported expression +*anonymous function 804* = (...) => `[${("^" | "")}${escapedParts}]` *anonymous function 8139* = (...) => {"type": "string_constant", "value": chars["join"]("")} @@ -182,14 +180,16 @@ *anonymous function 9939* = (...) => "AND" -*arrow function 13694* = (...) => ???*0* -- *0* unsupported expression +*arrow function 13694* = (...) => {"type": "scalar_member_expression", "object": object, "property": property, "computed": computed} -*arrow function 16259* = (...) => ???*0* -- *0* unsupported expression +*arrow function 16259* = (...) => { + "type": "collection_member_expression", + "object": object, + "property": property, + "computed": computed +} -*arrow function 169161* = (...) => ???*0* -- *0* unsupported expression +*arrow function 169161* = (...) => {"type": "scalar_binary_expression", "left": left, "operator": operator, "right": right} DESCRIBE_EXPECTATION_FNS = { "literal": *anonymous function 702*, @@ -243,8 +243,13 @@ ctor = (...) => FreeVar(undefined) describeExpectation = (...) => DESCRIBE_EXPECTATION_FNS[expectation["type"]](expectation) -describeExpected = (...) => (descriptions[0] | `${descriptions[0]} or ${descriptions[1]}` | ???*0*) +describeExpected = (...) => ( + | descriptions[0] + | `${descriptions[0]} or ${descriptions[1]}` + | `${descriptions["slice"](0, ???*0*)["join"](", ")}, or ${descriptions[???*1*]}` +) - *0* unsupported expression +- *1* unsupported expression describeFound = (...) => (`"${literalEscape(found)}"` | "end of input") diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph.snapshot index d3ef51b3a3464..171fa4db7121e 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/graph.snapshot @@ -1861,10 +1861,60 @@ ( "*anonymous function 625*", Function( - 2, - Unknown( - None, - "unsupported expression", + 11, + Concat( + 10, + [ + Constant( + StrWord( + Atom('Expected ' type=dynamic), + ), + ), + Call( + 3, + Variable( + ( + Atom('describeExpected' type=dynamic), + #5, + ), + ), + [ + Variable( + ( + Atom('expected' type=dynamic), + #5, + ), + ), + ], + ), + Constant( + StrWord( + Atom(' but ' type=inline), + ), + ), + Call( + 3, + Variable( + ( + Atom('describeFound' type=dynamic), + #5, + ), + ), + [ + Variable( + ( + Atom('found' type=inline), + #5, + ), + ), + ], + ), + Constant( + StrWord( + Atom(' found.' type=inline), + ), + ), + ], ), ), ), @@ -2298,18 +2348,29 @@ ( "*anonymous function 804*", Function( - 6, + 8, Concat( - 5, + 7, [ Constant( StrWord( Atom('[' type=inline), ), ), - Unknown( - None, - "unsupported expression", + Alternatives( + 3, + [ + Constant( + StrWord( + Atom('^' type=inline), + ), + ), + Constant( + StrWord( + Atom('' type=static), + ), + ), + ], ), Variable( ( @@ -2481,30 +2542,186 @@ ( "*arrow function 13694*", Function( - 2, - Unknown( - None, - "unsupported expression", + 10, + Object( + 9, + [ + KeyValue( + Constant( + StrWord( + Atom('type' type=static), + ), + ), + Constant( + StrWord( + Atom('scalar_member_expression' type=dynamic), + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('object' type=static), + ), + ), + Variable( + ( + Atom('object' type=static), + #61, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('property' type=static), + ), + ), + Variable( + ( + Atom('property' type=static), + #61, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('computed' type=dynamic), + ), + ), + Variable( + ( + Atom('computed' type=dynamic), + #61, + ), + ), + ), + ], ), ), ), ( "*arrow function 16259*", Function( - 2, - Unknown( - None, - "unsupported expression", + 10, + Object( + 9, + [ + KeyValue( + Constant( + StrWord( + Atom('type' type=static), + ), + ), + Constant( + StrWord( + Atom('collection_member_expression' type=dynamic), + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('object' type=static), + ), + ), + Variable( + ( + Atom('object' type=static), + #70, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('property' type=static), + ), + ), + Variable( + ( + Atom('property' type=static), + #70, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('computed' type=dynamic), + ), + ), + Variable( + ( + Atom('computed' type=dynamic), + #70, + ), + ), + ), + ], ), ), ), ( "*arrow function 169161*", Function( - 2, - Unknown( - None, - "unsupported expression", + 10, + Object( + 9, + [ + KeyValue( + Constant( + StrWord( + Atom('type' type=static), + ), + ), + Constant( + StrWord( + Atom('scalar_binary_expression' type=dynamic), + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('left' type=static), + ), + ), + Variable( + ( + Atom('left' type=static), + #178, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('operator' type=dynamic), + ), + ), + Variable( + ( + Atom('operator' type=dynamic), + #178, + ), + ), + ), + KeyValue( + Constant( + StrWord( + Atom('right' type=static), + ), + ), + Variable( + ( + Atom('right' type=static), + #178, + ), + ), + ), + ], ), ), ), @@ -2998,9 +3215,9 @@ ( "describeExpected", Function( - 14, + 26, Alternatives( - 13, + 25, [ Member( 3, @@ -3060,9 +3277,70 @@ ), ], ), - Unknown( - None, - "unsupported expression", + Concat( + 13, + [ + MemberCall( + 8, + MemberCall( + 5, + Variable( + ( + Atom('descriptions' type=dynamic), + #19, + ), + ), + Constant( + StrWord( + Atom('slice' type=static), + ), + ), + [ + Constant( + Num( + ConstantNumber( + 0.0, + ), + ), + ), + Unknown( + None, + "unsupported expression", + ), + ], + ), + Constant( + StrWord( + Atom('join' type=inline), + ), + ), + [ + Constant( + StrWord( + Atom(', ' type=inline), + ), + ), + ], + ), + Constant( + StrWord( + Atom(', or ' type=inline), + ), + ), + Member( + 3, + Variable( + ( + Atom('descriptions' type=dynamic), + #19, + ), + ), + Unknown( + None, + "unsupported expression", + ), + ), + ], ), ], ), diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot index d54f0c08bea9b..d01d0c583726e 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot @@ -60,8 +60,16 @@ *anonymous function 13543* = (...) => {"property": arguments[1], "computed": true} -*anonymous function 13636* = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +*anonymous function 13636* = (...) => arguments[1]["reduce"]( + (...) => {"type": "scalar_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, + arguments[0] +) +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed *anonymous function 13891* = (...) => {"type": "scalar_unary_expression", "operator": arguments[0], "argument": arguments[1]} @@ -74,8 +82,16 @@ "alternate": arguments[2] } -*anonymous function 14448* = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +*anonymous function 14448* = (...) => arguments[1]["reduce"]( + (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, + arguments[0] +) +- *0* left + ⚠️ pattern without value +- *1* operator + ⚠️ pattern without value +- *2* right + ⚠️ pattern without value *anonymous function 15047* = (...) => {"type": "scalar_in_expression", "value": arguments[0], "list": arguments[1]} @@ -90,8 +106,16 @@ *anonymous function 16072* = (...) => {"type": "collection_expression", "expression": arguments[0]} -*anonymous function 16201* = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +*anonymous function 16201* = (...) => arguments[1]["reduce"]( + (...) => {"type": "collection_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, + arguments[0] +) +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed *anonymous function 16460* = (...) => {"type": "collection_subquery_expression", "expression": arguments[0]} @@ -160,8 +184,33 @@ *anonymous function 5936* = (...) => {"type": "sort_expression", "expression": arguments[0], "order": arguments[1]} -*anonymous function 625* = (...) => ???*0* -- *0* unsupported expression +*anonymous function 625* = (...) => `Expected ${(???*0* | `${???*2*} or ${???*4*}` | `${???*6*}, or ${???*12*}`)} but ${( + | `"${...(..., ...)["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...[...]()}`)["replace"](/[\x10-\x1F\x7F-\x9F]/g, (...) => `\x${...[...](16)["toUpperCase"]()}`)}"` + | "end of input" + )} found.` +- *0* ???*1*[0] + ⚠️ property on unknown +- *1* unknown new expression +- *2* ???*3*[0] + ⚠️ property on unknown +- *3* unknown new expression +- *4* ???*5*[1] + ⚠️ property on unknown +- *5* unknown new expression +- *6* ???*7*(", ") + ⚠️ call of unknown function +- *7* ???*8*["join"] + ⚠️ property on unknown +- *8* ???*9*(0, ???*11*) + ⚠️ call of unknown function +- *9* ???*10*["slice"] + ⚠️ property on unknown +- *10* unknown new expression +- *11* unsupported expression +- *12* ???*13*[???*14*] + ⚠️ property on unknown +- *13* unknown new expression +- *14* unsupported expression *anonymous function 6287* = (...) => {"type": "scalar_function_expression", "name": arguments[0], "arguments": arguments[1], "udf": true} @@ -188,8 +237,7 @@ *anonymous function 7869* = ???*0* - *0* in progress nodes limit reached -*anonymous function 804* = (...) => `[${???*0*}]` -- *0* unsupported expression +*anonymous function 804* = (...) => `[${("^" | "")}]` *anonymous function 8139* = (...) => {"type": "string_constant", "value": arguments[0]["join"]("")} @@ -205,26 +253,40 @@ *anonymous function 9939* = (...) => "AND" -*arrow function 13694* = (...) => ???*0* -- *0* unsupported expression +*arrow function 13694* = (...) => {"type": "scalar_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*} +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed -*arrow function 16259* = (...) => ???*0* -- *0* unsupported expression +*arrow function 16259* = (...) => {"type": "collection_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*} +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed -*arrow function 169161* = (...) => ???*0* -- *0* unsupported expression +*arrow function 169161* = (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*} +- *0* left + ⚠️ pattern without value +- *1* operator + ⚠️ pattern without value +- *2* right + ⚠️ pattern without value DESCRIBE_EXPECTATION_FNS = { "literal": (...) => `"${...[...](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...(...)["toUpperCase"]()}`)["replace"]( /[\x10-\x1F\x7F-\x9F]/g, (...) => `\x${...(...)["toString"](16)["toUpperCase"]()}` )}"`, - "class": (...) => `[${???*0*}]`, + "class": (...) => `[${("^" | "")}]`, "any": (...) => "any character", "end": (...) => "end of input", "other": (...) => arguments[0]["description"] } -- *0* unsupported expression alias#34 = arguments[0] @@ -244,8 +306,16 @@ begin = arguments[1] body = arguments[0] -buildBinaryExpression = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +buildBinaryExpression = (...) => arguments[1]["reduce"]( + (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, + arguments[0] +) +- *0* left + ⚠️ pattern without value +- *1* operator + ⚠️ pattern without value +- *2* right + ⚠️ pattern without value ch#11 = arguments[0] @@ -279,14 +349,13 @@ ctor = (...) => ???*0* describeExpectation = (...) => { "literal": (...) => `"${...(..., ...)["replace"](/[\x00-\x0F]/g, (...) => `\x0${...}`)["replace"](/[\x10-\x1F\x7F-\x9F]/g, (...) => `\x${...[...]()}`)}"`, - "class": (...) => `[${???*0*}]`, + "class": (...) => `[${("^" | "")}]`, "any": (...) => "any character", "end": (...) => "end of input", "other": (...) => arguments[0]["description"] }[arguments[0]["type"]](arguments[0]) -- *0* unsupported expression -describeExpected = (...) => (???*0* | `${???*2*} or ${???*4*}` | ???*6*) +describeExpected = (...) => (???*0* | `${???*2*} or ${???*4*}` | `${???*6*}, or ${???*12*}`) - *0* ???*1*[0] ⚠️ property on unknown - *1* unknown new expression @@ -296,7 +365,20 @@ describeExpected = (...) => (???*0* | `${???*2*} or ${???*4*}` | ???*6*) - *4* ???*5*[1] ⚠️ property on unknown - *5* unknown new expression -- *6* unsupported expression +- *6* ???*7*(", ") + ⚠️ call of unknown function +- *7* ???*8*["join"] + ⚠️ property on unknown +- *8* ???*9*(0, ???*11*) + ⚠️ call of unknown function +- *9* ???*10*["slice"] + ⚠️ property on unknown +- *10* unknown new expression +- *11* unsupported expression +- *12* ???*13*[???*14*] + ⚠️ property on unknown +- *13* unknown new expression +- *14* unsupported expression describeFound = (...) => ( | `"${...[...](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...(...)["toUpperCase"]()}`)["replace"]( @@ -738,8 +820,16 @@ peg$c161 = (...) => {"property": arguments[1], "computed": false} peg$c162 = (...) => {"property": arguments[1], "computed": true} -peg$c163 = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +peg$c163 = (...) => arguments[1]["reduce"]( + (...) => {"type": "scalar_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, + arguments[0] +) +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed peg$c164 = (...) => {"type": "scalar_unary_expression", "operator": arguments[0], "argument": arguments[1]} @@ -764,8 +854,16 @@ peg$c170 = "??" peg$c171 = {"type": "literal", "text": "??", "ignoreCase": false} -peg$c172 = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +peg$c172 = (...) => arguments[1]["reduce"]( + (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, + arguments[0] +) +- *0* left + ⚠️ pattern without value +- *1* operator + ⚠️ pattern without value +- *2* right + ⚠️ pattern without value peg$c173 = "=" @@ -852,8 +950,16 @@ peg$c207 = (...) => {"key": arguments[0], "value": arguments[1]} peg$c208 = (...) => {"type": "collection_expression", "expression": arguments[0]} -peg$c209 = (...) => arguments[1]["reduce"]((...) => ???*0*, arguments[0]) -- *0* unsupported expression +peg$c209 = (...) => arguments[1]["reduce"]( + (...) => {"type": "collection_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, + arguments[0] +) +- *0* object + ⚠️ pattern without value +- *1* property + ⚠️ no value of this variable analysed +- *2* computed + ⚠️ no value of this variable analysed peg$c21 = (...) => {"type": "sort_specification", "expressions": ???*0*} - *0* spread is not supported From 735fb2fe40eb8cf8de809a9d3c1c17010cadc598 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 27 Jan 2023 12:32:00 +0100 Subject: [PATCH 03/27] organize, comment, simplify --- .../src/analyzer/builtin.rs | 482 ++++---------- .../turbopack-ecmascript/src/analyzer/mod.rs | 625 +++++++++++------- .../src/analyzer/well_known.rs | 3 +- .../src/references/mod.rs | 33 +- .../graph/array/resolved-explained.snapshot | 12 +- .../graph/esbuild/resolved-explained.snapshot | 186 +++--- .../md5-reduced/resolved-explained.snapshot | 60 +- .../graph/md5/resolved-explained.snapshot | 30 +- .../graph/md5_2/resolved-explained.snapshot | 149 ++--- .../member-call/resolved-explained.snapshot | 6 +- .../resolved-explained.snapshot | 10 +- .../resolved-explained.snapshot | 24 +- .../graph/peg/resolved-explained.snapshot | 606 ++++++++++------- 13 files changed, 1115 insertions(+), 1111 deletions(-) diff --git a/crates/turbopack-ecmascript/src/analyzer/builtin.rs b/crates/turbopack-ecmascript/src/analyzer/builtin.rs index d05056f30a426..1cb622507e2ca 100644 --- a/crates/turbopack-ecmascript/src/analyzer/builtin.rs +++ b/crates/turbopack-ecmascript/src/analyzer/builtin.rs @@ -7,263 +7,133 @@ const ARRAY_METHODS: [&str; 2] = ["concat", "map"]; pub fn replace_builtin(value: &mut JsValue) -> bool { match value { - JsValue::Member(_, box ref mut obj, ref mut prop) => { - match obj { - JsValue::Constant(_) => { - value.make_unknown("property on constant"); - true - } - JsValue::Url(_) => { - value.make_unknown("property on url"); - true - } - JsValue::Concat(..) => { - value.make_unknown("property on string"); - true - } - JsValue::Add(..) => { - value.make_unknown("property on number or string"); - true - } - JsValue::Logical(..) => { - value.make_unknown("property on logical operation"); - true - } - JsValue::Not(..) => { - value.make_unknown("property on not operation"); - true - } - JsValue::Unknown(..) => { - value.make_unknown("property on unknown"); - true - } - JsValue::Function(..) => { - value.make_unknown("property on function"); - true - } - JsValue::Alternatives(_, alts) => { - *value = JsValue::alternatives( - take(alts) - .into_iter() - .map(|alt| JsValue::member(box alt, prop.clone())) - .collect(), - ); - true - } - JsValue::Array(_, array) => { - fn items_to_alternatives( - items: &mut Vec, - prop: &mut JsValue, - ) -> JsValue { - items.push(JsValue::Unknown( - Some(Arc::new(JsValue::member( - box JsValue::array(Vec::new()), - box take(prop), - ))), - "unknown array prototype methods or values", - )); - JsValue::alternatives(take(items)) - } - match &mut **prop { - JsValue::Unknown(_, _) => { - *value = items_to_alternatives(array, prop); - true - } - JsValue::Constant(ConstantValue::Num(ConstantNumber(num))) => { - let index: usize = *num as usize; - if index as f64 == *num && index < array.len() { - *value = array.swap_remove(index); - true - } else { - *value = JsValue::Unknown( - Some(Arc::new(JsValue::member(box take(obj), box take(prop)))), - "invalid index", - ); - true - } - } - JsValue::Constant(c) => { - if let Some(s) = c.as_str() { - if ARRAY_METHODS.iter().any(|method| *method == s) { - return false; - } - } - value.make_unknown("non-num constant property on array"); - true - } - JsValue::Array(..) => { - value.make_unknown("array property on array"); - true - } - JsValue::Object(..) => { - value.make_unknown("object property on array"); - true - } - JsValue::Url(_) => { - value.make_unknown("url property on array"); - true - } - JsValue::Function(..) => { - value.make_unknown("function property on array"); + // Accessing a property on something can be handled in some cases + JsValue::Member(_, box ref mut obj, ref mut prop) => match obj { + JsValue::Alternatives(_, alts) => { + *value = JsValue::alternatives( + take(alts) + .into_iter() + .map(|alt| JsValue::member(box alt, prop.clone())) + .collect(), + ); + true + } + JsValue::Array(_, array) => { + fn items_to_alternatives(items: &mut Vec, prop: &mut JsValue) -> JsValue { + items.push(JsValue::Unknown( + Some(Arc::new(JsValue::member( + box JsValue::array(Vec::new()), + box take(prop), + ))), + "unknown array prototype methods or values", + )); + JsValue::alternatives(take(items)) + } + match &mut **prop { + JsValue::Constant(ConstantValue::Num(ConstantNumber(num))) => { + let index: usize = *num as usize; + if index as f64 == *num && index < array.len() { + *value = array.swap_remove(index); true - } - JsValue::Alternatives(_, alts) => { - *value = JsValue::alternatives( - take(alts) - .into_iter() - .map(|alt| JsValue::member(box obj.clone(), box alt)) - .collect(), + } else { + *value = JsValue::Unknown( + Some(Arc::new(JsValue::member(box take(obj), box take(prop)))), + "invalid index", ); true } - JsValue::Concat(..) - | JsValue::Add(..) - | JsValue::Logical(..) - | JsValue::Not(..) => { - if prop.has_placeholder() { - // keep the member infact since it might be handled later - false - } else { - *value = items_to_alternatives(array, prop); - true - } - } - JsValue::FreeVar(_) - | JsValue::Variable(_) - | JsValue::Call(..) - | JsValue::MemberCall(..) - | JsValue::Member(..) - | JsValue::WellKnownObject(_) - | JsValue::Argument(_) - | JsValue::WellKnownFunction(_) - | JsValue::Module(..) => { - // keep the member infact since it might be handled later - return false; - } - }; - true + } + JsValue::Constant(c) => { + // if let Some(s) = c.as_str() { + // if ARRAY_METHODS.iter().any(|method| *method == s) { + // return false; + // } + // } + value.make_unknown("non-num constant property on array"); + true + } + JsValue::Alternatives(_, alts) => { + *value = JsValue::alternatives( + take(alts) + .into_iter() + .map(|alt| JsValue::member(box obj.clone(), box alt)) + .collect(), + ); + true + } + _ => { + *value = items_to_alternatives(array, prop); + true + } } - JsValue::Object(_, parts) => { - fn parts_to_alternatives( - parts: &mut Vec, - prop: &mut Box, - ) -> JsValue { - let mut values = Vec::new(); - for part in parts { - match part { - ObjectPart::KeyValue(_, value) => { - values.push(take(value)); - } - ObjectPart::Spread(_) => { - values.push(JsValue::Unknown( - Some(Arc::new(JsValue::member( - box JsValue::object(vec![take(part)]), - prop.clone(), - ))), - "spreaded object", - )); - } + } + JsValue::Object(_, parts) => { + fn parts_to_alternatives( + parts: &mut Vec, + prop: &mut Box, + ) -> JsValue { + let mut values = Vec::new(); + for part in parts { + match part { + ObjectPart::KeyValue(_, value) => { + values.push(take(value)); + } + ObjectPart::Spread(_) => { + values.push(JsValue::Unknown( + Some(Arc::new(JsValue::member( + box JsValue::object(vec![take(part)]), + prop.clone(), + ))), + "spreaded object", + )); } } - values.push(JsValue::Unknown( - Some(Arc::new(JsValue::member( - box JsValue::object(Vec::new()), - box take(prop), - ))), - "unknown object prototype methods or values", - )); - JsValue::alternatives(values) } - match &mut **prop { - JsValue::Unknown(_, _) => { - *value = parts_to_alternatives(parts, prop); - true - } - JsValue::Constant(_) => { - for part in parts.iter_mut().rev() { - match part { - ObjectPart::KeyValue(key, val) => { - if key == &**prop { - *value = take(val); - return true; - } - } - ObjectPart::Spread(_) => { - value.make_unknown("spreaded object"); + values.push(JsValue::Unknown( + Some(Arc::new(JsValue::member( + box JsValue::object(Vec::new()), + box take(prop), + ))), + "unknown object prototype methods or values", + )); + JsValue::alternatives(values) + } + match &mut **prop { + JsValue::Constant(_) => { + for part in parts.iter_mut().rev() { + match part { + ObjectPart::KeyValue(key, val) => { + if key == &**prop { + *value = take(val); return true; } } - } - *value = JsValue::FreeVar(FreeVarKind::Other("undefined".into())); - true - } - JsValue::Array(..) => { - value.make_unknown("array property on object"); - true - } - JsValue::Object(..) => { - value.make_unknown("object property on object"); - true - } - JsValue::Url(_) => { - value.make_unknown("url property on object"); - true - } - JsValue::Function(..) => { - value.make_unknown("function property on object"); - true - } - JsValue::Alternatives(_, alts) => { - *value = JsValue::alternatives( - take(alts) - .into_iter() - .map(|alt| JsValue::member(box obj.clone(), box alt)) - .collect(), - ); - true - } - JsValue::Concat(..) - | JsValue::Add(..) - | JsValue::Logical(..) - | JsValue::Not(..) => { - if prop.has_placeholder() { - // keep the member intact since it might be handled later - false - } else { - *value = parts_to_alternatives(parts, prop); - true + ObjectPart::Spread(_) => { + value.make_unknown("spreaded object"); + return true; + } } } - JsValue::FreeVar(_) - | JsValue::Variable(_) - | JsValue::Call(..) - | JsValue::MemberCall(..) - | JsValue::Member(..) - | JsValue::WellKnownObject(_) - | JsValue::Argument(_) - | JsValue::WellKnownFunction(_) - | JsValue::Module(..) => { - // keep the member intact since it might be handled later - debug_assert!(prop.has_placeholder()); - false - } + *value = JsValue::FreeVar(FreeVarKind::Other("undefined".into())); + true + } + JsValue::Alternatives(_, alts) => { + *value = JsValue::alternatives( + take(alts) + .into_iter() + .map(|alt| JsValue::member(box obj.clone(), box alt)) + .collect(), + ); + true + } + _ => { + *value = parts_to_alternatives(parts, prop); + true } - } - JsValue::FreeVar(_) - | JsValue::Variable(_) - | JsValue::Call(..) - | JsValue::MemberCall(..) - | JsValue::Member(..) - | JsValue::WellKnownObject(_) - | JsValue::Argument(_) - | JsValue::WellKnownFunction(_) - | JsValue::Module(..) => { - // keep the member intact since it might be handled later - debug_assert!(obj.has_placeholder()); - false } } - } + _ => false, + }, JsValue::MemberCall(_, box ref mut obj, box ref mut prop, ref mut args) => { match obj { JsValue::Array(_, items) => { @@ -388,96 +258,41 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { ); true } - JsValue::Call(_, box ref mut callee, ref mut args) => { - match callee { - JsValue::Unknown(..) => { - value.make_unknown("call of unknown function"); - true - } - JsValue::Array(..) => { - value.make_unknown("call of array"); - true - } - JsValue::Object(..) => { - value.make_unknown("call of object"); - true - } - JsValue::WellKnownObject(..) => { - value.make_unknown("call of well known object"); - true - } - JsValue::Constant(_) => { - value.make_unknown("call of constant"); - true - } - JsValue::Url(_) => { - value.make_unknown("call of url"); - true - } - JsValue::Concat(..) => { - value.make_unknown("call of string"); - true - } - JsValue::Add(..) => { - value.make_unknown("call of number or string"); - true - } - JsValue::Logical(..) => { - value.make_unknown("call of logical operation"); - true - } - JsValue::Not(..) => { - value.make_unknown("call of not operation"); - true - } - JsValue::WellKnownFunction(..) => { - value.make_unknown("unknown call of well known function"); - true - } - JsValue::Function(_, box ref mut return_value) => { - let mut return_value = take(return_value); - return_value.visit_mut_conditional( - |value| !matches!(value, JsValue::Function(..)), - &mut |value| match value { - JsValue::Argument(index) => { - if let Some(arg) = args.get(*index).cloned() { - *value = arg; - } else { - *value = - JsValue::FreeVar(FreeVarKind::Other("undefined".into())) - } - true + // Handle calls when the callee is a function + JsValue::Call(_, box ref mut callee, ref mut args) => match callee { + JsValue::Function(_, box ref mut return_value) => { + let mut return_value = take(return_value); + return_value.visit_mut_conditional( + |value| !matches!(value, JsValue::Function(..)), + &mut |value| match value { + JsValue::Argument(index) => { + if let Some(arg) = args.get(*index).cloned() { + *value = arg; + } else { + *value = JsValue::FreeVar(FreeVarKind::Other("undefined".into())) } + true + } - _ => false, - }, - ); + _ => false, + }, + ); - *value = return_value; - true - } - JsValue::Alternatives(_, alts) => { - *value = JsValue::alternatives( - take(alts) - .into_iter() - .map(|alt| JsValue::call(box alt, args.clone())) - .collect(), - ); - true - } - JsValue::FreeVar(_) - | JsValue::Variable(_) - | JsValue::Call(..) - | JsValue::MemberCall(..) - | JsValue::Member(..) - | JsValue::Argument(_) - | JsValue::Module(..) => { - // keep the call intact since it might be handled later - debug_assert!(callee.has_placeholder()); - false - } + *value = return_value; + true } - } + JsValue::Alternatives(_, alts) => { + *value = JsValue::alternatives( + take(alts) + .into_iter() + .map(|alt| JsValue::call(box alt, args.clone())) + .collect(), + ); + true + } + _ => false, + }, + // Handle spread in object literals JsValue::Object(_, parts) => { if parts .iter() @@ -496,6 +311,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { false } } + // Reduce logical expressions to their final value(s) JsValue::Logical(_, op, ref mut parts) => { let len = parts.len(); for (i, part) in take(parts).into_iter().enumerate() { @@ -506,7 +322,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { let skip_part = match op { LogicalOperator::And => part.is_truthy(), LogicalOperator::Or => part.is_falsy(), - LogicalOperator::NullishCoalescing => part.is_falsy(), + LogicalOperator::NullishCoalescing => part.is_nullish(), }; match skip_part { Some(true) => { @@ -534,6 +350,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { } } } + // Evaluate not when the inner value is truthy or falsy JsValue::Not(_, ref inner) => match inner.is_truthy() { Some(true) => { *value = JsValue::Constant(ConstantValue::False); @@ -543,14 +360,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { *value = JsValue::Constant(ConstantValue::True); true } - None => { - if inner.has_placeholder() { - false - } else { - value.make_unknown("negation of unknown value"); - true - } - } + None => false, }, _ => false, } diff --git a/crates/turbopack-ecmascript/src/analyzer/mod.rs b/crates/turbopack-ecmascript/src/analyzer/mod.rs index daed9c096936d..76f792adc053d 100644 --- a/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -204,66 +204,106 @@ impl LogicalOperator { } } +/// The three categories of [JsValue]s. +enum JsValueMetaKind { + /// Doesn't contain nested values. + Leaf, + /// Contain nested values. Nested values represent some structure and can't + /// be replaced during linking. They might contain placeholders. + Nested, + /// Contain nested values. Operations are replaced during linking. They + /// might contain placeholders. + Operation, + /// These values are replaced during linking. + Placeholder, +} + /// TODO: Use `Arc` +/// There are 4 kinds of values: Leafs, Nested, Operations, and Placeholders +/// (see [JsValueMetaKind] for details). Values are processed in two phases: +/// - Analyse phase: We convert AST into [JsValue]s. We don't have contextual +/// information so we need to insert placeholders to represent that. +/// - Link phase: We try to reduce a value to a constant value. +/// The link phase as 5 substeps that are executed on each node in the graph +/// depth-first. When a value was modified, we need to visit the new children +/// again. +/// - Replace variables with their values. This replaces [JsValue::Variable]. No +/// variables should be remaining after that. +/// - Replace placeholders with contextual information. This usually replaces +/// [JsValue::FreeVar] and [JsValue::Module]. Some [JsValue::Call] on well +/// known functions might also be replaced. No free vars or modules should be +/// remaining after that. +/// - Replace operations on well-known objects and functions. THis handles +/// [JsValue::Call] and [JsValue::Member] on well-known objects and functions. +/// - Replace all built-in functions with their values when they are +/// compile-time constant. +/// - For optimization any nested operations are replaced with +/// [JsValue::Unknown]. So only one layer of operation remains. +/// Any remaining operation or placeholder can be treated as unknown. #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum JsValue { - /// Denotes a single string literal, which does not have any unknown value. - /// - /// TODO: Use a type without span + // LEAF VALUES + // ---------------------------- + /// A constant primitive value. Constant(ConstantValue), + /// An constant URL object. + Url(Url), + /// Some kind of well known object + /// (must not be an array, otherwise Array.concat need to be changed) + WellKnownObject(WellKnownObjectKind), + /// Some kind of well known function + WellKnownFunction(WellKnownFunctionKind), + /// Not analyzable value. Might contain the original value for additional + /// info. Has a reason string for explanation. + Unknown(Option>, &'static str), + // NESTED VALUES + // ---------------------------- + /// An arrow of nested values Array(usize, Vec), - + /// An object of nested values Object(usize, Vec), - - Url(Url), - + /// A list of alternative values Alternatives(usize, Vec), + /// A function reference. The return value might contain [JsValue::Argument] + /// placeholders that need to be replaced when calling this function. + /// `(total_node_count, return_value)` + Function(usize, Box), - // TODO no predefined kinds, only JsWord - FreeVar(FreeVarKind), - - Variable(Id), - + // OPERATIONS + // ---------------------------- + /// A string concatenation of values. /// `foo.${unknownVar}.js` => 'foo' + Unknown + '.js' Concat(usize, Vec), - + /// An addition of values. /// This can be converted to [JsValue::Concat] if the type of the variable /// is string. Add(usize, Vec), - /// Logical negation `!expr` Not(usize, Box), - - /// Logical operator chain `expr && expr` + /// Logical operator chain e. g. `expr && expr` Logical(usize, LogicalOperator, Vec), - - /// `(callee, args)` + /// A function call without a this context. + /// `(total_node_count, callee, args)` Call(usize, Box, Vec), - - /// `(obj, prop, args)` + /// A function call with a this context. + /// `(total_node_count, obj, prop, args)` MemberCall(usize, Box, Box, Vec), - - /// `obj[prop]` + /// A member access `obj[prop]` + /// `(total_node_count, obj, prop)` Member(usize, Box, Box), - /// This is a reference to a imported module - Module(ModuleValue), - - /// Some kind of well known object - /// (must not be an array, otherwise Array.concat need to be changed) - WellKnownObject(WellKnownObjectKind), - - /// Some kind of well known function - WellKnownFunction(WellKnownFunctionKind), - - /// Not analyzable. - Unknown(Option>, &'static str), - - /// `(return_value)` - Function(usize, Box), - + // PLACEHOLDERS + // ---------------------------- + /// A reference to a variable. + Variable(Id), + /// A reference to an function argument. Argument(usize), + // TODO no predefined kinds, only JsWord + /// A reference to a free variable. + FreeVar(FreeVarKind), + /// This is a reference to a imported module. + Module(ModuleValue), } impl From<&'_ str> for JsValue { @@ -470,14 +510,36 @@ fn total_nodes(vec: &[JsValue]) -> usize { vec.iter().map(|v| v.total_nodes()).sum::() } +// Private meta methods impl JsValue { - pub fn as_str(&self) -> Option<&str> { + fn meta_type(&self) -> JsValueMetaKind { match self { - JsValue::Constant(c) => c.as_str(), - _ => None, + JsValue::Constant(..) + | JsValue::Url(..) + | JsValue::WellKnownObject(..) + | JsValue::WellKnownFunction(..) + | JsValue::Unknown(..) => JsValueMetaKind::Leaf, + JsValue::Array(..) + | JsValue::Object(..) + | JsValue::Alternatives(..) + | JsValue::Function(..) => JsValueMetaKind::Nested, + JsValue::Concat(..) + | JsValue::Add(..) + | JsValue::Not(..) + | JsValue::Logical(..) + | JsValue::Call(..) + | JsValue::MemberCall(..) + | JsValue::Member(..) => JsValueMetaKind::Operation, + JsValue::Variable(..) + | JsValue::Argument(..) + | JsValue::FreeVar(..) + | JsValue::Module(..) => JsValueMetaKind::Placeholder, } } +} +// Constructors +impl JsValue { pub fn alternatives(list: Vec) -> Self { Self::Alternatives(1 + total_nodes(&list), list) } @@ -546,7 +608,10 @@ impl JsValue { pub fn member(o: Box, p: Box) -> Self { Self::Member(1 + o.total_nodes() + p.total_nodes(), o, p) } +} +// Methods regarding node count +impl JsValue { pub fn total_nodes(&self) -> usize { match self { JsValue::Constant(_) @@ -679,7 +744,10 @@ impl JsValue { } } } +} +// Methods for explaining a value +impl JsValue { pub fn explain_args(args: &[JsValue], depth: usize, unknown_depth: usize) -> (String, String) { let mut hints = Vec::new(); let args = args @@ -1132,53 +1200,69 @@ impl JsValue { } } } +} +// Unknown management +impl JsValue { + /// Convert the value into unknown with a specific reason. pub fn make_unknown(&mut self, reason: &'static str) { *self = JsValue::Unknown(Some(Arc::new(take(self))), reason); } + /// Convert the value into unknown with a specific reason, but don't retain + /// the original value. pub fn make_unknown_without_content(&mut self, reason: &'static str) { *self = JsValue::Unknown(None, reason); } - pub fn has_placeholder(&self) -> bool { - match self { - // These are leafs and not placeholders - JsValue::Constant(_) - | JsValue::Url(_) - | JsValue::WellKnownObject(_) - | JsValue::WellKnownFunction(_) - | JsValue::Unknown(_, _) - | JsValue::Function(..) => false, - - // These must be optimized reduced if they don't contain placeholders - // So when we see them, they contain placeholders - JsValue::Call(..) | JsValue::MemberCall(..) | JsValue::Member(..) => true, + /// Make all nested operations unknown when the value is an operation. + pub fn make_nested_operations_unknown(&mut self) -> bool { + fn inner(this: &mut JsValue) -> bool { + if matches!(this.meta_type(), JsValueMetaKind::Operation) { + this.make_unknown("Nested operation"); + true + } else { + this.for_each_children_mut(&mut inner) + } + } + if matches!(self.meta_type(), JsValueMetaKind::Operation) { + self.for_each_children_mut(&mut inner) + } else { + false + } + } +} - // These are nested structures, where we look into children - // to see placeholders - JsValue::Array(..) - | JsValue::Object(..) - | JsValue::Alternatives(..) - | JsValue::Concat(..) - | JsValue::Add(..) - | JsValue::Not(..) - | JsValue::Logical(..) => { +// Placeholder management +impl JsValue { + /// Returns true if the value contains or is a placeholder. + pub fn has_placeholder(&self) -> bool { + match self.meta_type() { + JsValueMetaKind::Placeholder => true, + JsValueMetaKind::Leaf => false, + JsValueMetaKind::Nested | JsValueMetaKind::Operation => { let mut result = false; self.for_each_children(&mut |child| { result = result || child.has_placeholder(); }); result } + } + } +} - // These are placeholders - JsValue::Argument(_) - | JsValue::Variable(_) - | JsValue::Module(..) - | JsValue::FreeVar(_) => true, +// Compile-time information gathering +impl JsValue { + /// Returns the constant string if the value represents a constant string. + pub fn as_str(&self) -> Option<&str> { + match self { + JsValue::Constant(c) => c.as_str(), + _ => None, } } + /// Checks if the value is truthy. Returns None if we don't know. Returns + /// Some if we know if or if not the value is truthy. pub fn is_truthy(&self) -> Option { match self { JsValue::Constant(c) => Some(c.is_truthy()), @@ -1189,27 +1273,27 @@ impl JsValue { | JsValue::WellKnownObject(..) | JsValue::WellKnownFunction(..) | JsValue::Function(..) => Some(true), - JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_truthy())), + JsValue::Alternatives(_, list) => merge_if_known(list, JsValue::is_truthy), JsValue::Not(_, value) => value.is_truthy().map(|x| !x), JsValue::Logical(_, op, list) => match op { - LogicalOperator::And => all_if_known(list.iter().map(|x| x.is_truthy())), - LogicalOperator::Or => any_if_known(list.iter().map(|x| x.is_truthy())), + LogicalOperator::And => all_if_known(list, JsValue::is_truthy), + LogicalOperator::Or => any_if_known(list, JsValue::is_truthy), LogicalOperator::NullishCoalescing => { - if all_if_known(list[..list.len() - 1].iter().map(|x| x.is_nullish()))? { - list.last().unwrap().is_truthy() - } else { - Some(false) - } + shortcircut_if_known(list, JsValue::is_not_nullish, JsValue::is_truthy) } }, _ => None, } } + /// Checks if the value is falsy. Returns None if we don't know. Returns + /// Some if we know if or if not the value is falsy. pub fn is_falsy(&self) -> Option { self.is_truthy().map(|x| !x) } + /// Checks if the value is nullish (null or undefined). Returns None if we + /// don't know. Returns Some if we know if or if not the value is nullish. pub fn is_nullish(&self) -> Option { match self { JsValue::Constant(c) => Some(c.is_nullish()), @@ -1221,7 +1305,7 @@ impl JsValue { | JsValue::WellKnownFunction(..) | JsValue::Not(..) | JsValue::Function(..) => Some(false), - JsValue::Alternatives(_, list) => merge_if_known(list.iter().map(|x| x.is_nullish())), + JsValue::Alternatives(_, list) => merge_if_known(list, JsValue::is_nullish), JsValue::Logical(_, op, list) => match op { LogicalOperator::And => { shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_nullish) @@ -1229,21 +1313,27 @@ impl JsValue { LogicalOperator::Or => { shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_nullish) } - LogicalOperator::NullishCoalescing => { - all_if_known(list.iter().map(|x| x.is_nullish())) - } + LogicalOperator::NullishCoalescing => all_if_known(list, JsValue::is_nullish), }, _ => None, } } + /// Checks if we known that the value is not nullish. Returns None if we + /// don't know. Returns Some if we know if or if not the value is not + /// nullish. + pub fn is_not_nullish(&self) -> Option { + self.is_nullish().map(|x| !x) + } + + /// Checks if we known that the value is an empty string. Returns None if we + /// don't know. Returns Some if we know if or if not the value is an empty + /// string. pub fn is_empty_string(&self) -> Option { match self { JsValue::Constant(c) => Some(c.is_empty_string()), - JsValue::Concat(_, list) => all_if_known(list.iter().map(|x| x.is_empty_string())), - JsValue::Alternatives(_, list) => { - merge_if_known(list.iter().map(|x| x.is_empty_string())) - } + JsValue::Concat(_, list) => all_if_known(list, JsValue::is_empty_string), + JsValue::Alternatives(_, list) => merge_if_known(list, JsValue::is_empty_string), JsValue::Logical(_, op, list) => match op { LogicalOperator::And => { shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_empty_string) @@ -1252,7 +1342,7 @@ impl JsValue { shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_empty_string) } LogicalOperator::NullishCoalescing => { - shortcircut_if_known(list, JsValue::is_nullish, JsValue::is_empty_string) + shortcircut_if_known(list, JsValue::is_not_nullish, JsValue::is_empty_string) } }, JsValue::Url(..) @@ -1265,6 +1355,8 @@ impl JsValue { } } + /// Returns true, if the value is unknown and storing it as condition + /// doesn't make sense. This is for optimization purposes. pub fn is_unknown(&self) -> bool { match self { JsValue::Unknown(..) => true, @@ -1272,11 +1364,138 @@ impl JsValue { _ => false, } } + + /// Checks if we known that the value is a string. Returns None if we + /// don't know. Returns Some if we know if or if not the value is a string. + pub fn is_string(&self) -> Option { + match self { + JsValue::Constant(ConstantValue::StrWord(..)) + | JsValue::Constant(ConstantValue::StrAtom(..)) + | JsValue::Concat(..) => Some(true), + + JsValue::Constant(..) + | JsValue::Array(..) + | JsValue::Object(..) + | JsValue::Url(..) + | JsValue::Module(..) + | JsValue::Function(..) + | JsValue::WellKnownObject(_) + | JsValue::WellKnownFunction(_) => Some(false), + + JsValue::Not(..) => Some(false), + JsValue::Add(_, list) => any_if_known(list, JsValue::is_string), + JsValue::Logical(_, op, list) => match op { + LogicalOperator::And => { + shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_string) + } + LogicalOperator::Or => { + shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_string) + } + LogicalOperator::NullishCoalescing => { + shortcircut_if_known(list, JsValue::is_not_nullish, JsValue::is_string) + } + }, + + JsValue::Alternatives(_, v) => merge_if_known(v, JsValue::is_string), + + JsValue::Call( + _, + box JsValue::WellKnownFunction( + WellKnownFunctionKind::RequireResolve + | WellKnownFunctionKind::PathJoin + | WellKnownFunctionKind::PathResolve(..) + | WellKnownFunctionKind::OsArch + | WellKnownFunctionKind::OsPlatform + | WellKnownFunctionKind::PathDirname + | WellKnownFunctionKind::PathToFileUrl + | WellKnownFunctionKind::ProcessCwd, + ), + _, + ) => Some(true), + + JsValue::FreeVar(..) + | JsValue::Variable(_) + | JsValue::Unknown(..) + | JsValue::Argument(..) + | JsValue::Call(..) + | JsValue::MemberCall(..) + | JsValue::Member(..) => None, + } + } + + /// Checks if we known that the value starts with a given string. Returns + /// None if we don't know. Returns Some if we know if or if not the + /// value starts with the given string. + pub fn starts_with(&self, str: &str) -> Option { + if let Some(s) = self.as_str() { + return Some(s.starts_with(str)); + } + match self { + JsValue::Alternatives(_, alts) => merge_if_known(alts, |a| a.starts_with(str)), + JsValue::Concat(_, list) => { + if let Some(item) = list.iter().next() { + if item.starts_with(str) == Some(true) { + Some(true) + } else { + if let Some(s) = item.as_str() { + if str.starts_with(s) { + None + } else { + Some(false) + } + } else { + None + } + } + } else { + Some(false) + } + } + + _ => None, + } + } + + /// Checks if we known that the value ends with a given string. Returns + /// None if we don't know. Returns Some if we know if or if not the + /// value ends with the given string. + pub fn ends_with(&self, str: &str) -> Option { + if let Some(s) = self.as_str() { + return Some(s.ends_with(str)); + } + match self { + JsValue::Alternatives(_, alts) => merge_if_known(alts, |alt| alt.ends_with(str)), + JsValue::Concat(_, list) => { + if let Some(item) = list.last() { + if item.ends_with(str) == Some(true) { + Some(true) + } else { + if let Some(s) = item.as_str() { + if str.ends_with(s) { + None + } else { + Some(false) + } + } else { + None + } + } + } else { + Some(false) + } + } + + _ => None, + } + } } -fn merge_if_known(list: impl IntoIterator>) -> Option { +fn merge_if_known( + list: impl IntoIterator, + func: impl Fn(T) -> Option, +) -> Option { let mut current = None; - for item in list { + for item in list.into_iter().map(func) { if item.is_some() { if current.is_none() { current = item; @@ -1290,9 +1509,12 @@ fn merge_if_known(list: impl IntoIterator>) -> Option current } -fn all_if_known(list: impl IntoIterator>) -> Option { +fn all_if_known( + list: impl IntoIterator, + func: impl Fn(T) -> Option, +) -> Option { let mut unknown = false; - for item in list { + for item in list.into_iter().map(func) { match item { Some(false) => return Some(false), None => unknown = true, @@ -1306,8 +1528,11 @@ fn all_if_known(list: impl IntoIterator>) -> Option { } } -fn any_if_known(list: impl IntoIterator>) -> Option { - all_if_known(list.into_iter().map(|x| x.map(|x| !x))).map(|x| !x) +fn any_if_known( + list: impl IntoIterator, + func: impl Fn(T) -> Option, +) -> Option { + all_if_known(list, |x| func(x).map(|x| !x)).map(|x| !x) } fn shortcircut_if_known( @@ -1330,6 +1555,7 @@ fn shortcircut_if_known( None } +/// Macro to visit all children of a node with an async function macro_rules! for_each_children_async { ($value:expr, $visit_fn:expr, $($args:expr),+) => { Ok(match &mut $value { @@ -1443,7 +1669,10 @@ macro_rules! for_each_children_async { } } +// Visiting impl JsValue { + /// Visit the node and all its children with a function in a loop until the + /// visitor returns false for the node and all children pub async fn visit_async_until_settled<'a, F, R, E>( self, visitor: &mut F, @@ -1468,6 +1697,8 @@ impl JsValue { Ok((v, modified)) } + /// Visit all children of the node with an async function in a loop until + /// the visitor returns false pub async fn visit_each_children_async_until_settled<'a, F, R, E>( mut self, visitor: &mut F, @@ -1491,6 +1722,7 @@ impl JsValue { Ok(v) } + /// Visit the node and all its children with an async function. pub async fn visit_async<'a, F, R, E>(self, visitor: &mut F) -> Result<(Self, bool), E> where R: 'a + Future>, @@ -1505,6 +1737,7 @@ impl JsValue { } } + /// Visit all children of the node with an async function. pub async fn visit_each_children_async<'a, F, R, E>( mut self, visitor: &mut F, @@ -1524,6 +1757,7 @@ impl JsValue { for_each_children_async!(self, visit_async_box, visitor) } + /// Call an async function for each child of the node. pub async fn for_each_children_async<'a, F, R, E>( mut self, visitor: &mut F, @@ -1535,6 +1769,8 @@ impl JsValue { for_each_children_async!(self, |v, ()| visitor(v), ()) } + /// Visit the node and all its children with a function in a loop until the + /// visitor returns false pub fn visit_mut_until_settled(&mut self, visitor: &mut impl FnMut(&mut JsValue) -> bool) { while visitor(self) { self.for_each_children_mut(&mut |value| { @@ -1544,6 +1780,7 @@ impl JsValue { } } + /// Visit the node and all its children with a function. pub fn visit_mut(&mut self, visitor: &mut impl FnMut(&mut JsValue) -> bool) -> bool { let modified = self.for_each_children_mut(&mut |value| value.visit_mut(visitor)); if visitor(self) { @@ -1553,6 +1790,8 @@ impl JsValue { } } + /// Visit all children of the node with a function. Only visits nodes where + /// the condition is true. pub fn visit_mut_conditional( &mut self, condition: impl Fn(&JsValue) -> bool, @@ -1570,6 +1809,8 @@ impl JsValue { } } + /// Calls a function for each child of the node. Allows mutating the node. + /// Updates the total nodes count after mutation. pub fn for_each_children_mut( &mut self, visitor: &mut impl FnMut(&mut JsValue) -> bool, @@ -1586,12 +1827,16 @@ impl JsValue { modified = true } } - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::Not(_, value) => { let modified = visitor(value); - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::Object(_, list) => { @@ -1613,7 +1858,9 @@ impl JsValue { } } } - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::Call(_, callee, list) => { @@ -1623,7 +1870,9 @@ impl JsValue { modified = true } } - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::MemberCall(_, obj, prop, list) => { @@ -1635,20 +1884,27 @@ impl JsValue { modified = true } } - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::Function(_, return_value) => { let modified = visitor(return_value); - self.update_total_nodes(); + if modified { + self.update_total_nodes(); + } modified } JsValue::Member(_, obj, prop) => { let m1 = visitor(obj); let m2 = visitor(prop); - self.update_total_nodes(); - m1 || m2 + let modified = m1 || m2; + if modified { + self.update_total_nodes(); + } + modified } JsValue::Constant(_) | JsValue::FreeVar(_) @@ -1662,11 +1918,13 @@ impl JsValue { } } + /// Visit the node and all its children with a function. pub fn visit(&self, visitor: &mut impl FnMut(&JsValue)) { self.for_each_children(&mut |value| value.visit(visitor)); visitor(self); } + /// Calls a function for all children of the node. pub fn for_each_children(&self, visitor: &mut impl FnMut(&JsValue)) { match self { JsValue::Alternatives(_, list) @@ -1725,150 +1983,13 @@ impl JsValue { | JsValue::Argument(..) => {} } } +} - pub fn is_string(&self) -> Option { - match self { - JsValue::Constant(ConstantValue::StrWord(..)) - | JsValue::Constant(ConstantValue::StrAtom(..)) - | JsValue::Concat(..) => Some(true), - - JsValue::Constant(..) - | JsValue::Array(..) - | JsValue::Object(..) - | JsValue::Url(..) - | JsValue::Module(..) - | JsValue::Function(..) => Some(false), - - JsValue::FreeVar(FreeVarKind::Dirname | FreeVarKind::Filename) => Some(true), - JsValue::FreeVar( - FreeVarKind::Object - | FreeVarKind::Require - | FreeVarKind::Define - | FreeVarKind::Import - | FreeVarKind::NodeProcess, - ) => Some(false), - JsValue::FreeVar(FreeVarKind::Other(_)) => None, - - JsValue::Not(..) => Some(false), - JsValue::Add(_, list) => any_if_known(list.iter().map(|v| v.is_string())), - JsValue::Logical(_, op, list) => match op { - LogicalOperator::And => { - shortcircut_if_known(list, JsValue::is_truthy, JsValue::is_string) - } - LogicalOperator::Or => { - shortcircut_if_known(list, JsValue::is_falsy, JsValue::is_string) - } - LogicalOperator::NullishCoalescing => { - shortcircut_if_known(list, JsValue::is_nullish, JsValue::is_string) - } - }, - - JsValue::Alternatives(_, v) => merge_if_known(v.iter().map(|v| v.is_string())), - - JsValue::Variable(_) | JsValue::Unknown(..) | JsValue::Argument(..) => None, - - JsValue::Call( - _, - box JsValue::WellKnownFunction(WellKnownFunctionKind::RequireResolve), - _, - ) => Some(true), - JsValue::Call(..) | JsValue::MemberCall(..) | JsValue::Member(..) => None, - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) => Some(false), - } - } - - pub fn starts_with(&self, str: &str) -> bool { - if let Some(s) = self.as_str() { - return s.starts_with(str); - } - match self { - JsValue::Alternatives(_, alts) => alts.iter().all(|alt| alt.starts_with(str)), - JsValue::Concat(_, list) => { - if let Some(item) = list.iter().next() { - item.starts_with(str) - } else { - false - } - } - - // TODO: JsValue::Url(_) => todo!(), - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) | JsValue::Function(..) => { - false - } - - _ => false, - } - } - - pub fn starts_not_with(&self, str: &str) -> bool { - if let Some(s) = self.as_str() { - return !s.starts_with(str); - } - match self { - JsValue::Alternatives(_, alts) => alts.iter().all(|alt| alt.starts_not_with(str)), - JsValue::Concat(_, list) => { - if let Some(item) = list.iter().next() { - item.starts_not_with(str) - } else { - false - } - } - - // TODO: JsValue::Url(_) => todo!(), - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) | JsValue::Function(..) => { - false - } - - _ => false, - } - } - - pub fn ends_with(&self, str: &str) -> bool { - if let Some(s) = self.as_str() { - return s.ends_with(str); - } - match self { - JsValue::Alternatives(_, alts) => alts.iter().all(|alt| alt.ends_with(str)), - JsValue::Concat(_, list) => { - if let Some(item) = list.last() { - item.ends_with(str) - } else { - false - } - } - - // TODO: JsValue::Url(_) => todo!(), - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) | JsValue::Function(..) => { - false - } - - _ => false, - } - } - - pub fn ends_not_with(&self, str: &str) -> bool { - if let Some(s) = self.as_str() { - return !s.ends_with(str); - } - match self { - JsValue::Alternatives(_, alts) => alts.iter().all(|alt| alt.ends_not_with(str)), - JsValue::Concat(_, list) => { - if let Some(item) = list.last() { - item.ends_not_with(str) - } else { - false - } - } - - // TODO: JsValue::Url(_) => todo!(), - JsValue::WellKnownObject(_) | JsValue::WellKnownFunction(_) | JsValue::Function(..) => { - false - } - - _ => false, - } - } - +// Alternatives management +impl JsValue { + /// Add an alternative to the current value. Might be a no-op if the value + /// already contains such alternative. Potentially expensive operation + /// as it has to compare the value with all existing alternatives. fn add_alt(&mut self, v: Self) { if self == &v { return; @@ -1884,7 +2005,12 @@ impl JsValue { *self = JsValue::Alternatives(1 + l.total_nodes() + v.total_nodes(), vec![l, v]); } } +} +// Normalization +impl JsValue { + /// Normalizes only the current node. Nested alternatives, concatenations, + /// or operations are collapsed. pub fn normalize_shallow(&mut self) { match self { JsValue::Alternatives(_, v) => { @@ -1997,6 +2123,7 @@ impl JsValue { } } + /// Normalizes the current node and all nested nodes. pub fn normalize(&mut self) { self.for_each_children_mut(&mut |child| { child.normalize(); @@ -2004,7 +2131,13 @@ impl JsValue { }); self.normalize_shallow(); } +} +// Similarity +// Like equality, but with depth limit +impl JsValue { + /// Check if the values are equal up to the given depth. Might return false + /// even if the values are equal when hitting the depth limit. fn similar(&self, other: &JsValue, depth: usize) -> bool { if depth == 0 { return false; @@ -2082,6 +2215,7 @@ impl JsValue { } } + /// Hashes the value up to the given depth. fn similar_hash(&self, state: &mut H, depth: usize) { if depth == 0 { return; @@ -2152,6 +2286,8 @@ impl JsValue { } } +/// A wrapper around `JsValue` that implements `PartialEq` and `Hash` by +/// comparing the values with a depth of 3. struct SimilarJsValue(JsValue); impl PartialEq for SimilarJsValue { @@ -2195,6 +2331,7 @@ pub enum FreeVarKind { Other(JsWord), } +/// A list of well-known objects that have special meaning in the analysis. #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum WellKnownObjectKind { GlobalObject, @@ -2216,6 +2353,7 @@ pub enum WellKnownObjectKind { RequireCache, } +/// A list of well-known functions that have special meaning in the analysis. #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub enum WellKnownFunctionKind { ObjectAssign, @@ -2300,7 +2438,8 @@ pub mod test_utils { _ => { let (mut v, m1) = replace_well_known(v, environment).await?; let m2 = replace_builtin(&mut v); - return Ok((v, m1 || m2)); + let m = m1 || m2 || v.make_nested_operations_unknown(); + return Ok((v, m)); } }; new_value.normalize_shallow(); diff --git a/crates/turbopack-ecmascript/src/analyzer/well_known.rs b/crates/turbopack-ecmascript/src/analyzer/well_known.rs index 6fae3bdb64e7b..ae329d9b57ee7 100644 --- a/crates/turbopack-ecmascript/src/analyzer/well_known.rs +++ b/crates/turbopack-ecmascript/src/analyzer/well_known.rs @@ -26,6 +26,7 @@ pub async fn replace_well_known( ), JsValue::Call(usize, callee, args) => { // var fs = require('fs'), fs = __importStar(fs); + // TODO this is not correct and has many false positives! if args.len() == 1 { if let JsValue::WellKnownObject(_) = &args[0] { return Ok((args[0].clone(), true)); @@ -241,7 +242,7 @@ pub fn path_resolve(cwd: JsValue, mut args: Vec) -> JsValue { let first = iter.next().unwrap(); let is_already_absolute = - first.as_str().map_or(false, |s| s.is_empty()) || first.starts_with("/"); + first.is_empty_string() == Some(true) || first.starts_with("/") == Some(true); let mut last_was_str = first.as_str().is_some(); diff --git a/crates/turbopack-ecmascript/src/references/mod.rs b/crates/turbopack-ecmascript/src/references/mod.rs index 761fd3986edcd..3a389b6e577a8 100644 --- a/crates/turbopack-ecmascript/src/references/mod.rs +++ b/crates/turbopack-ecmascript/src/references/mod.rs @@ -1539,25 +1539,19 @@ async fn value_visitor_inner( ) } } - JsValue::FreeVar(FreeVarKind::Dirname) => as_abs_path(source.path().parent()).await?, - JsValue::FreeVar(FreeVarKind::Filename) => as_abs_path(source.path()).await?, - - JsValue::FreeVar(FreeVarKind::Require) => { - JsValue::WellKnownFunction(WellKnownFunctionKind::Require) - } - JsValue::FreeVar(FreeVarKind::Define) => { - JsValue::WellKnownFunction(WellKnownFunctionKind::Define) - } - JsValue::FreeVar(FreeVarKind::Import) => { - JsValue::WellKnownFunction(WellKnownFunctionKind::Import) - } - JsValue::FreeVar(FreeVarKind::NodeProcess) => { - JsValue::WellKnownObject(WellKnownObjectKind::NodeProcess) - } - JsValue::FreeVar(FreeVarKind::Object) => { - JsValue::WellKnownObject(WellKnownObjectKind::GlobalObject) - } - JsValue::FreeVar(_) => JsValue::Unknown(Some(Arc::new(v)), "unknown global"), + JsValue::FreeVar(ref kind) => match kind { + FreeVarKind::Dirname => as_abs_path(source.path().parent()).await?, + FreeVarKind::Filename => as_abs_path(source.path()).await?, + + FreeVarKind::Require => JsValue::WellKnownFunction(WellKnownFunctionKind::Require), + FreeVarKind::Define => JsValue::WellKnownFunction(WellKnownFunctionKind::Define), + FreeVarKind::Import => JsValue::WellKnownFunction(WellKnownFunctionKind::Import), + FreeVarKind::NodeProcess => { + JsValue::WellKnownObject(WellKnownObjectKind::NodeProcess) + } + FreeVarKind::Object => JsValue::WellKnownObject(WellKnownObjectKind::GlobalObject), + _ => JsValue::Unknown(Some(Arc::new(v)), "unknown global"), + }, JsValue::Module(ModuleValue { module: ref name, .. }) => match &**name { @@ -1618,6 +1612,7 @@ async fn value_visitor_inner( _ => { let (mut v, mut modified) = replace_well_known(v, environment).await?; modified = replace_builtin(&mut v) || modified; + modified = modified || v.make_nested_operations_unknown(); return Ok((v, modified)); } }, diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/array/resolved-explained.snapshot index 3f5cd219aa9f1..f006836b3d8e3 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/array/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array/resolved-explained.snapshot @@ -3,21 +3,17 @@ a = 1 b = "foo" c = (1 | "foo" | ???*0*) -- *0* [][???*1*] +- *0* [][???*1*["index"]] ⚠️ unknown array prototype methods or values -- *1* ???*2*["index"] - ⚠️ property on unknown -- *2* FreeVar(global) +- *1* FreeVar(global) ⚠️ unknown global d1 = [1, "foo"] d2 = (1 | "foo" | ???*0*) -- *0* [][???*1*] +- *0* [][???*1*["index"]] ⚠️ unknown array prototype methods or values -- *1* ???*2*["index"] - ⚠️ property on unknown -- *2* FreeVar(global) +- *1* FreeVar(global) ⚠️ unknown global d3 = "foo" diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/resolved-explained.snapshot index 009cc837d04ab..2938311099a86 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/esbuild/resolved-explained.snapshot @@ -3,42 +3,42 @@ | [ ( | ???*0* - | `"esbuild"/resolved/lib${("/" | "")}pnpapi-${(???*1* | ???*2* | "esbuild-linux-64")}-${???*3*}` - | ???*7* + | `"esbuild"/resolved/lib${("/" | "")}${???*1*}` | ???*8* - | ???*13* + | ???*9* + | ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) ), [] ] ) - *0* FreeVar(ESBUILD_BINARY_PATH) ⚠️ unknown global -- *1* pkg +- *1* `pnpapi-${(???*2* | ???*3* | "esbuild-linux-64")}-${???*4*}` + ⚠️ Nested operation +- *2* pkg ⚠️ pattern without value -- *2* FreeVar(undefined) +- *3* FreeVar(undefined) ⚠️ unknown global -- *3* ???*4*((???*6* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *4* path*5*["basename"] +- *4* ???*5*((???*7* | "esbuild.exe" | "bin/esbuild")) + ⚠️ Nested operation +- *5* path*6*["basename"] ⚠️ unsupported property on Node.js path module -- *5* path: The Node.js path module: https://nodejs.org/api/path.html -- *6* subpath +- *6* path: The Node.js path module: https://nodejs.org/api/path.html +- *7* subpath ⚠️ pattern without value -- *7* binPath +- *8* binPath ⚠️ pattern without value -- *8* require.resolve*9*( - `${(???*10* | ???*11* | "esbuild-linux-64")}/${(???*12* | "esbuild.exe" | "bin/esbuild")}` +- *9* require.resolve*10*( + `${(???*11* | ???*12* | "esbuild-linux-64")}/${(???*13* | "esbuild.exe" | "bin/esbuild")}` ) ⚠️ resolve.resolve non constant -- *9* require.resolve: The require.resolve method from CommonJS -- *10* pkg +- *10* require.resolve: The require.resolve method from CommonJS +- *11* pkg ⚠️ pattern without value -- *11* FreeVar(undefined) +- *12* FreeVar(undefined) ⚠️ unknown global -- *12* subpath +- *13* subpath ⚠️ pattern without value -- *13* ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function - *14* FreeVar(downloadedBinPath) ⚠️ unknown global - *15* pkg @@ -50,7 +50,11 @@ args = (["bin/esbuild"] | []) -binPath = (???*0* | ???*1* | ???*6*) +binPath = ( + | ???*0* + | ???*1* + | ???*6*((???*7* | ???*8* | "esbuild-linux-64"), (???*9* | "esbuild.exe" | "bin/esbuild")) +) - *0* binPath ⚠️ pattern without value - *1* require.resolve*2*( @@ -64,66 +68,66 @@ binPath = (???*0* | ???*1* | ???*6*) ⚠️ unknown global - *5* subpath ⚠️ pattern without value -- *6* ???*7*((???*8* | ???*9* | "esbuild-linux-64"), (???*10* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *7* FreeVar(downloadedBinPath) +- *6* FreeVar(downloadedBinPath) ⚠️ unknown global -- *8* pkg +- *7* pkg ⚠️ pattern without value -- *9* FreeVar(undefined) +- *8* FreeVar(undefined) ⚠️ unknown global -- *10* subpath +- *9* subpath ⚠️ pattern without value -binTargetPath = `"esbuild"/resolved/lib${("/" | "")}pnpapi-${(???*0* | ???*1* | "esbuild-linux-64")}-${???*2*}` -- *0* pkg +binTargetPath = `"esbuild"/resolved/lib${("/" | "")}${???*0*}` +- *0* `pnpapi-${(???*1* | ???*2* | "esbuild-linux-64")}-${???*3*}` + ⚠️ Nested operation +- *1* pkg ⚠️ pattern without value -- *1* FreeVar(undefined) +- *2* FreeVar(undefined) ⚠️ unknown global -- *2* ???*3*((???*5* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *3* path*4*["basename"] +- *3* ???*4*((???*6* | "esbuild.exe" | "bin/esbuild")) + ⚠️ Nested operation +- *4* path*5*["basename"] ⚠️ unsupported property on Node.js path module -- *4* path: The Node.js path module: https://nodejs.org/api/path.html -- *5* subpath +- *5* path: The Node.js path module: https://nodejs.org/api/path.html +- *6* subpath ⚠️ pattern without value command = ( | "node" | ???*0* - | `"esbuild"/resolved/lib${("/" | "")}pnpapi-${(???*1* | ???*2* | "esbuild-linux-64")}-${???*3*}` - | ???*7* + | `"esbuild"/resolved/lib${("/" | "")}${???*1*}` | ???*8* - | ???*13* + | ???*9* + | ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) ) - *0* FreeVar(ESBUILD_BINARY_PATH) ⚠️ unknown global -- *1* pkg +- *1* `pnpapi-${(???*2* | ???*3* | "esbuild-linux-64")}-${???*4*}` + ⚠️ Nested operation +- *2* pkg ⚠️ pattern without value -- *2* FreeVar(undefined) +- *3* FreeVar(undefined) ⚠️ unknown global -- *3* ???*4*((???*6* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *4* path*5*["basename"] +- *4* ???*5*((???*7* | "esbuild.exe" | "bin/esbuild")) + ⚠️ Nested operation +- *5* path*6*["basename"] ⚠️ unsupported property on Node.js path module -- *5* path: The Node.js path module: https://nodejs.org/api/path.html -- *6* subpath +- *6* path: The Node.js path module: https://nodejs.org/api/path.html +- *7* subpath ⚠️ pattern without value -- *7* binPath +- *8* binPath ⚠️ pattern without value -- *8* require.resolve*9*( - `${(???*10* | ???*11* | "esbuild-linux-64")}/${(???*12* | "esbuild.exe" | "bin/esbuild")}` +- *9* require.resolve*10*( + `${(???*11* | ???*12* | "esbuild-linux-64")}/${(???*13* | "esbuild.exe" | "bin/esbuild")}` ) ⚠️ resolve.resolve non constant -- *9* require.resolve: The require.resolve method from CommonJS -- *10* pkg +- *10* require.resolve: The require.resolve method from CommonJS +- *11* pkg ⚠️ pattern without value -- *11* FreeVar(undefined) +- *12* FreeVar(undefined) ⚠️ unknown global -- *12* subpath +- *13* subpath ⚠️ pattern without value -- *13* ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function - *14* FreeVar(downloadedBinPath) ⚠️ unknown global - *15* pkg @@ -146,42 +150,42 @@ esbuildCommandAndArgs = (...) => ( | [ ( | ???*0* - | `"esbuild"/resolved/lib${("/" | "")}pnpapi-${(???*1* | ???*2* | "esbuild-linux-64")}-${???*3*}` - | ???*7* + | `"esbuild"/resolved/lib${("/" | "")}${???*1*}` | ???*8* - | ???*13* + | ???*9* + | ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) ), [] ] ) - *0* FreeVar(ESBUILD_BINARY_PATH) ⚠️ unknown global -- *1* pkg +- *1* `pnpapi-${(???*2* | ???*3* | "esbuild-linux-64")}-${???*4*}` + ⚠️ Nested operation +- *2* pkg ⚠️ pattern without value -- *2* FreeVar(undefined) +- *3* FreeVar(undefined) ⚠️ unknown global -- *3* ???*4*((???*6* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *4* path*5*["basename"] +- *4* ???*5*((???*7* | "esbuild.exe" | "bin/esbuild")) + ⚠️ Nested operation +- *5* path*6*["basename"] ⚠️ unsupported property on Node.js path module -- *5* path: The Node.js path module: https://nodejs.org/api/path.html -- *6* subpath +- *6* path: The Node.js path module: https://nodejs.org/api/path.html +- *7* subpath ⚠️ pattern without value -- *7* binPath +- *8* binPath ⚠️ pattern without value -- *8* require.resolve*9*( - `${(???*10* | ???*11* | "esbuild-linux-64")}/${(???*12* | "esbuild.exe" | "bin/esbuild")}` +- *9* require.resolve*10*( + `${(???*11* | ???*12* | "esbuild-linux-64")}/${(???*13* | "esbuild.exe" | "bin/esbuild")}` ) ⚠️ resolve.resolve non constant -- *9* require.resolve: The require.resolve method from CommonJS -- *10* pkg +- *10* require.resolve: The require.resolve method from CommonJS +- *11* pkg ⚠️ pattern without value -- *11* FreeVar(undefined) +- *12* FreeVar(undefined) ⚠️ unknown global -- *12* subpath +- *13* subpath ⚠️ pattern without value -- *13* ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function - *14* FreeVar(downloadedBinPath) ⚠️ unknown global - *15* pkg @@ -195,39 +199,39 @@ esbuildLibDir = ""esbuild"/resolved/lib" generateBinPath = (...) => ( | ???*0* - | `"esbuild"/resolved/lib${("/" | "")}pnpapi-${(???*1* | ???*2* | "esbuild-linux-64")}-${???*3*}` - | ???*7* + | `"esbuild"/resolved/lib${("/" | "")}${???*1*}` | ???*8* - | ???*13* + | ???*9* + | ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) ) - *0* FreeVar(ESBUILD_BINARY_PATH) ⚠️ unknown global -- *1* pkg +- *1* `pnpapi-${(???*2* | ???*3* | "esbuild-linux-64")}-${???*4*}` + ⚠️ Nested operation +- *2* pkg ⚠️ pattern without value -- *2* FreeVar(undefined) +- *3* FreeVar(undefined) ⚠️ unknown global -- *3* ???*4*((???*6* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function -- *4* path*5*["basename"] +- *4* ???*5*((???*7* | "esbuild.exe" | "bin/esbuild")) + ⚠️ Nested operation +- *5* path*6*["basename"] ⚠️ unsupported property on Node.js path module -- *5* path: The Node.js path module: https://nodejs.org/api/path.html -- *6* subpath +- *6* path: The Node.js path module: https://nodejs.org/api/path.html +- *7* subpath ⚠️ pattern without value -- *7* binPath +- *8* binPath ⚠️ pattern without value -- *8* require.resolve*9*( - `${(???*10* | ???*11* | "esbuild-linux-64")}/${(???*12* | "esbuild.exe" | "bin/esbuild")}` +- *9* require.resolve*10*( + `${(???*11* | ???*12* | "esbuild-linux-64")}/${(???*13* | "esbuild.exe" | "bin/esbuild")}` ) ⚠️ resolve.resolve non constant -- *9* require.resolve: The require.resolve method from CommonJS -- *10* pkg +- *10* require.resolve: The require.resolve method from CommonJS +- *11* pkg ⚠️ pattern without value -- *11* FreeVar(undefined) +- *12* FreeVar(undefined) ⚠️ unknown global -- *12* subpath +- *13* subpath ⚠️ pattern without value -- *13* ???*14*((???*15* | ???*16* | "esbuild-linux-64"), (???*17* | "esbuild.exe" | "bin/esbuild")) - ⚠️ call of unknown function - *14* FreeVar(downloadedBinPath) ⚠️ unknown global - *15* pkg diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5-reduced/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5-reduced/resolved-explained.snapshot index 0d7a4575e6b46..63192a924d6de 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5-reduced/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/md5-reduced/resolved-explained.snapshot @@ -28,48 +28,44 @@ i = (???*0* | 0) len = arguments[1] -md5cmn = (...) => ???*0* -- *0* ???*1*(???*2*, arguments[2]) - ⚠️ call of unknown function -- *1* FreeVar(safeAdd) +md5cmn = (...) => ???*0*(???*1*, arguments[2]) +- *0* FreeVar(safeAdd) ⚠️ unknown global -- *2* ???*3*(???*4*, arguments[4]) - ⚠️ call of unknown function -- *3* FreeVar(bitRotateLeft) +- *1* ???*2*(???*3*, arguments[4]) + ⚠️ Nested operation +- *2* FreeVar(bitRotateLeft) ⚠️ unknown global -- *4* ???*5*(???*6*, ???*8*) - ⚠️ call of unknown function -- *5* FreeVar(safeAdd) +- *3* ???*4*(???*5*, ???*7*) + ⚠️ Nested operation +- *4* FreeVar(safeAdd) ⚠️ unknown global -- *6* ???*7*(arguments[1], arguments[0]) - ⚠️ call of unknown function -- *7* FreeVar(safeAdd) +- *5* ???*6*(arguments[1], arguments[0]) + ⚠️ Nested operation +- *6* FreeVar(safeAdd) ⚠️ unknown global -- *8* ???*9*(arguments[3], arguments[5]) - ⚠️ call of unknown function -- *9* FreeVar(safeAdd) +- *7* ???*8*(arguments[3], arguments[5]) + ⚠️ Nested operation +- *8* FreeVar(safeAdd) ⚠️ unknown global -md5ff = (...) => ???*0* -- *0* ???*1*(???*2*, arguments[2]) - ⚠️ call of unknown function -- *1* FreeVar(safeAdd) +md5ff = (...) => ???*0*(???*1*, arguments[1]) +- *0* FreeVar(safeAdd) ⚠️ unknown global -- *2* ???*3*(???*4*, arguments[4]) - ⚠️ call of unknown function -- *3* FreeVar(bitRotateLeft) +- *1* ???*2*(???*3*, arguments[4]) + ⚠️ Nested operation +- *2* FreeVar(bitRotateLeft) ⚠️ unknown global -- *4* ???*5*(???*6*, ???*8*) - ⚠️ call of unknown function -- *5* FreeVar(safeAdd) +- *3* ???*4*(???*5*, ???*7*) + ⚠️ Nested operation +- *4* FreeVar(safeAdd) ⚠️ unknown global -- *6* ???*7*(arguments[1], arguments[0]) - ⚠️ call of unknown function -- *7* FreeVar(safeAdd) +- *5* ???*6*(arguments[1], arguments[0]) + ⚠️ Nested operation +- *6* FreeVar(safeAdd) ⚠️ unknown global -- *8* ???*9*(arguments[3], arguments[5]) - ⚠️ call of unknown function -- *9* FreeVar(safeAdd) +- *7* ???*8*(arguments[3], arguments[5]) + ⚠️ Nested operation +- *8* FreeVar(safeAdd) ⚠️ unknown global olda = ???*0* diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5/resolved-explained.snapshot index 7be96b48d702e..dab9788ce4318 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/md5/resolved-explained.snapshot @@ -56,22 +56,22 @@ d#13 = arguments[3] d#5 = ???*0* - *0* max number of linking steps reached -hex = (???*0* | ???*1*) +hex = (???*0* | ???*1*(???*2*, 16)) - *0* hex ⚠️ pattern without value -- *1* ???*2*((???*3* + ???*6*), 16) - ⚠️ call of unknown function -- *2* FreeVar(parseInt) +- *1* FreeVar(parseInt) ⚠️ unknown global +- *2* (???*3* + ???*6*) + ⚠️ Nested operation - *3* ???*4*(???*5*) - ⚠️ call of unknown function + ⚠️ Nested operation - *4* "0123456789abcdef"["charAt"] - ⚠️ property on constant + ⚠️ Nested operation - *5* unsupported expression - *6* ???*7*(???*8*) - ⚠️ call of unknown function + ⚠️ Nested operation - *7* "0123456789abcdef"["charAt"] - ⚠️ property on constant + ⚠️ Nested operation - *8* unsupported expression hexTab = "0123456789abcdef" @@ -126,16 +126,14 @@ md5hh = (...) => ???*0* md5ii = (...) => ???*0* - *0* unsupported expression -msg = ???*0* -- *0* ???*1*(???*2*) - ⚠️ call of unknown function -- *1* FreeVar(unescape) +msg = ???*0*(???*1*) +- *0* FreeVar(unescape) ⚠️ unknown global -- *2* ???*3*((arguments[0] | ???*4*)) - ⚠️ call of unknown function -- *3* FreeVar(encodeURIComponent) +- *1* ???*2*((arguments[0] | ???*3*)) + ⚠️ Nested operation +- *2* FreeVar(encodeURIComponent) ⚠️ unknown global -- *4* unknown new expression +- *3* unknown new expression msw = (???*0* + ???*1* + ???*2*) - *0* unsupported expression diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/resolved-explained.snapshot index e077606845407..bab1fd8ebfb6f 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/md5_2/resolved-explained.snapshot @@ -98,125 +98,52 @@ isBuffer = module l = ???*0* - *0* unsupported expression -m = module["bytesToWords"]( - ( - | arguments[0] - | module["bin"]["stringToBytes"](???*0*) - | module["utf8"]["stringToBytes"](???*1*) - | ???*2* - ) -) -- *0* message - ⚠️ circular variable reference -- *1* message - ⚠️ circular variable reference -- *2* ???*3*(???*7*, 0) - ⚠️ call of unknown function -- *3* ???*4*["call"] - ⚠️ property on unknown -- *4* ???*5*["slice"] - ⚠️ property on unknown -- *5* ???*6*["prototype"] - ⚠️ property on unknown -- *6* FreeVar(Array) - ⚠️ unknown global -- *7* message +m = ???*0*((arguments[0] | ???*1*)) +- *0* module["bytesToWords"] + ⚠️ Nested operation +- *1* ???*2*(???*4*) + ⚠️ Nested operation +- *2* ???*3*["stringToBytes"] + ⚠️ Nested operation +- *3* module["bin"] + ⚠️ Nested operation +- *4* message ⚠️ circular variable reference md5 = ???*0* - *0* max number of linking steps reached -message#3 = ( - | arguments[0] - | module["bin"]["stringToBytes"]( - ( - | arguments[0] - | module["bin"]["stringToBytes"](???*0*) - | module["utf8"]["stringToBytes"](???*1*) - | ???*2* - ) - ) - | module["utf8"]["stringToBytes"]( - ( - | arguments[0] - | module["bin"]["stringToBytes"](???*8*) - | module["utf8"]["stringToBytes"](???*9*) - | ???*10* - ) - ) - | ???*16* - | arguments[0]["toString"]() - | module["bin"]["stringToBytes"](???*28*)["toString"]() - | module["utf8"]["stringToBytes"](???*29*)["toString"]() -) -- *0* message - ⚠️ circular variable reference -- *1* message - ⚠️ circular variable reference -- *2* ???*3*(???*7*, 0) - ⚠️ call of unknown function -- *3* ???*4*["call"] - ⚠️ property on unknown -- *4* ???*5*["slice"] - ⚠️ property on unknown -- *5* ???*6*["prototype"] - ⚠️ property on unknown -- *6* FreeVar(Array) - ⚠️ unknown global -- *7* message - ⚠️ circular variable reference -- *8* message +message#3 = (arguments[0] | ???*0*((arguments[0] | ???*2*)) | ???*6*((arguments[0] | ???*10*), 0) | ???*14*()) +- *0* ???*1*["stringToBytes"] + ⚠️ Nested operation +- *1* module["bin"] + ⚠️ Nested operation +- *2* ???*3*(???*5*) + ⚠️ Nested operation +- *3* ???*4*["stringToBytes"] + ⚠️ Nested operation +- *4* module["bin"] + ⚠️ Nested operation +- *5* message ⚠️ circular variable reference -- *9* message - ⚠️ circular variable reference -- *10* ???*11*(???*15*, 0) - ⚠️ call of unknown function -- *11* ???*12*["call"] - ⚠️ property on unknown -- *12* ???*13*["slice"] - ⚠️ property on unknown -- *13* ???*14*["prototype"] - ⚠️ property on unknown -- *14* FreeVar(Array) - ⚠️ unknown global -- *15* message - ⚠️ circular variable reference -- *16* ???*17*( - ( - | arguments[0] - | module["bin"]["stringToBytes"](???*21*) - | module["utf8"]["stringToBytes"](???*22*) - | ???*23* - ), - 0 - ) - ⚠️ call of unknown function -- *17* ???*18*["call"] - ⚠️ property on unknown -- *18* ???*19*["slice"] - ⚠️ property on unknown -- *19* ???*20*["prototype"] - ⚠️ property on unknown -- *20* FreeVar(Array) +- *6* ???*7*["call"] + ⚠️ Nested operation +- *7* ???*8*["slice"] + ⚠️ Nested operation +- *8* ???*9*["prototype"] + ⚠️ Nested operation +- *9* FreeVar(Array) ⚠️ unknown global -- *21* message - ⚠️ circular variable reference -- *22* message - ⚠️ circular variable reference -- *23* ???*24*(???*27*, 0) - ⚠️ call of unknown function -- *24* ???*25*["call"] - ⚠️ property on unknown -- *25* ???*26*["slice"] - ⚠️ property on unknown -- *26* ???["prototype"] - ⚠️ property on unknown -- *27* message - ⚠️ circular variable reference -- *28* message - ⚠️ circular variable reference -- *29* message +- *10* ???*11*(???*13*) + ⚠️ Nested operation +- *11* ???*12*["stringToBytes"] + ⚠️ Nested operation +- *12* module["bin"] + ⚠️ Nested operation +- *13* message ⚠️ circular variable reference +- *14* arguments[0]["toString"] + ⚠️ Nested operation message#8 = arguments[0] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/member-call/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/member-call/resolved-explained.snapshot index 210e370e6c517..b7a5846363a06 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/member-call/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/member-call/resolved-explained.snapshot @@ -14,6 +14,8 @@ pick_array1 = [1, 2, 3, 4, 5, 6, ???*0*] - *0* FreeVar(unknown) ⚠️ unknown global -pick_array2 = [1, 2, 3]["concat"](4, 5, 6, ???*0*) -- *0* FreeVar(unknown) +pick_array2 = ???*0*(4, 5, 6, ???*1*) +- *0* [1, 2, 3]["concat"] + ⚠️ non-num constant property on array +- *1* FreeVar(unknown) ⚠️ unknown global diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/resolved-explained.snapshot index 5fbbdbae007db..4f1a4120e2d79 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/mongoose-reduced/resolved-explained.snapshot @@ -5,7 +5,7 @@ Collection = ???*0* ⚠️ only constant argument is supported - *1* require: The require method from CommonJS - *2* ???*3*["MONGOOSE_DRIVER_PATH"] - ⚠️ property on unknown + ⚠️ Nested operation - *3* FreeVar(global) ⚠️ unknown global @@ -16,12 +16,10 @@ Connection = ???*0* ⚠️ only constant argument is supported - *1* require: The require method from CommonJS - *2* ???*3*["MONGOOSE_DRIVER_PATH"] - ⚠️ property on unknown + ⚠️ Nested operation - *3* FreeVar(global) ⚠️ unknown global -driver = (???*0* | "./drivers/node-mongodb-native") -- *0* ???*1*["MONGOOSE_DRIVER_PATH"] - ⚠️ property on unknown -- *1* FreeVar(global) +driver = (???*0*["MONGOOSE_DRIVER_PATH"] | "./drivers/node-mongodb-native") +- *0* FreeVar(global) ⚠️ unknown global diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/other-free-vars/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/other-free-vars/resolved-explained.snapshot index 72ef4f6bf7b4d..49bc431bb77e2 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/other-free-vars/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/other-free-vars/resolved-explained.snapshot @@ -2,22 +2,18 @@ O = ???*0* - *0* FreeVar(Object) ⚠️ unknown global -a = ???*0* -- *0* ???*1*(???*3*) - ⚠️ call of unknown function -- *1* ???*2*["keys"] - ⚠️ property on unknown -- *2* FreeVar(Object) +a = ???*0*(???*2*) +- *0* ???*1*["keys"] + ⚠️ Nested operation +- *1* FreeVar(Object) ⚠️ unknown global -- *3* FreeVar(Object) +- *2* FreeVar(Object) ⚠️ unknown global -b = ???*0* -- *0* ???*1*(???*3*) - ⚠️ call of unknown function -- *1* ???*2*["keys"] - ⚠️ property on unknown -- *2* FreeVar(Object) +b = ???*0*(???*2*) +- *0* ???*1*["keys"] + ⚠️ Nested operation +- *1* FreeVar(Object) ⚠️ unknown global -- *3* FreeVar(Object) +- *2* FreeVar(Object) ⚠️ unknown global diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot index d01d0c583726e..83523eef21434 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot @@ -4,7 +4,11 @@ *anonymous function 10796* = (...) => {"type": "identifier", "name": arguments[0]} -*anonymous function 11187* = (...) => (arguments[0] + arguments[1]["join"]("")) +*anonymous function 11187* = (...) => (arguments[0] + ???*0*) +- *0* ???*1*("") + ⚠️ Nested operation +- *1* arguments[1]["join"] + ⚠️ Nested operation *anonymous function 11339* = ???*0* - *0* in progress nodes limit reached @@ -28,16 +32,14 @@ *anonymous function 12449* = ???*0* - *0* in progress nodes limit reached -*anonymous function 12577* = (...) => ???*0* -- *0* ???*1*(???*3*) - ⚠️ call of unknown function -- *1* ???*2*["fromCharCode"] - ⚠️ property on unknown -- *2* FreeVar(String) +*anonymous function 12577* = (...) => ???*0*(???*2*) +- *0* ???*1*["fromCharCode"] + ⚠️ Nested operation +- *1* FreeVar(String) ⚠️ unknown global -- *3* ???*4*(arguments[0], 16) - ⚠️ call of unknown function -- *4* FreeVar(parseInt) +- *2* ???*3*(arguments[0], 16) + ⚠️ Nested operation +- *3* FreeVar(parseInt) ⚠️ unknown global *anonymous function 1271* = (...) => "any character" @@ -60,15 +62,17 @@ *anonymous function 13543* = (...) => {"property": arguments[1], "computed": true} -*anonymous function 13636* = (...) => arguments[1]["reduce"]( - (...) => {"type": "scalar_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, +*anonymous function 13636* = (...) => ???*0*( + (...) => {"type": "scalar_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, arguments[0] ) -- *0* object +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* object ⚠️ pattern without value -- *1* property +- *2* property ⚠️ no value of this variable analysed -- *2* computed +- *3* computed ⚠️ no value of this variable analysed *anonymous function 13891* = (...) => {"type": "scalar_unary_expression", "operator": arguments[0], "argument": arguments[1]} @@ -82,15 +86,17 @@ "alternate": arguments[2] } -*anonymous function 14448* = (...) => arguments[1]["reduce"]( - (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, +*anonymous function 14448* = (...) => ???*0*( + (...) => {"type": "scalar_binary_expression", "left": ???*1*, "operator": ???*2*, "right": ???*3*}, arguments[0] ) -- *0* left +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* left ⚠️ pattern without value -- *1* operator +- *2* operator ⚠️ pattern without value -- *2* right +- *3* right ⚠️ pattern without value *anonymous function 15047* = (...) => {"type": "scalar_in_expression", "value": arguments[0], "list": arguments[1]} @@ -106,15 +112,17 @@ *anonymous function 16072* = (...) => {"type": "collection_expression", "expression": arguments[0]} -*anonymous function 16201* = (...) => arguments[1]["reduce"]( - (...) => {"type": "collection_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, +*anonymous function 16201* = (...) => ???*0*( + (...) => {"type": "collection_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, arguments[0] ) -- *0* object +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* object ⚠️ pattern without value -- *1* property +- *2* property ⚠️ no value of this variable analysed -- *2* computed +- *3* computed ⚠️ no value of this variable analysed *anonymous function 16460* = (...) => {"type": "collection_subquery_expression", "expression": arguments[0]} @@ -129,13 +137,53 @@ *anonymous function 16925* = (...) => arguments[0] -*anonymous function 1822* = (...) => `\x0${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` - -*anonymous function 1920* = (...) => `\x${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` - -*anonymous function 2287* = (...) => `\x0${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` - -*anonymous function 2385* = (...) => `\x${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` +*anonymous function 1822* = (...) => `\x0${???*0*}` +- *0* ???*1*() + ⚠️ Nested operation +- *1* ???*2*["toUpperCase"] + ⚠️ Nested operation +- *2* ???*3*(16) + ⚠️ Nested operation +- *3* ???*4*["toString"] + ⚠️ Nested operation +- *4* ???(0) + ⚠️ Nested operation + +*anonymous function 1920* = (...) => `\x${???*0*}` +- *0* ???*1*() + ⚠️ Nested operation +- *1* ???*2*["toUpperCase"] + ⚠️ Nested operation +- *2* ???*3*(16) + ⚠️ Nested operation +- *3* ???*4*["toString"] + ⚠️ Nested operation +- *4* ???(0) + ⚠️ Nested operation + +*anonymous function 2287* = (...) => `\x0${???*0*}` +- *0* ???*1*() + ⚠️ Nested operation +- *1* ???*2*["toUpperCase"] + ⚠️ Nested operation +- *2* ???*3*(16) + ⚠️ Nested operation +- *3* ???*4*["toString"] + ⚠️ Nested operation +- *4* ???(0) + ⚠️ Nested operation + +*anonymous function 2385* = (...) => `\x${???*0*}` +- *0* ???*1*() + ⚠️ Nested operation +- *1* ???*2*["toUpperCase"] + ⚠️ Nested operation +- *2* ???*3*(16) + ⚠️ Nested operation +- *3* ???*4*["toString"] + ⚠️ Nested operation +- *4* ???(0) + ⚠️ Nested operation *anonymous function 3852* = (...) => {"type": "sql", "body": arguments[0]} @@ -184,33 +232,28 @@ *anonymous function 5936* = (...) => {"type": "sort_expression", "expression": arguments[0], "order": arguments[1]} -*anonymous function 625* = (...) => `Expected ${(???*0* | `${???*2*} or ${???*4*}` | `${???*6*}, or ${???*12*}`)} but ${( - | `"${...(..., ...)["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...[...]()}`)["replace"](/[\x10-\x1F\x7F-\x9F]/g, (...) => `\x${...[...](16)["toUpperCase"]()}`)}"` - | "end of input" - )} found.` +*anonymous function 625* = (...) => `Expected ${???*0*} but ${(???*2* | "end of input")} found.` - *0* ???*1*[0] - ⚠️ property on unknown + ⚠️ Nested operation - *1* unknown new expression -- *2* ???*3*[0] - ⚠️ property on unknown -- *3* unknown new expression -- *4* ???*5*[1] - ⚠️ property on unknown -- *5* unknown new expression -- *6* ???*7*(", ") - ⚠️ call of unknown function -- *7* ???*8*["join"] - ⚠️ property on unknown -- *8* ???*9*(0, ???*11*) - ⚠️ call of unknown function -- *9* ???*10*["slice"] - ⚠️ property on unknown -- *10* unknown new expression -- *11* unsupported expression -- *12* ???*13*[???*14*] - ⚠️ property on unknown -- *13* unknown new expression -- *14* unsupported expression +- *2* `"${???*3*}"` + ⚠️ Nested operation +- *3* ???*4*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*8*) + ⚠️ Nested operation +- *4* ???*5*["replace"] + ⚠️ Nested operation +- *5* ???*6*(/[\x00-\x0F]/g, (...) => ???*7*) + ⚠️ Nested operation +- *6* ???["replace"] + ⚠️ Nested operation +- *7* `\x0${???}` + ⚠️ Nested operation +- *8* `\x${???*9*}` + ⚠️ Nested operation +- *9* ???*10*() + ⚠️ Nested operation +- *10* ???["toUpperCase"] + ⚠️ Nested operation *anonymous function 6287* = (...) => {"type": "scalar_function_expression", "name": arguments[0], "arguments": arguments[1], "udf": true} @@ -219,10 +262,29 @@ *anonymous function 6748* = (...) => {"type": "scalar_object_expression", "properties": (???*0* | [])} - *0* spread is not supported -*anonymous function 702* = (...) => `"${...(..., ...)["replace"](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...[...](16)["toUpperCase"]()}`)["replace"]( - /[\x10-\x1F\x7F-\x9F]/g, - (...) => `\x${...[...](0)["toString"](16)["toUpperCase"]()}` - )}"` +*anonymous function 702* = (...) => `"${???*0*}"` +- *0* ???*1*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*7*) + ⚠️ Nested operation +- *1* ???*2*["replace"] + ⚠️ Nested operation +- *2* ???*3*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *3* ???*4*["replace"] + ⚠️ Nested operation +- *4* ???(/\r/g, "\r") + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???() + ⚠️ Nested operation +- *7* `\x${???*8*}` + ⚠️ Nested operation +- *8* ???*9*() + ⚠️ Nested operation +- *9* ???*10*["toUpperCase"] + ⚠️ Nested operation +- *10* ???(16) + ⚠️ Nested operation *anonymous function 7046* = (...) => {"type": "scalar_array_expression", "elements": arguments[0]} @@ -239,7 +301,9 @@ *anonymous function 804* = (...) => `[${("^" | "")}]` -*anonymous function 8139* = (...) => {"type": "string_constant", "value": arguments[0]["join"]("")} +*anonymous function 8139* = (...) => {"type": "string_constant", "value": ???*0*("")} +- *0* arguments[0]["join"] + ⚠️ Nested operation *anonymous function 8336* = (...) => {"type": "array_constant", "elements": ???*0*} - *0* spread is not supported @@ -278,15 +342,34 @@ ⚠️ pattern without value DESCRIBE_EXPECTATION_FNS = { - "literal": (...) => `"${...[...](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...(...)["toUpperCase"]()}`)["replace"]( - /[\x10-\x1F\x7F-\x9F]/g, - (...) => `\x${...(...)["toString"](16)["toUpperCase"]()}` - )}"`, + "literal": (...) => `"${???*0*}"`, "class": (...) => `[${("^" | "")}]`, "any": (...) => "any character", "end": (...) => "end of input", "other": (...) => arguments[0]["description"] } +- *0* ???*1*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*7*) + ⚠️ Nested operation +- *1* ???*2*["replace"] + ⚠️ Nested operation +- *2* ???*3*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *3* ???*4*["replace"] + ⚠️ Nested operation +- *4* ???(/\r/g, "\r") + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???() + ⚠️ Nested operation +- *7* `\x${???*8*}` + ⚠️ Nested operation +- *8* ???*9*() + ⚠️ Nested operation +- *9* ???*10*["toUpperCase"] + ⚠️ Nested operation +- *10* ???(16) + ⚠️ Nested operation alias#34 = arguments[0] @@ -306,15 +389,17 @@ begin = arguments[1] body = arguments[0] -buildBinaryExpression = (...) => arguments[1]["reduce"]( - (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, +buildBinaryExpression = (...) => ???*0*( + (...) => {"type": "scalar_binary_expression", "left": ???*1*, "operator": ???*2*, "right": ???*3*}, arguments[0] ) -- *0* left +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* left ⚠️ pattern without value -- *1* operator +- *2* operator ⚠️ pattern without value -- *2* right +- *3* right ⚠️ pattern without value ch#11 = arguments[0] @@ -331,13 +416,33 @@ chars = arguments[0] child = arguments[0] -classEscape = (...) => ...[...](/\t/g, "\t")["replace"](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"]( - /[\x00-\x0F]/g, - (...) => `\x0${...(...)["toString"](16)["toUpperCase"]()}` -)["replace"]( - /[\x10-\x1F\x7F-\x9F]/g, - (...) => `\x${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` -) +classEscape = (...) => ???*0*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*8*) +- *0* ???*1*["replace"] + ⚠️ Nested operation +- *1* ???*2*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *2* ???*3*["replace"] + ⚠️ Nested operation +- *3* ???*4*(/\r/g, "\r") + ⚠️ Nested operation +- *4* ???["replace"] + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???*7*() + ⚠️ Nested operation +- *7* ???["toUpperCase"] + ⚠️ Nested operation +- *8* `\x${???*9*}` + ⚠️ Nested operation +- *9* ???*10*() + ⚠️ Nested operation +- *10* ???*11*["toUpperCase"] + ⚠️ Nested operation +- *11* ???*12*(16) + ⚠️ Nested operation +- *12* ???["toString"] + ⚠️ Nested operation condition = arguments[0] @@ -347,46 +452,85 @@ ctor = (...) => ???*0* - *0* FreeVar(undefined) ⚠️ unknown global -describeExpectation = (...) => { - "literal": (...) => `"${...(..., ...)["replace"](/[\x00-\x0F]/g, (...) => `\x0${...}`)["replace"](/[\x10-\x1F\x7F-\x9F]/g, (...) => `\x${...[...]()}`)}"`, - "class": (...) => `[${("^" | "")}]`, - "any": (...) => "any character", - "end": (...) => "end of input", - "other": (...) => arguments[0]["description"] -}[arguments[0]["type"]](arguments[0]) - -describeExpected = (...) => (???*0* | `${???*2*} or ${???*4*}` | `${???*6*}, or ${???*12*}`) -- *0* ???*1*[0] - ⚠️ property on unknown -- *1* unknown new expression -- *2* ???*3*[0] - ⚠️ property on unknown -- *3* unknown new expression -- *4* ???*5*[1] - ⚠️ property on unknown -- *5* unknown new expression -- *6* ???*7*(", ") - ⚠️ call of unknown function -- *7* ???*8*["join"] - ⚠️ property on unknown -- *8* ???*9*(0, ???*11*) - ⚠️ call of unknown function -- *9* ???*10*["slice"] - ⚠️ property on unknown -- *10* unknown new expression -- *11* unsupported expression -- *12* ???*13*[???*14*] - ⚠️ property on unknown -- *13* unknown new expression -- *14* unsupported expression - -describeFound = (...) => ( - | `"${...[...](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"](/[\x00-\x0F]/g, (...) => `\x0${...(...)["toUpperCase"]()}`)["replace"]( - /[\x10-\x1F\x7F-\x9F]/g, - (...) => `\x${...(...)["toString"](16)["toUpperCase"]()}` - )}"` +describeExpectation = (...) => ( + | `"${???*0*}"` + | `[${("^" | "")}]` + | "any character" | "end of input" + | arguments[0]["description"] + | ???*11*(arguments[0]) ) +- *0* ???*1*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*7*) + ⚠️ Nested operation +- *1* ???*2*["replace"] + ⚠️ Nested operation +- *2* ???*3*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *3* ???*4*["replace"] + ⚠️ Nested operation +- *4* ???(/\r/g, "\r") + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???() + ⚠️ Nested operation +- *7* `\x${???*8*}` + ⚠️ Nested operation +- *8* ???*9*() + ⚠️ Nested operation +- *9* ???*10*["toUpperCase"] + ⚠️ Nested operation +- *10* ???(16) + ⚠️ Nested operation +- *11* {}[arguments[0]["type"]] + ⚠️ unknown object prototype methods or values + +describeExpected = (...) => (???*0*[0] | `${???*1*} or ${???*3*}` | `${???*5*}, or ${???*11*}`) +- *0* unknown new expression +- *1* ???*2*[0] + ⚠️ Nested operation +- *2* unknown new expression +- *3* ???*4*[1] + ⚠️ Nested operation +- *4* unknown new expression +- *5* ???*6*(", ") + ⚠️ Nested operation +- *6* ???*7*["join"] + ⚠️ Nested operation +- *7* ???*8*(0, ???*10*) + ⚠️ Nested operation +- *8* ???*9*["slice"] + ⚠️ Nested operation +- *9* unknown new expression +- *10* unsupported expression +- *11* ???*12*[???*13*] + ⚠️ Nested operation +- *12* unknown new expression +- *13* unsupported expression + +describeFound = (...) => (`"${???*0*}"` | "end of input") +- *0* ???*1*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*7*) + ⚠️ Nested operation +- *1* ???*2*["replace"] + ⚠️ Nested operation +- *2* ???*3*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *3* ???*4*["replace"] + ⚠️ Nested operation +- *4* ???(/\r/g, "\r") + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???() + ⚠️ Nested operation +- *7* `\x${???*8*}` + ⚠️ Nested operation +- *8* ???*9*() + ⚠️ Nested operation +- *9* ???*10*["toUpperCase"] + ⚠️ Nested operation +- *10* ???(16) + ⚠️ Nested operation description#75 = arguments[0] @@ -396,30 +540,23 @@ descriptions = ???*0* - *0* unknown new expression details = ( - | [{"line": 1, "column": 1}][arguments[0]] | {"line": 1, "column": 1} | ???*0* | { - "line": ([{"line": 1, "column": 1}][arguments[0]]["line"] | 1 | ???*2*), - "column": ([{"line": 1, "column": 1}][arguments[0]]["column"] | 1 | ???*5*) + "line": (1 | ???*1*["line"] | ???*2*["line"]), + "column": (1 | ???*3*["column"] | ???*4*["column"]) } ) -- *0* [][???*1*] +- *0* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *1* p - ⚠️ pattern without value -- *2* ???*3*["line"] - ⚠️ property on unknown -- *3* [][???*4*] +- *1* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *4* p - ⚠️ pattern without value -- *5* ???*6*["column"] - ⚠️ property on unknown -- *6* [][???*7*] +- *2* details + ⚠️ circular variable reference +- *3* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *7* p - ⚠️ pattern without value +- *4* details + ⚠️ circular variable reference digits = arguments[0] @@ -430,22 +567,15 @@ end = arguments[2] endPos = arguments[1] endPosDetails = ( - | [{"line": 1, "column": 1}][arguments[1]] | {"line": 1, "column": 1} | ???*0* - | {"line": ???*2*, "column": ???*4*} + | {"line": ???*1*["line"], "column": ???*2*["column"]} ) -- *0* [][???*1*] +- *0* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *1* p - ⚠️ pattern without value -- *2* ???*3*["line"] - ⚠️ property on unknown -- *3* details +- *1* details ⚠️ circular variable reference -- *4* ???*5*["column"] - ⚠️ property on unknown -- *5* details +- *2* details ⚠️ circular variable reference error = (...) => ???*0* @@ -544,7 +674,17 @@ head#73 = arguments[0] hex#44 = arguments[0] -hex#5 = (...) => arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]() +hex#5 = (...) => ???*0*() +- *0* ???*1*["toUpperCase"] + ⚠️ Nested operation +- *1* ???*2*(16) + ⚠️ Nested operation +- *2* ???*3*["toString"] + ⚠️ Nested operation +- *3* ???*4*(0) + ⚠️ Nested operation +- *4* arguments[0]["charCodeAt"] + ⚠️ Nested operation i#19 = (???*0* | 0 | 1) - *0* i @@ -576,13 +716,33 @@ left = ???*0* list = arguments[1] -literalEscape = (...) => ...[...](/\t/g, "\t")["replace"](/\n/g, "\n")["replace"](/\r/g, "\r")["replace"]( - /[\x00-\x0F]/g, - (...) => `\x0${...(...)["toString"](16)["toUpperCase"]()}` -)["replace"]( - /[\x10-\x1F\x7F-\x9F]/g, - (...) => `\x${arguments[0]["charCodeAt"](0)["toString"](16)["toUpperCase"]()}` -) +literalEscape = (...) => ???*0*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*8*) +- *0* ???*1*["replace"] + ⚠️ Nested operation +- *1* ???*2*(/[\x00-\x0F]/g, (...) => ???*5*) + ⚠️ Nested operation +- *2* ???*3*["replace"] + ⚠️ Nested operation +- *3* ???*4*(/\r/g, "\r") + ⚠️ Nested operation +- *4* ???["replace"] + ⚠️ Nested operation +- *5* `\x0${???*6*}` + ⚠️ Nested operation +- *6* ???*7*() + ⚠️ Nested operation +- *7* ???["toUpperCase"] + ⚠️ Nested operation +- *8* `\x${???*9*}` + ⚠️ Nested operation +- *9* ???*10*() + ⚠️ Nested operation +- *10* ???*11*["toUpperCase"] + ⚠️ Nested operation +- *11* ???*12*(16) + ⚠️ Nested operation +- *12* ???["toString"] + ⚠️ Nested operation location#21 = ???*0* - *0* in progress nodes limit reached @@ -713,7 +873,11 @@ peg$c120 = { "ignoreCase": false } -peg$c121 = (...) => (arguments[0] + arguments[1]["join"]("")) +peg$c121 = (...) => (arguments[0] + ???*0*) +- *0* ???*1*("") + ⚠️ Nested operation +- *1* arguments[1]["join"] + ⚠️ Nested operation peg$c122 = "@" @@ -786,16 +950,14 @@ peg$c150 = "u" peg$c151 = {"type": "literal", "text": "u", "ignoreCase": false} -peg$c152 = (...) => ???*0* -- *0* ???*1*(???*3*) - ⚠️ call of unknown function -- *1* ???*2*["fromCharCode"] - ⚠️ property on unknown -- *2* FreeVar(String) +peg$c152 = (...) => ???*0*(???*2*) +- *0* ???*1*["fromCharCode"] + ⚠️ Nested operation +- *1* FreeVar(String) ⚠️ unknown global -- *3* ???*4*(arguments[0], 16) - ⚠️ call of unknown function -- *4* FreeVar(parseInt) +- *2* ???*3*(arguments[0], 16) + ⚠️ Nested operation +- *3* FreeVar(parseInt) ⚠️ unknown global peg$c153 = /^[0-9a-f]/i @@ -820,15 +982,17 @@ peg$c161 = (...) => {"property": arguments[1], "computed": false} peg$c162 = (...) => {"property": arguments[1], "computed": true} -peg$c163 = (...) => arguments[1]["reduce"]( - (...) => {"type": "scalar_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, +peg$c163 = (...) => ???*0*( + (...) => {"type": "scalar_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, arguments[0] ) -- *0* object +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* object ⚠️ pattern without value -- *1* property +- *2* property ⚠️ no value of this variable analysed -- *2* computed +- *3* computed ⚠️ no value of this variable analysed peg$c164 = (...) => {"type": "scalar_unary_expression", "operator": arguments[0], "argument": arguments[1]} @@ -854,15 +1018,17 @@ peg$c170 = "??" peg$c171 = {"type": "literal", "text": "??", "ignoreCase": false} -peg$c172 = (...) => arguments[1]["reduce"]( - (...) => {"type": "scalar_binary_expression", "left": ???*0*, "operator": ???*1*, "right": ???*2*}, +peg$c172 = (...) => ???*0*( + (...) => {"type": "scalar_binary_expression", "left": ???*1*, "operator": ???*2*, "right": ???*3*}, arguments[0] ) -- *0* left +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* left ⚠️ pattern without value -- *1* operator +- *2* operator ⚠️ pattern without value -- *2* right +- *3* right ⚠️ pattern without value peg$c173 = "=" @@ -950,15 +1116,17 @@ peg$c207 = (...) => {"key": arguments[0], "value": arguments[1]} peg$c208 = (...) => {"type": "collection_expression", "expression": arguments[0]} -peg$c209 = (...) => arguments[1]["reduce"]( - (...) => {"type": "collection_member_expression", "object": ???*0*, "property": ???*1*, "computed": ???*2*}, +peg$c209 = (...) => ???*0*( + (...) => {"type": "collection_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, arguments[0] ) -- *0* object +- *0* arguments[1]["reduce"] + ⚠️ Nested operation +- *1* object ⚠️ pattern without value -- *1* property +- *2* property ⚠️ no value of this variable analysed -- *2* computed +- *3* computed ⚠️ no value of this variable analysed peg$c21 = (...) => {"type": "sort_specification", "expressions": ???*0*} @@ -1059,7 +1227,9 @@ peg$c54 = """ peg$c55 = {"type": "literal", "text": """, "ignoreCase": false} -peg$c56 = (...) => {"type": "string_constant", "value": arguments[0]["join"]("")} +peg$c56 = (...) => {"type": "string_constant", "value": ???*0*("")} +- *0* arguments[0]["join"] + ⚠️ Nested operation peg$c57 = "'" @@ -1182,57 +1352,42 @@ peg$classExpectation = (...) => {"type": "class", "parts": arguments[0], "invert peg$computeLocation = (...) => { "start": { "offset": arguments[0], - "line": ([{"line": 1, "column": 1}][arguments[0]]["line"] | 1 | ???*0*), - "column": ([{"line": 1, "column": 1}][arguments[0]]["column"] | 1 | ???*3*) + "line": (1 | ???*0*["line"] | ???*1*["line"]), + "column": (1 | ???*2*["column"] | ???*3*["column"]) }, "end": { "offset": arguments[1], - "line": ([{"line": 1, "column": 1}][arguments[1]]["line"] | 1 | ???*6*), - "column": ([{"line": 1, "column": 1}][arguments[1]]["column"] | 1 | ???*9*) + "line": (1 | ???*4*["line"] | ???*5*["line"]), + "column": (1 | ???*6*["column"] | ???*7*["column"]) } } -- *0* ???*1*["line"] - ⚠️ property on unknown -- *1* [][???*2*] +- *0* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *2* p - ⚠️ pattern without value -- *3* ???*4*["column"] - ⚠️ property on unknown -- *4* [][???*5*] +- *1* details + ⚠️ circular variable reference +- *2* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *5* p - ⚠️ pattern without value -- *6* ???*7*["line"] - ⚠️ property on unknown -- *7* [][???*8*] +- *3* details + ⚠️ circular variable reference +- *4* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *8* p - ⚠️ pattern without value -- *9* ???*10*["column"] - ⚠️ property on unknown -- *10* [][???*11*] +- *5* details + ⚠️ circular variable reference +- *6* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *11* p - ⚠️ pattern without value +- *7* details + ⚠️ circular variable reference peg$computePosDetails = (...) => ( - | [{"line": 1, "column": 1}][arguments[0]] | {"line": 1, "column": 1} | ???*0* - | {"line": ???*2*, "column": ???*4*} + | {"line": ???*1*["line"], "column": ???*2*["column"]} ) -- *0* [][???*1*] +- *0* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *1* p - ⚠️ pattern without value -- *2* ???*3*["line"] - ⚠️ property on unknown -- *3* details +- *1* details ⚠️ circular variable reference -- *4* ???*5*["column"] - ⚠️ property on unknown -- *5* details +- *2* details ⚠️ circular variable reference peg$currPos = ???*0* @@ -1859,17 +2014,11 @@ s1#101 = ???*0* s1#102 = ???*0* - *0* in progress nodes limit reached -s1#103 = ( - | ???*0* - | """ - | {} - | {"type": "string_constant", "value": (???*1* | [])["join"]("")} - | "'" -) +s1#103 = (???*0* | """ | {} | {"type": "string_constant", "value": ???*1*("")} | "'") - *0* s1 ⚠️ pattern without value -- *1* s2 - ⚠️ pattern without value +- *1* arguments[0]["join"] + ⚠️ Nested operation s1#104 = ???*0* - *0* in progress nodes limit reached @@ -3126,22 +3275,15 @@ source#33 = arguments[0] startPos = arguments[0] startPosDetails = ( - | [{"line": 1, "column": 1}][arguments[0]] | {"line": 1, "column": 1} | ???*0* - | {"line": ???*2*, "column": ???*4*} + | {"line": ???*1*["line"], "column": ???*2*["column"]} ) -- *0* [][???*1*] +- *0* [][arguments[0]] ⚠️ unknown array prototype methods or values -- *1* p - ⚠️ pattern without value -- *2* ???*3*["line"] - ⚠️ property on unknown -- *3* details +- *1* details ⚠️ circular variable reference -- *4* ???*5*["column"] - ⚠️ property on unknown -- *5* details +- *2* details ⚠️ circular variable reference subquery = arguments[0] From 91dd4673fcefe78bbfd8f0d0ebc322fead687b6a Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Fri, 27 Jan 2023 17:04:23 +0100 Subject: [PATCH 04/27] bugfixes and improvements --- .../src/analyzer/builtin.rs | 74 +- .../src/analyzer/linker.rs | 21 +- .../graph/array-map/graph-effects.snapshot | 699 ++++++++++++++ .../graph/array-map/graph-explained.snapshot | 23 + .../analyzer/graph/array-map/graph.snapshot | 225 +++++ .../tests/analyzer/graph/array-map/input.js | 13 + .../array-map/resolved-explained.snapshot | 35 + .../graph/peg/resolved-explained.snapshot | 911 +++++++++--------- 8 files changed, 1487 insertions(+), 514 deletions(-) create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-effects.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-explained.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/array-map/input.js create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/array-map/resolved-explained.snapshot diff --git a/crates/turbopack-ecmascript/src/analyzer/builtin.rs b/crates/turbopack-ecmascript/src/analyzer/builtin.rs index 1cb622507e2ca..7d178f4a3f539 100644 --- a/crates/turbopack-ecmascript/src/analyzer/builtin.rs +++ b/crates/turbopack-ecmascript/src/analyzer/builtin.rs @@ -177,62 +177,26 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { return true; } } - // TODO This breaks the Function <-> Argument relationship - // We need to refactor that once we expand function calls "map" => { - if let Some(JsValue::Function(_, box return_value)) = - args.get_mut(0) - { - match return_value { - // ['a', 'b', 'c'].map((i) => require.resolve(i))) - JsValue::Unknown(Some(call), _) => { - if let JsValue::Call(len, callee, call_args) = &**call { - *value = - JsValue::array( - items - .iter() - .map(|item| { - let new_args = call_args - .iter() - .map(|arg| { - if let JsValue::Argument(0) = arg { - return item.clone(); - } else if let JsValue::Unknown( - Some(arg), - _, - ) = arg - { - if let JsValue::Argument(0) = - &**arg - { - return item.clone(); - } - } - arg.clone() - }) - .collect(); - JsValue::Call( - *len, - callee.clone(), - new_args, - ) - }) - .collect(), - ); - } - } - _ => { - *value = JsValue::array( - items - .iter() - .map(|_| return_value.clone()) - .collect(), - ); - } - } - // stop the iteration, let the `handle_call` to continue - // processing the new mapped array - return false; + if let Some(func) = args.get(0) { + *value = JsValue::array( + take(items) + .into_iter() + .enumerate() + .map(|(i, item)| { + JsValue::call( + box func.clone(), + vec![ + item, + JsValue::Constant(ConstantValue::Num( + ConstantNumber(i as f64), + )), + ], + ) + }) + .collect(), + ); + return true; } } _ => {} diff --git a/crates/turbopack-ecmascript/src/analyzer/linker.rs b/crates/turbopack-ecmascript/src/analyzer/linker.rs index 61ee2275f3193..33c32c34bc0d8 100644 --- a/crates/turbopack-ecmascript/src/analyzer/linker.rs +++ b/crates/turbopack-ecmascript/src/analyzer/linker.rs @@ -157,10 +157,12 @@ where let mut queue: Vec<(bool, JsValue)> = Vec::new(); let mut done: Vec<(JsValue, bool)> = Vec::new(); + // Tracks the number of nodes in the queue and done combined let mut total_nodes = 0; let mut cycle_stack: HashSet = HashSet::new(); let mut replaced_references: (HashSet, HashSet) = (HashSet::new(), HashSet::new()); let mut replaced_references_stack: Vec<(HashSet, HashSet)> = Vec::new(); + // Tracks the number linking steps so far let mut steps = 0; total_nodes += val.total_nodes(); @@ -252,12 +254,14 @@ where *child = val; modified }); + val.update_total_nodes(); total_nodes -= val.total_nodes(); if modified { if val.total_nodes() > LIMIT_NODE_SIZE { + total_nodes += 1; done.push((JsValue::Unknown(None, "node limit reached"), true)); - break; + continue; } val.normalize_shallow(); } @@ -265,21 +269,26 @@ where let (val, visit_modified) = val.visit_async_until_settled(&mut visitor).await?; if visit_modified { if val.total_nodes() > LIMIT_NODE_SIZE { + total_nodes += 1; done.push((JsValue::Unknown(None, "node limit reached"), true)); - break; + continue; } modified = true; } - total_nodes += val.total_nodes(); - done.push((val, modified)); - if total_nodes > LIMIT_IN_PROGRESS_NODES { + let count = val.total_nodes(); + if total_nodes + count > LIMIT_IN_PROGRESS_NODES { + // There is always space for one more node since we just popped at least one + // count + total_nodes += 1; done.push(( JsValue::Unknown(None, "in progress nodes limit reached"), true, )); - break; + continue; } + total_nodes += count; + done.push((val, modified)); } } if steps > LIMIT_LINK_STEPS { diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-effects.snapshot new file mode 100644 index 0000000000000..bba55c4451fe6 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-effects.snapshot @@ -0,0 +1,699 @@ +[ + MemberCall { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + args: [ + Variable( + ( + Atom('*anonymous function 88*' type=dynamic), + #0, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 53, + ), + hi: BytePos( + 123, + ), + ctxt: #0, + }, + }, + Member { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 1, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 53, + ), + hi: BytePos( + 87, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + args: [ + Variable( + ( + Atom('*anonymous function 170*' type=dynamic), + #0, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 2, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 135, + ), + hi: BytePos( + 207, + ), + ctxt: #0, + }, + }, + Member { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 2, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 135, + ), + hi: BytePos( + 169, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + args: [ + Variable( + ( + Atom('*anonymous function 254*' type=dynamic), + #0, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 219, + ), + hi: BytePos( + 306, + ), + ctxt: #0, + }, + }, + Member { + obj: Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + prop: Constant( + StrWord( + Atom('map' type=static), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 219, + ), + hi: BytePos( + 253, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('file' type=static), + #4, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 281, + ), + hi: BytePos( + 302, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 3, + ), + ), + Stmt( + Decl, + ), + Decl( + Var, + ), + VarDecl( + Decls( + 0, + ), + ), + VarDeclarator( + Init, + ), + Expr( + Call, + ), + CallExpr( + Args( + 0, + ), + ), + ExprOrSpread( + Expr, + ), + Expr( + Fn, + ), + FnExpr( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 281, + ), + hi: BytePos( + 296, + ), + ctxt: #0, + }, + }, + MemberCall { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + args: [ + Variable( + ( + Atom('file' type=static), + #6, + ), + ), + ], + ast_path: [ + Program( + Script, + ), + Script( + Body( + 4, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Call, + ), + ], + span: Span { + lo: BytePos( + 339, + ), + hi: BytePos( + 360, + ), + ctxt: #0, + }, + }, + Member { + obj: FreeVar( + Require, + ), + prop: Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + ast_path: [ + Program( + Script, + ), + Script( + Body( + 4, + ), + ), + Stmt( + Decl, + ), + Decl( + Fn, + ), + FnDecl( + Function, + ), + Function( + Body, + ), + BlockStmt( + Stmts( + 0, + ), + ), + Stmt( + Return, + ), + ReturnStmt( + Arg, + ), + Expr( + Call, + ), + CallExpr( + Callee, + ), + Callee( + Expr, + ), + Expr( + Member, + ), + ], + span: Span { + lo: BytePos( + 339, + ), + hi: BytePos( + 354, + ), + ctxt: #0, + }, + }, +] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-explained.snapshot new file mode 100644 index 0000000000000..e684e01ee5401 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph-explained.snapshot @@ -0,0 +1,23 @@ +*anonymous function 170* = (...) => [file] + +*anonymous function 254* = (...) => FreeVar(Require)["resolve"](file) + +*anonymous function 88* = (...) => file + +a = ["../lib/a.js", "../lib/b.js"] + +b = ["../lib/a.js", "../lib/b.js"]["map"](*anonymous function 88*) + +c = ["../lib/a.js", "../lib/b.js"]["map"](*anonymous function 170*) + +d = ["../lib/a.js", "../lib/b.js"]["map"](*anonymous function 254*) + +file#2 = arguments[0] + +file#3 = arguments[0] + +file#4 = arguments[0] + +file#6 = arguments[0] + +func = (...) => FreeVar(Require)["resolve"](file) diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph.snapshot new file mode 100644 index 0000000000000..587e9630f39b3 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/graph.snapshot @@ -0,0 +1,225 @@ +[ + ( + "*anonymous function 170*", + Function( + 3, + Array( + 2, + [ + Variable( + ( + Atom('file' type=static), + #3, + ), + ), + ], + ), + ), + ), + ( + "*anonymous function 254*", + Function( + 5, + MemberCall( + 4, + FreeVar( + Require, + ), + Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + [ + Variable( + ( + Atom('file' type=static), + #4, + ), + ), + ], + ), + ), + ), + ( + "*anonymous function 88*", + Function( + 2, + Variable( + ( + Atom('file' type=static), + #2, + ), + ), + ), + ), + ( + "a", + Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + ), + ( + "b", + MemberCall( + 6, + Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + Constant( + StrWord( + Atom('map' type=static), + ), + ), + [ + Variable( + ( + Atom('*anonymous function 88*' type=dynamic), + #0, + ), + ), + ], + ), + ), + ( + "c", + MemberCall( + 6, + Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + Constant( + StrWord( + Atom('map' type=static), + ), + ), + [ + Variable( + ( + Atom('*anonymous function 170*' type=dynamic), + #0, + ), + ), + ], + ), + ), + ( + "d", + MemberCall( + 6, + Array( + 3, + [ + Constant( + StrWord( + Atom('../lib/a.js' type=dynamic), + ), + ), + Constant( + StrWord( + Atom('../lib/b.js' type=dynamic), + ), + ), + ], + ), + Constant( + StrWord( + Atom('map' type=static), + ), + ), + [ + Variable( + ( + Atom('*anonymous function 254*' type=dynamic), + #0, + ), + ), + ], + ), + ), + ( + "file#2", + Argument( + 0, + ), + ), + ( + "file#3", + Argument( + 0, + ), + ), + ( + "file#4", + Argument( + 0, + ), + ), + ( + "file#6", + Argument( + 0, + ), + ), + ( + "func", + Function( + 5, + MemberCall( + 4, + FreeVar( + Require, + ), + Constant( + StrWord( + Atom('resolve' type=inline), + ), + ), + [ + Variable( + ( + Atom('file' type=static), + #6, + ), + ), + ], + ), + ), + ), +] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/input.js b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/input.js new file mode 100644 index 0000000000000..e77e55a04f10b --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/input.js @@ -0,0 +1,13 @@ +const a = ["../lib/a.js", "../lib/b.js"]; +const b = ["../lib/a.js", "../lib/b.js"].map(function (file) { + return file; +}); +const c = ["../lib/a.js", "../lib/b.js"].map(function (file) { + return [file]; +}); +const d = ["../lib/a.js", "../lib/b.js"].map(function (file) { + return require.resolve(file); +}); +function func(file) { + return require.resolve(file); +} diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/resolved-explained.snapshot new file mode 100644 index 0000000000000..7176e0895b11b --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/array-map/resolved-explained.snapshot @@ -0,0 +1,35 @@ +*anonymous function 170* = (...) => [arguments[0]] + +*anonymous function 254* = (...) => ???*0* +- *0* require.resolve*1*(arguments[0]) + ⚠️ resolve.resolve non constant +- *1* require.resolve: The require.resolve method from CommonJS + +*anonymous function 88* = (...) => arguments[0] + +a = ["../lib/a.js", "../lib/b.js"] + +b = ["../lib/a.js", "../lib/b.js"] + +c = [["../lib/a.js"], ["../lib/b.js"]] + +d = [???*0*, ???*2*] +- *0* require.resolve*1*(arguments[0]) + ⚠️ resolve.resolve non constant +- *1* require.resolve: The require.resolve method from CommonJS +- *2* require.resolve*3*(arguments[0]) + ⚠️ resolve.resolve non constant +- *3* require.resolve: The require.resolve method from CommonJS + +file#2 = arguments[0] + +file#3 = arguments[0] + +file#4 = arguments[0] + +file#6 = arguments[0] + +func = (...) => ???*0* +- *0* require.resolve*1*(arguments[0]) + ⚠️ resolve.resolve non constant +- *1* require.resolve: The require.resolve method from CommonJS diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot index 83523eef21434..4d3b8a83ba452 100644 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/peg/resolved-explained.snapshot @@ -11,10 +11,10 @@ ⚠️ Nested operation *anonymous function 11339* = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached *anonymous function 11668* = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached *anonymous function 11725* = (...) => arguments[0] @@ -30,7 +30,7 @@ *anonymous function 12394* = (...) => " " *anonymous function 12449* = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached *anonymous function 12577* = (...) => ???*0*(???*2*) - *0* ???*1*["fromCharCode"] @@ -58,9 +58,11 @@ *anonymous function 1343* = (...) => "end of input" -*anonymous function 13449* = (...) => {"property": arguments[1], "computed": false} +*anonymous function 13449* = (...) => {"property": ???*0*, "computed": false} +- *0* in progress nodes limit reached -*anonymous function 13543* = (...) => {"property": arguments[1], "computed": true} +*anonymous function 13543* = (...) => {"property": ???*0*, "computed": true} +- *0* in progress nodes limit reached *anonymous function 13636* = (...) => ???*0*( (...) => {"type": "scalar_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, @@ -130,7 +132,7 @@ *anonymous function 16598* = (...) => {"type": "top_specification", "value": arguments[0]} *anonymous function 16713* = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached *anonymous function 16837* = (...) => (???*0* | []) - *0* spread is not supported @@ -297,7 +299,7 @@ *anonymous function 7527* = (...) => {"type": "boolean_constant", "value": true} *anonymous function 7869* = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached *anonymous function 804* = (...) => `[${("^" | "")}]` @@ -745,15 +747,15 @@ literalEscape = (...) => ???*0*(/[\x10-\x1F\x7F-\x9F]/g, (...) => ???*8*) ⚠️ Nested operation location#21 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached location#3 = arguments[3] location#75 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached location#76 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached location#83 = arguments[1] @@ -884,7 +886,7 @@ peg$c122 = "@" peg$c123 = {"type": "literal", "text": "@", "ignoreCase": false} peg$c124 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$c125 = "+" @@ -901,7 +903,7 @@ peg$c13 = (...) => arguments[1] peg$c130 = {"type": "literal", "text": "\", "ignoreCase": false} peg$c131 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$c132 = (...) => arguments[0] @@ -942,7 +944,7 @@ peg$c147 = {"type": "literal", "text": "t", "ignoreCase": false} peg$c148 = (...) => " " peg$c149 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$c15 = (...) => arguments[1] @@ -978,9 +980,11 @@ peg$c16 = (...) => {"type": "from_specification", "source": arguments[0], "joins peg$c160 = (...) => {"type": "scalar_subquery_expression", "expression": arguments[0]} -peg$c161 = (...) => {"property": arguments[1], "computed": false} +peg$c161 = ???*0* +- *0* in progress nodes limit reached -peg$c162 = (...) => {"property": arguments[1], "computed": true} +peg$c162 = ???*0* +- *0* in progress nodes limit reached peg$c163 = (...) => ???*0*( (...) => {"type": "scalar_member_expression", "object": ???*1*, "property": ???*2*, "computed": ???*3*}, @@ -1137,7 +1141,7 @@ peg$c210 = (...) => {"type": "collection_subquery_expression", "expression": arg peg$c211 = (...) => {"type": "top_specification", "value": arguments[0]} peg$c212 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$c213 = (...) => (???*0* | []) - *0* spread is not supported @@ -1221,7 +1225,7 @@ peg$c51 = /^[0-9]/ peg$c52 = {"type": "class", "parts": [["0", "9"]], "inverted": false, "ignoreCase": false} peg$c53 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$c54 = """ @@ -1391,7 +1395,7 @@ peg$computePosDetails = (...) => ( ⚠️ circular variable reference peg$currPos = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$endExpectation = (...) => {"type": "end"} @@ -1404,305 +1408,305 @@ peg$literalExpectation = (...) => {"type": "literal", "text": arguments[0], "ign peg$maxFailExpected = [] peg$maxFailPos = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$otherExpectation = (...) => {"type": "other", "description": arguments[0]} peg$parse = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parse_ = (...) => (???*0* | []) - *0* s0 ⚠️ pattern without value peg$parseand = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsearray = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsearray_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsearray_subquery_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseas = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseasc = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsebetween = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseboolean_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseby = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecharactor_escape_sequence = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecollection_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecollection_member_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecollection_primary_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecollection_subquery_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsecomment = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseconstant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsedesc = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsedouble_string_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseescape_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseescape_sequence = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseexists = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseexists_subquery_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsefalse = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsefilter_condition = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsefrom = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsefrom_source = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsefrom_specification = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsehex_digit = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseidentifier = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseidentifier_name = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseidentifier_start = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsein = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsejoin = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsenon_escape_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsenot = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsenull = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsenull_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsenumber_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseobject_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseobject_constant_property = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseobject_property = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseobject_property_list = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseor = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseorder = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseparameter_name = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsereserved = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_array_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_between_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_additive_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_and_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_bitwise_and_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_bitwise_or_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_bitwise_xor_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_equality_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_multiplicative_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_or_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_relational_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_binary_shift_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_conditional_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_expression_list = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_function_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_in_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_member_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_object_element_property = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_object_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_primary_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_subquery_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsescalar_unary_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseselect = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseselect_query = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseselect_specification = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesingle_escape_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesingle_string_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesort_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesort_specification = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesource_character = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesql = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsestring_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesubquery = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsesubquery_expression = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsetop = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsetop_specification = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsetrue = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseudf = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseunary_operator = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseundefined_constant = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseunicode_escape_sequence = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parseunsigned_integer = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsevalue = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsewhere = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$parsewhitespace = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$posDetailsCache = [{"line": 1, "column": 1}] peg$result = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$savedPos = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$silentFails = 0 peg$startRuleFunction = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$startRuleFunctions = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached peg$subclass = (...) => ???*0* - *0* FreeVar(undefined) @@ -1729,290 +1733,290 @@ s#12 = arguments[0] s#15 = arguments[0] s0#100 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#101 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#102 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#103 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#106 = (???*0* | []) - *0* s0 ⚠️ pattern without value s0#107 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#108 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#109 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#110 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#111 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#112 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#113 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#114 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#115 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#116 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#117 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#118 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#119 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#120 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#121 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#122 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#123 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#124 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#125 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#126 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#127 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#128 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#129 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#130 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#131 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#132 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#133 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#134 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#135 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#136 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#137 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#138 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#139 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#140 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#141 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#142 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#143 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#144 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#146 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#148 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#149 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#150 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#151 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#152 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#153 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#154 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#155 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#158 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#159 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#160 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#162 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#163 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#164 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#165 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#166 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#167 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#168 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#169 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#170 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#171 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#172 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#173 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#174 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#175 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#176 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#85 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#87 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#88 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#91 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#92 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#93 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#94 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#95 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#97 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#98 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s0#99 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#100 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#101 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#102 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#103 = (???*0* | """ | {} | {"type": "string_constant", "value": ???*1*("")} | "'") - *0* s1 @@ -2021,13 +2025,13 @@ s1#103 = (???*0* | """ | {} | {"type": "string_constant", "value": ???*1*("")} | ⚠️ Nested operation s1#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#106 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#108 = ( | ???*0* @@ -2047,85 +2051,85 @@ s1#108 = ( ⚠️ pattern without value s1#109 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#110 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#111 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#112 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#113 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#114 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#115 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#116 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#117 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#118 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#119 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#120 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#121 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#122 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#123 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#124 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#125 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#126 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#127 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#128 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#129 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#130 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#132 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#134 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#135 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#137 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#138 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#142 = ( | ???*0* @@ -2146,168 +2150,168 @@ s1#142 = ( ⚠️ pattern without value s1#143 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#148 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#150 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#151 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#152 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#153 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#154 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#155 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#158 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#159 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#160 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#162 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#163 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#164 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#165 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#166 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#167 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#168 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#169 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#170 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#171 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#172 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#173 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#174 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#175 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#176 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#85 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#87 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#88 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#92 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#93 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#94 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#95 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#97 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s1#99 = (???*0* | "undefined" | {} | {"type": "undefined_constant"}) - *0* s1 ⚠️ pattern without value s10#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s10#95 = (???*0* | []) - *0* s10 ⚠️ pattern without value s11#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s11#95 = (???*0* | ")" | {}) - *0* s11 ⚠️ pattern without value s12 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s13 = (???*0* | []) - *0* s13 ⚠️ pattern without value s14 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s15 = (???*0* | []) - *0* s15 ⚠️ pattern without value s16 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#102 = (???*0* | "0x" | {} | null) - *0* s2 @@ -2330,95 +2334,95 @@ s2#108 = (???*0* | []) ⚠️ pattern without value s2#109 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#110 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#111 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#112 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#113 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#114 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#115 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#116 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#117 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#118 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#119 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#120 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#121 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#122 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#123 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#124 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#125 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#126 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#127 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#128 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#129 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#130 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#132 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#134 = (???*0* | []) - *0* s2 ⚠️ pattern without value s2#135 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#137 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#138 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#143 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#148 = (???*0* | []) - *0* s2 @@ -2505,7 +2509,7 @@ s2#171 = (???*0* | [] | {}) ⚠️ pattern without value s2#174 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#175 = (???*0* | []) - *0* s2 @@ -2516,7 +2520,7 @@ s2#176 = (???*0* | []) ⚠️ pattern without value s2#85 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#86 = (???*0* | []) - *0* s2 @@ -2535,14 +2539,14 @@ s2#89 = (???*0* | []) ⚠️ pattern without value s2#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#93 = (???*0* | []) - *0* s2 ⚠️ pattern without value s2#94 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s2#95 = (???*0* | []) - *0* s2 @@ -2561,146 +2565,146 @@ s3#102 = (???*0* | [] | {}) ⚠️ pattern without value s3#103 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#108 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#109 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#110 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#111 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#112 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#113 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#114 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#115 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#116 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#117 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#118 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#119 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#120 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#121 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#122 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#123 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#124 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#125 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#126 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#127 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#128 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#129 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#130 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#134 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#148 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#150 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#151 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#153 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#154 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#155 = (???*0* | "?" | {}) - *0* s3 ⚠️ pattern without value s3#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#158 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#159 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#160 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#162 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#163 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#164 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#165 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#166 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#167 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#168 = (???*0* | ":" | {}) - *0* s3 @@ -2711,51 +2715,51 @@ s3#169 = (???*0* | ":" | {}) ⚠️ pattern without value s3#171 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#175 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#176 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#85 = (???*0* | []) - *0* s3 ⚠️ pattern without value s3#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#87 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#88 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#93 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#94 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#95 = (???*0* | "." | {} | "(") - *0* s3 ⚠️ pattern without value s3#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s3#97 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#102 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#104 = (???*0* | []) - *0* s4 @@ -2766,36 +2770,36 @@ s4#105 = (???*0* | []) ⚠️ pattern without value s4#108 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#148 = (???*0* | []) - *0* s4 ⚠️ pattern without value s4#153 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#155 = (???*0* | []) - *0* s4 ⚠️ pattern without value s4#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#158 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#159 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#160 = (???*0* | []) - *0* s4 @@ -2806,22 +2810,22 @@ s4#161 = (???*0* | []) ⚠️ pattern without value s4#162 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#163 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#164 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#165 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#166 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#167 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#168 = (???*0* | []) - *0* s4 @@ -2832,32 +2836,32 @@ s4#169 = (???*0* | []) ⚠️ pattern without value s4#171 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#175 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#176 = (???*0* | []) - *0* s4 ⚠️ pattern without value s4#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#88 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#93 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#94 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s4#95 = (???*0* | []) - *0* s4 @@ -2889,19 +2893,19 @@ s5#102 = ( ⚠️ pattern without value s5#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#108 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#147 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#148 = (???*0* | ")" | {}) - *0* s5 @@ -2912,13 +2916,13 @@ s5#153 = (???*0* | "." | {} | "[") ⚠️ pattern without value s5#155 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#158 = (???*0* | "=" | {} | "!=" | "<>") - *0* s5 @@ -2933,7 +2937,7 @@ s5#160 = (???*0* | "(" | {}) ⚠️ pattern without value s5#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#162 = (???*0* | "|" | {}) - *0* s5 @@ -2955,15 +2959,16 @@ s5#166 = (???*0* | "+" | {} | "-" | "||") - *0* s5 ⚠️ pattern without value -s5#167 = (???*0* | "*" | {} | "/" | "%") +s5#167 = (???*0* | "*" | {} | ???*1*) - *0* s5 ⚠️ pattern without value +- *1* in progress nodes limit reached s5#168 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#169 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#171 = (???*0* | "." | {} | "[") - *0* s5 @@ -2978,27 +2983,27 @@ s5#176 = (???*0* | ")" | {}) ⚠️ pattern without value s5#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#88 = (???*0* | "," | {}) - *0* s5 ⚠️ pattern without value s5#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#90 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#93 = (???*0* | "," | {}) - *0* s5 ⚠️ pattern without value s5#95 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s5#97 = (???*0* | "]" | {}) - *0* s5 @@ -3009,13 +3014,13 @@ s6#102 = (???*0* | [] | {}) ⚠️ pattern without value s6#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s6#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s6#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s6#153 = (???*0* | []) - *0* s6 @@ -3082,7 +3087,7 @@ s6#175 = (???*0* | []) ⚠️ pattern without value s6#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s6#88 = (???*0* | []) - *0* s6 @@ -3101,10 +3106,10 @@ s6#95 = (???*0* | []) ⚠️ pattern without value s6#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#102 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#104 = (???*0* | "," | {}) - *0* s7 @@ -3115,68 +3120,68 @@ s7#105 = (???*0* | "," | {}) ⚠️ pattern without value s7#145 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#153 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#155 = (???*0* | ":" | {}) - *0* s7 ⚠️ pattern without value s7#156 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#157 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#158 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#159 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#160 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#162 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#163 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#164 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#165 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#166 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#167 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#171 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#175 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#88 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#89 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#93 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s7#95 = (???*0* | "(" | {} | ")") - *0* s7 @@ -3215,7 +3220,7 @@ s8#171 = (???*0* | []) ⚠️ pattern without value s8#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s8#95 = (???*0* | []) - *0* s8 @@ -3226,37 +3231,37 @@ s8#96 = (???*0* | []) ⚠️ pattern without value s9#104 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#105 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#153 = (???*0* | "]" | {}) - *0* s9 ⚠️ pattern without value s9#155 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#160 = (???*0* | ")" | {}) - *0* s9 ⚠️ pattern without value s9#161 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#171 = (???*0* | "]" | {}) - *0* s9 ⚠️ pattern without value s9#86 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#95 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached s9#96 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached select#24 = arguments[1] @@ -3313,7 +3318,7 @@ tail#73 = arguments[1] test = arguments[0] text#21 = ???*0* -- *0* in progress nodes limit reached +- *0* max number of linking steps reached text#77 = arguments[0] From 1a5cc043aa4f01e66c3f529b5726356eef9e6764 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 30 Jan 2023 09:59:09 +0100 Subject: [PATCH 05/27] cleanup, review --- .../turbopack/basic/comptime/index.js | 3 + .../src/analyzer/builtin.rs | 24 ++-- .../src/analyzer/graph.rs | 4 +- .../turbopack-ecmascript/src/analyzer/mod.rs | 13 +++ .../src/references/mod.rs | 106 ++++++++++-------- 5 files changed, 85 insertions(+), 65 deletions(-) diff --git a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js index af1c0632c3a0b..16fee4f1790c2 100644 --- a/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js +++ b/crates/next-dev-tests/tests/integration/turbopack/basic/comptime/index.js @@ -36,11 +36,14 @@ it("should allow replacements in IIFEs", () => { }); it("should evaluate process.turbopack", () => { + let ok = false; if (process.turbopack) { + ok = true; } else { require("fail"); import("fail"); } + expect(ok).toBe(true); }); it("should evaluate !process.turbopack", () => { diff --git a/crates/turbopack-ecmascript/src/analyzer/builtin.rs b/crates/turbopack-ecmascript/src/analyzer/builtin.rs index 7d178f4a3f539..a34fe052874ef 100644 --- a/crates/turbopack-ecmascript/src/analyzer/builtin.rs +++ b/crates/turbopack-ecmascript/src/analyzer/builtin.rs @@ -3,8 +3,6 @@ use std::{mem::take, sync::Arc}; use super::{ConstantNumber, ConstantValue, JsValue, LogicalOperator, ObjectPart}; use crate::analyzer::FreeVarKind; -const ARRAY_METHODS: [&str; 2] = ["concat", "map"]; - pub fn replace_builtin(value: &mut JsValue) -> bool { match value { // Accessing a property on something can be handled in some cases @@ -43,12 +41,7 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { true } } - JsValue::Constant(c) => { - // if let Some(s) = c.as_str() { - // if ARRAY_METHODS.iter().any(|method| *method == s) { - // return false; - // } - // } + JsValue::Constant(_) => { value.make_unknown("non-num constant property on array"); true } @@ -279,10 +272,12 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { JsValue::Logical(_, op, ref mut parts) => { let len = parts.len(); for (i, part) in take(parts).into_iter().enumerate() { + // The last part is never skipped. if i == len - 1 { parts.push(part); break; } + // We might know at compile-time if a part is skipped or the final value. let skip_part = match op { LogicalOperator::And => part.is_truthy(), LogicalOperator::Or => part.is_falsy(), @@ -290,28 +285,29 @@ pub fn replace_builtin(value: &mut JsValue) -> bool { }; match skip_part { Some(true) => { + // We known this part is skipped, so we can remove it. continue; } Some(false) => { + // We known this part is the final value, so we can remove the rest. parts.push(part); break; } None => { + // We don't know if this part is skipped or the final value, so we keep it. parts.push(part); continue; } } } + // If we reduced the expression to a single value, we can replace it. if parts.len() == 1 { *value = parts.pop().unwrap(); true } else { - if parts.iter().all(|part| !part.has_placeholder()) { - *value = JsValue::alternatives(take(parts)); - true - } else { - parts.len() != len - } + // If not, we known that it will be one of the remaining values. + *value = JsValue::alternatives(take(parts)); + true } } // Evaluate not when the inner value is truthy or falsy diff --git a/crates/turbopack-ecmascript/src/analyzer/graph.rs b/crates/turbopack-ecmascript/src/analyzer/graph.rs index f40e5e8bc29ac..89a9ccde856d2 100644 --- a/crates/turbopack-ecmascript/src/analyzer/graph.rs +++ b/crates/turbopack-ecmascript/src/analyzer/graph.rs @@ -86,8 +86,8 @@ impl ConditionalKind { #[derive(Debug, Clone)] pub enum Effect { - /// Some condition which effects which effects might be executed. When the - /// condition evaluates to something compile-time constant we can use that + /// Some condition which affects which effects might be executed. If the + /// condition evaluates to some compile-time constant, we can use that /// to determine which effects are executed and remove the others. Conditional { condition: JsValue, diff --git a/crates/turbopack-ecmascript/src/analyzer/mod.rs b/crates/turbopack-ecmascript/src/analyzer/mod.rs index 76f792adc053d..e11e6806b0c55 100644 --- a/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -1490,6 +1490,8 @@ impl JsValue { } } +/// Compute the compile-time value of all elements of the list. If all evaluate +/// to the same value return that. Otherwise return None. fn merge_if_known( list: impl IntoIterator, func: impl Fn(T) -> Option, @@ -1509,6 +1511,9 @@ fn merge_if_known( current } +/// Evaluates all elements of the list and returns Some(true) if all elements +/// are compile-time true. If any element is compile-time false, return +/// Some(false). Otherwise return None. fn all_if_known( list: impl IntoIterator, func: impl Fn(T) -> Option, @@ -1528,6 +1533,9 @@ fn all_if_known( } } +/// Evaluates all elements of the list and returns Some(true) if any element is +/// compile-time true. If all elements are compile-time false, return +/// Some(false). Otherwise return None. fn any_if_known( list: impl IntoIterator, func: impl Fn(T) -> Option, @@ -1535,6 +1543,8 @@ fn any_if_known( all_if_known(list, |x| func(x).map(|x| !x)).map(|x| !x) } +/// Selects the first element of the list where `use_item` is compile-time true. +/// For this element returns the result of `item_value`. Otherwise returns None. fn shortcircut_if_known( list: impl IntoIterator, use_item: impl Fn(T) -> Option, @@ -2098,6 +2108,8 @@ impl JsValue { } } JsValue::Logical(_, op, list) => { + // Nested logical expressions can be normalized: e. g. `a && (b && c)` => `a && + // b && c` if list.iter().any(|v| { if let JsValue::Logical(_, inner_op, _) = v { inner_op == op @@ -2105,6 +2117,7 @@ impl JsValue { false } }) { + // Taking the old list and constructing a new merged list for mut v in take(list).into_iter() { if let JsValue::Logical(_, inner_op, inner_list) = &mut v { if inner_op == op { diff --git a/crates/turbopack-ecmascript/src/references/mod.rs b/crates/turbopack-ecmascript/src/references/mod.rs index 3a389b6e577a8..6b1afe4c8c3ce 100644 --- a/crates/turbopack-ecmascript/src/references/mod.rs +++ b/crates/turbopack-ecmascript/src/references/mod.rs @@ -1082,10 +1082,14 @@ pub(crate) async fn analyze_ecmascript_module( // the object allocation. let mut first_import_meta = true; - let mut queue = Vec::new(); - queue.extend(effects.into_iter().rev()); - - while let Some(effect) = queue.pop() { + // This is a stack of effects to process. We use a stack since during processing + // of an effect we might want to add more effects into the middle of the + // processing. Using a stack where effects are appended in reverse + // order allows us to do that. It's recursion implemented as Stack. + let mut queue_stack = Vec::new(); + queue_stack.extend(effects.into_iter().rev()); + + while let Some(effect) = queue_stack.pop() { match effect { Effect::Conditional { condition, @@ -1111,76 +1115,80 @@ pub(crate) async fn analyze_ecmascript_module( } macro_rules! active { ($block:ident) => { - queue.extend($block.effects.into_iter().rev()); + queue_stack.extend($block.effects.into_iter().rev()); }; } match *kind { - ConditionalKind::If { then } => { - if let Some(value) = condition.is_truthy() { - if value { - condition!(ConstantConditionValue::Truthy); - active!(then); - } else { - condition!(ConstantConditionValue::Falsy); - inactive!(then); - } - } else { + ConditionalKind::If { then } => match condition.is_truthy() { + Some(true) => { + condition!(ConstantConditionValue::Truthy); active!(then); } - } + Some(false) => { + condition!(ConstantConditionValue::Falsy); + inactive!(then); + } + None => { + active!(then); + } + }, ConditionalKind::IfElse { then, r#else } | ConditionalKind::Ternary { then, r#else } => { - if let Some(value) = condition.is_truthy() { - if value { + match condition.is_truthy() { + Some(true) => { condition!(ConstantConditionValue::Truthy); active!(then); inactive!(r#else); - } else { + } + Some(false) => { condition!(ConstantConditionValue::Falsy); active!(r#else); inactive!(then); } - } else { - active!(then); - active!(r#else); + None => { + active!(then); + active!(r#else); + } } } - ConditionalKind::And { expr } => { - if let Some(value) = condition.is_truthy() { - if value { - condition!(ConstantConditionValue::Truthy); - active!(expr); - } else { - // The condition value need to stay since it's used - inactive!(expr); - } - } else { + ConditionalKind::And { expr } => match condition.is_truthy() { + Some(true) => { + condition!(ConstantConditionValue::Truthy); active!(expr); } - } - ConditionalKind::Or { expr } => { - if let Some(value) = condition.is_truthy() { - if value { - // The condition value need to stay since it's used - inactive!(expr); - } else { - condition!(ConstantConditionValue::Falsy); - active!(expr); - } - } else { + Some(false) => { + // The condition value need to stay since it's used + inactive!(expr); + } + None => { active!(expr); } - } + }, + ConditionalKind::Or { expr } => match condition.is_truthy() { + Some(true) => { + // The condition value need to stay since it's used + inactive!(expr); + } + Some(false) => { + condition!(ConstantConditionValue::Falsy); + active!(expr); + } + None => { + active!(expr); + } + }, ConditionalKind::NullishCoalescing { expr } => { - if let Some(value) = condition.is_nullish() { - if value { + match condition.is_nullish() { + Some(true) => { condition!(ConstantConditionValue::Nullish); active!(expr); - } else { + } + Some(false) => { inactive!(expr); } - } else { - active!(expr); + None => { + active!(expr); + } } } } From f557ee3b62c103333090441f6954d6bc5b11aa62 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 30 Jan 2023 13:40:42 +0100 Subject: [PATCH 06/27] add react-dom test case --- .../turbopack-ecmascript/src/analyzer/mod.rs | 19 +- .../analyzer/graph/md5/graph-effects.snapshot | 19214 --------- .../tests/analyzer/graph/md5/graph.snapshot | 5921 --- .../tests/analyzer/graph/md5/large | 0 .../graph-explained.snapshot | 6141 +++ .../graph/react-dom-production/input.js | 8453 ++++ .../analyzer/graph/react-dom-production/large | 0 .../resolved-explained.snapshot | 32278 ++++++++++++++++ 8 files changed, 46885 insertions(+), 25141 deletions(-) delete mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph-effects.snapshot delete mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/md5/large create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/graph-explained.snapshot create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/input.js create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/large create mode 100644 crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/resolved-explained.snapshot diff --git a/crates/turbopack-ecmascript/src/analyzer/mod.rs b/crates/turbopack-ecmascript/src/analyzer/mod.rs index e11e6806b0c55..94142fa0fdae1 100644 --- a/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -2493,6 +2493,7 @@ mod tests { let graph_explained_snapshot_path = input.with_file_name("graph-explained.snapshot"); let graph_effects_snapshot_path = input.with_file_name("graph-effects.snapshot"); let resolved_explained_snapshot_path = input.with_file_name("resolved-explained.snapshot"); + let large_marker = input.with_file_name("large"); run_test(false, |cm, handler| { let r = tokio::runtime::Builder::new_current_thread() @@ -2547,15 +2548,21 @@ mod tests { { // Dump snapshot of graph - NormalizedOutput::from(format!("{:#?}", named_values)) - .compare_to_file(&graph_snapshot_path) - .unwrap(); + let large = large_marker.exists(); + + if !large { + NormalizedOutput::from(format!("{:#?}", named_values)) + .compare_to_file(&graph_snapshot_path) + .unwrap(); + } NormalizedOutput::from(explain_all(&named_values)) .compare_to_file(&graph_explained_snapshot_path) .unwrap(); - NormalizedOutput::from(format!("{:#?}", var_graph.effects)) - .compare_to_file(&graph_effects_snapshot_path) - .unwrap(); + if !large { + NormalizedOutput::from(format!("{:#?}", var_graph.effects)) + .compare_to_file(&graph_effects_snapshot_path) + .unwrap(); + } } { diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph-effects.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph-effects.snapshot deleted file mode 100644 index 4c725c53627af..0000000000000 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph-effects.snapshot +++ /dev/null @@ -1,19214 +0,0 @@ -[ - Call { - func: FreeVar( - Other( - Atom('unescape' type=dynamic), - ), - ), - args: [ - Call( - 3, - FreeVar( - Other( - Atom('encodeURIComponent' type=dynamic), - ), - ), - [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 697, - ), - hi: BytePos( - 732, - ), - ctxt: #0, - }, - }, - Call { - func: FreeVar( - Other( - Atom('encodeURIComponent' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 706, - ), - hi: BytePos( - 731, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('msg' type=inline), - #2, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - New, - ), - NewExpr( - Args, - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 771, - ), - hi: BytePos( - 781, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('msg' type=inline), - #2, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - For, - ), - ForStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 808, - ), - hi: BytePos( - 818, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #2, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 825, - ), - hi: BytePos( - 833, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('msg' type=inline), - #2, - ), - ), - prop: Constant( - StrWord( - Atom('charCodeAt' type=dynamic), - ), - ), - args: [ - Variable( - ( - Atom('i' type=static), - #2, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 836, - ), - hi: BytePos( - 853, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('msg' type=inline), - #2, - ), - ), - prop: Constant( - StrWord( - Atom('charCodeAt' type=dynamic), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - If, - ), - IfStmt( - Cons, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 836, - ), - hi: BytePos( - 850, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ToHexEncodedArray' type=dynamic), - #1, - ), - ), - args: [ - Call( - 6, - Variable( - ( - Atom('wordsToMd5' type=dynamic), - #1, - ), - ), - [ - Call( - 3, - Variable( - ( - Atom('bytesToWords' type=dynamic), - #1, - ), - ), - [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 869, - ), - hi: BytePos( - 948, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('wordsToMd5' type=dynamic), - #1, - ), - ), - args: [ - Call( - 3, - Variable( - ( - Atom('bytesToWords' type=dynamic), - #1, - ), - ), - [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 895, - ), - hi: BytePos( - 944, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('bytesToWords' type=dynamic), - #1, - ), - ), - args: [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 906, - ), - hi: BytePos( - 925, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 1, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 927, - ), - hi: BytePos( - 939, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1117, - ), - hi: BytePos( - 1129, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #4, - ), - ), - prop: Unknown( - None, - "unsupported expression", - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1230, - ), - hi: BytePos( - 1243, - ), - ctxt: #0, - }, - }, - Call { - func: FreeVar( - Other( - Atom('parseInt' type=dynamic), - ), - ), - args: [ - Add( - 9, - [ - MemberCall( - 4, - Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - ], - ), - MemberCall( - 4, - Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - ], - ), - ], - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1275, - ), - hi: BytePos( - 1364, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1291, - ), - hi: BytePos( - 1322, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1291, - ), - hi: BytePos( - 1304, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1325, - ), - hi: BytePos( - 1348, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1325, - ), - hi: BytePos( - 1338, - ), - ctxt: #0, - }, - }, - MemberCall { - obj: Variable( - ( - Atom('output' type=static), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - args: [ - Variable( - ( - Atom('hex' type=inline), - #4, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1371, - ), - hi: BytePos( - 1387, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('output' type=static), - #4, - ), - ), - prop: Constant( - StrWord( - Atom('push' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 2, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Callee, - ), - Callee( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1371, - ), - hi: BytePos( - 1382, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Unknown( - None, - "unsupported expression", - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1550, - ), - hi: BytePos( - 1561, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Unknown( - None, - "unsupported expression", - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 1, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1585, - ), - hi: BytePos( - 1618, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1792, - ), - hi: BytePos( - 1800, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1878, - ), - hi: BytePos( - 1916, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1896, - ), - hi: BytePos( - 1900, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 5, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1926, - ), - hi: BytePos( - 1969, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 5, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1944, - ), - hi: BytePos( - 1952, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 606105819.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 1979, - ), - hi: BytePos( - 2021, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 6, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 1997, - ), - hi: BytePos( - 2005, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 7, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2031, - ), - hi: BytePos( - 2075, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 7, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2049, - ), - hi: BytePos( - 2057, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 8, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2085, - ), - hi: BytePos( - 2127, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 8, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2103, - ), - hi: BytePos( - 2111, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1200080426.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 9, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2137, - ), - hi: BytePos( - 2180, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 9, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2155, - ), - hi: BytePos( - 2163, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 10, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2190, - ), - hi: BytePos( - 2234, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 10, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2208, - ), - hi: BytePos( - 2216, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2244, - ), - hi: BytePos( - 2286, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2262, - ), - hi: BytePos( - 2270, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1770035416.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2296, - ), - hi: BytePos( - 2338, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 12, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2314, - ), - hi: BytePos( - 2322, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 13, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2348, - ), - hi: BytePos( - 2392, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 13, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2366, - ), - hi: BytePos( - 2374, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 14, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2402, - ), - hi: BytePos( - 2442, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 14, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2420, - ), - hi: BytePos( - 2429, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 15, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2452, - ), - hi: BytePos( - 2497, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 15, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2470, - ), - hi: BytePos( - 2479, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1804603682.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 16, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2507, - ), - hi: BytePos( - 2550, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 16, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2525, - ), - hi: BytePos( - 2534, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 17, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2560, - ), - hi: BytePos( - 2603, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 17, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2578, - ), - hi: BytePos( - 2587, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 18, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2613, - ), - hi: BytePos( - 2658, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 18, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2631, - ), - hi: BytePos( - 2640, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1236535329.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 19, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2668, - ), - hi: BytePos( - 2712, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 19, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2686, - ), - hi: BytePos( - 2695, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 20, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2723, - ), - hi: BytePos( - 2765, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 20, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2741, - ), - hi: BytePos( - 2749, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 21, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2775, - ), - hi: BytePos( - 2818, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 21, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2793, - ), - hi: BytePos( - 2801, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 643717713.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 22, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2828, - ), - hi: BytePos( - 2871, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 22, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2846, - ), - hi: BytePos( - 2855, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 23, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2881, - ), - hi: BytePos( - 2920, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 23, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2899, - ), - hi: BytePos( - 2903, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 24, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2930, - ), - hi: BytePos( - 2972, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 24, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 2948, - ), - hi: BytePos( - 2956, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 38016083.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 25, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 2982, - ), - hi: BytePos( - 3023, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 25, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3000, - ), - hi: BytePos( - 3009, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 26, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3033, - ), - hi: BytePos( - 3077, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 26, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3051, - ), - hi: BytePos( - 3060, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 27, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3087, - ), - hi: BytePos( - 3130, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 27, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3105, - ), - hi: BytePos( - 3113, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 568446438.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 28, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3140, - ), - hi: BytePos( - 3181, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 28, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3158, - ), - hi: BytePos( - 3166, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 29, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3191, - ), - hi: BytePos( - 3235, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 29, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3209, - ), - hi: BytePos( - 3218, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 30, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3245, - ), - hi: BytePos( - 3288, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 30, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3263, - ), - hi: BytePos( - 3271, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1163531501.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 31, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3298, - ), - hi: BytePos( - 3341, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 31, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3316, - ), - hi: BytePos( - 3324, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 32, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3351, - ), - hi: BytePos( - 3395, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 32, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3369, - ), - hi: BytePos( - 3378, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 33, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3405, - ), - hi: BytePos( - 3446, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 33, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3423, - ), - hi: BytePos( - 3431, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1735328473.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3456, - ), - hi: BytePos( - 3499, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 34, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3474, - ), - hi: BytePos( - 3482, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 35, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3509, - ), - hi: BytePos( - 3554, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 35, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3527, - ), - hi: BytePos( - 3536, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 36, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3565, - ), - hi: BytePos( - 3604, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 36, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3583, - ), - hi: BytePos( - 3591, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 37, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3614, - ), - hi: BytePos( - 3658, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 37, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3632, - ), - hi: BytePos( - 3640, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1839030562.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 38, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3668, - ), - hi: BytePos( - 3712, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 38, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3686, - ), - hi: BytePos( - 3695, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 39, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3722, - ), - hi: BytePos( - 3765, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 39, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3740, - ), - hi: BytePos( - 3749, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3775, - ), - hi: BytePos( - 3818, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 40, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3793, - ), - hi: BytePos( - 3801, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1272893353.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 41, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3828, - ), - hi: BytePos( - 3871, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 41, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3846, - ), - hi: BytePos( - 3854, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 42, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3881, - ), - hi: BytePos( - 3924, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 42, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3899, - ), - hi: BytePos( - 3907, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 43, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3934, - ), - hi: BytePos( - 3979, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 43, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 3952, - ), - hi: BytePos( - 3961, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 681279174.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 44, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 3989, - ), - hi: BytePos( - 4031, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 44, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4007, - ), - hi: BytePos( - 4016, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 45, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4041, - ), - hi: BytePos( - 4080, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 45, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4059, - ), - hi: BytePos( - 4063, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 46, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4090, - ), - hi: BytePos( - 4133, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 46, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4108, - ), - hi: BytePos( - 4116, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 76029189.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 47, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4143, - ), - hi: BytePos( - 4184, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 47, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4161, - ), - hi: BytePos( - 4169, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 48, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4194, - ), - hi: BytePos( - 4236, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 48, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4212, - ), - hi: BytePos( - 4220, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 49, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4246, - ), - hi: BytePos( - 4290, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 49, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4264, - ), - hi: BytePos( - 4273, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 530742520.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 50, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4300, - ), - hi: BytePos( - 4343, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 50, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4318, - ), - hi: BytePos( - 4327, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 51, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4353, - ), - hi: BytePos( - 4396, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 51, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4371, - ), - hi: BytePos( - 4379, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 52, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4407, - ), - hi: BytePos( - 4445, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 52, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4425, - ), - hi: BytePos( - 4429, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1126891415.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 53, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4455, - ), - hi: BytePos( - 4498, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 53, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4473, - ), - hi: BytePos( - 4481, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 54, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4508, - ), - hi: BytePos( - 4553, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 54, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4526, - ), - hi: BytePos( - 4535, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 55, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4563, - ), - hi: BytePos( - 4605, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 55, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4581, - ), - hi: BytePos( - 4589, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1700485571.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 56, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4615, - ), - hi: BytePos( - 4658, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 56, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4633, - ), - hi: BytePos( - 4642, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 57, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4668, - ), - hi: BytePos( - 4712, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 57, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4686, - ), - hi: BytePos( - 4694, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 58, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4722, - ), - hi: BytePos( - 4764, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 58, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4740, - ), - hi: BytePos( - 4749, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 59, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4774, - ), - hi: BytePos( - 4818, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 59, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4792, - ), - hi: BytePos( - 4800, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1873313359.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 60, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4828, - ), - hi: BytePos( - 4870, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 60, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4846, - ), - hi: BytePos( - 4854, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 61, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4880, - ), - hi: BytePos( - 4923, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 61, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4898, - ), - hi: BytePos( - 4907, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 62, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4933, - ), - hi: BytePos( - 4977, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 62, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 4951, - ), - hi: BytePos( - 4959, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1309151649.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 63, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 4987, - ), - hi: BytePos( - 5031, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 63, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5005, - ), - hi: BytePos( - 5014, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 64, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5041, - ), - hi: BytePos( - 5083, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 64, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5059, - ), - hi: BytePos( - 5067, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 65, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5093, - ), - hi: BytePos( - 5138, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 65, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5111, - ), - hi: BytePos( - 5120, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 718787259.0, - ), - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5148, - ), - hi: BytePos( - 5190, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 66, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5166, - ), - hi: BytePos( - 5174, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 67, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5200, - ), - hi: BytePos( - 5243, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('x' type=static), - #5, - ), - ), - prop: Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 67, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - CallExpr( - Args( - 4, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5218, - ), - hi: BytePos( - 5226, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('olda' type=inline), - #5, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 68, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5254, - ), - hi: BytePos( - 5270, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('oldb' type=inline), - #5, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 69, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5280, - ), - hi: BytePos( - 5296, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('oldc' type=inline), - #5, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 70, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5306, - ), - hi: BytePos( - 5322, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('oldd' type=inline), - #5, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 3, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 11, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 71, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 5332, - ), - hi: BytePos( - 5348, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('output' type=static), - #6, - ), - ), - prop: Unknown( - None, - "unsupported expression", - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5567, - ), - hi: BytePos( - 5598, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #6, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 2, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - MemberExpr( - Prop, - ), - MemberProp( - Computed, - ), - ComputedPropName( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5575, - ), - hi: BytePos( - 5587, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('output' type=static), - #6, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - For, - ), - ForStmt( - Test, - ), - Expr( - Bin, - ), - BinExpr( - Right, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5630, - ), - hi: BytePos( - 5643, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('output' type=static), - #6, - ), - ), - prop: Variable( - ( - Atom('i' type=static), - #6, - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 3, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5659, - ), - hi: BytePos( - 5668, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #6, - ), - ), - prop: Constant( - StrWord( - Atom('length' type=static), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Var, - ), - VarDecl( - Decls( - 0, - ), - ), - VarDeclarator( - Init, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5694, - ), - hi: BytePos( - 5706, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('output' type=static), - #6, - ), - ), - prop: Unknown( - None, - "unsupported expression", - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 5, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5753, - ), - hi: BytePos( - 5767, - ), - ctxt: #0, - }, - }, - Member { - obj: Variable( - ( - Atom('input' type=static), - #6, - ), - ), - prop: Unknown( - None, - "unsupported expression", - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 4, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 5, - ), - ), - Stmt( - For, - ), - ForStmt( - Body, - ), - Stmt( - Block, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Right, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Paren, - ), - ParenExpr( - Expr, - ), - Expr( - Bin, - ), - BinExpr( - Left, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 5772, - ), - hi: BytePos( - 5784, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Call( - 13, - Variable( - ( - Atom('bitRotateLeft' type=dynamic), - #1, - ), - ), - [ - Call( - 10, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #9, - ), - ), - Variable( - ( - Atom('q' type=static), - #9, - ), - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('x' type=static), - #9, - ), - ), - Variable( - ( - Atom('t' type=inline), - #9, - ), - ), - ], - ), - ], - ), - Variable( - ( - Atom('s' type=static), - #9, - ), - ), - ], - ), - Variable( - ( - Atom('b' type=static), - #9, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6380, - ), - hi: BytePos( - 6447, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('bitRotateLeft' type=dynamic), - #1, - ), - ), - args: [ - Call( - 10, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #9, - ), - ), - Variable( - ( - Atom('q' type=static), - #9, - ), - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('x' type=static), - #9, - ), - ), - Variable( - ( - Atom('t' type=inline), - #9, - ), - ), - ], - ), - ], - ), - Variable( - ( - Atom('s' type=static), - #9, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6388, - ), - hi: BytePos( - 6443, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #9, - ), - ), - Variable( - ( - Atom('q' type=static), - #9, - ), - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('x' type=static), - #9, - ), - ), - Variable( - ( - Atom('t' type=inline), - #9, - ), - ), - ], - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6402, - ), - hi: BytePos( - 6439, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('a' type=static), - #9, - ), - ), - Variable( - ( - Atom('q' type=static), - #9, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6410, - ), - hi: BytePos( - 6423, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - args: [ - Variable( - ( - Atom('x' type=static), - #9, - ), - ), - Variable( - ( - Atom('t' type=inline), - #9, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 7, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 0, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - CallExpr( - Args( - 1, - ), - ), - ExprOrSpread( - Expr, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6425, - ), - hi: BytePos( - 6438, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #10, - ), - ), - Variable( - ( - Atom('b' type=static), - #10, - ), - ), - Variable( - ( - Atom('x' type=static), - #10, - ), - ), - Variable( - ( - Atom('s' type=static), - #10, - ), - ), - Variable( - ( - Atom('t' type=inline), - #10, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 8, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6498, - ), - hi: BytePos( - 6539, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #11, - ), - ), - Variable( - ( - Atom('b' type=static), - #11, - ), - ), - Variable( - ( - Atom('x' type=static), - #11, - ), - ), - Variable( - ( - Atom('s' type=static), - #11, - ), - ), - Variable( - ( - Atom('t' type=inline), - #11, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 9, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6590, - ), - hi: BytePos( - 6631, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #12, - ), - ), - Variable( - ( - Atom('b' type=static), - #12, - ), - ), - Variable( - ( - Atom('x' type=static), - #12, - ), - ), - Variable( - ( - Atom('s' type=static), - #12, - ), - ), - Variable( - ( - Atom('t' type=inline), - #12, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 10, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6682, - ), - hi: BytePos( - 6714, - ), - ctxt: #0, - }, - }, - Call { - func: Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - args: [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #13, - ), - ), - Variable( - ( - Atom('b' type=static), - #13, - ), - ), - Variable( - ( - Atom('x' type=static), - #13, - ), - ), - Variable( - ( - Atom('s' type=static), - #13, - ), - ), - Variable( - ( - Atom('t' type=inline), - #13, - ), - ), - ], - ast_path: [ - Program( - Script, - ), - Script( - Body( - 11, - ), - ), - Stmt( - Decl, - ), - Decl( - Fn, - ), - FnDecl( - Function, - ), - Function( - Body, - ), - BlockStmt( - Stmts( - 0, - ), - ), - Stmt( - Return, - ), - ReturnStmt( - Arg, - ), - Expr( - Call, - ), - ], - span: Span { - lo: BytePos( - 6765, - ), - hi: BytePos( - 6800, - ), - ctxt: #0, - }, - }, - Member { - obj: FreeVar( - Other( - Atom('module' type=static), - ), - ), - prop: Constant( - StrWord( - Atom('exports' type=inline), - ), - ), - ast_path: [ - Program( - Script, - ), - Script( - Body( - 12, - ), - ), - Stmt( - Expr, - ), - ExprStmt( - Expr, - ), - Expr( - Assign, - ), - AssignExpr( - Left, - ), - PatOrExpr( - Pat, - ), - Pat( - Expr, - ), - Expr( - Member, - ), - ], - span: Span { - lo: BytePos( - 6805, - ), - hi: BytePos( - 6819, - ), - ctxt: #0, - }, - }, -] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph.snapshot deleted file mode 100644 index abcaab6cce135..0000000000000 --- a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/graph.snapshot +++ /dev/null @@ -1,5921 +0,0 @@ -[ - ( - "a#10", - Argument( - 0, - ), - ), - ( - "a#11", - Argument( - 0, - ), - ), - ( - "a#12", - Argument( - 0, - ), - ), - ( - "a#13", - Argument( - 0, - ), - ), - ( - "a#5", - Alternatives( - 210, - [ - Constant( - Num( - ConstantNumber( - 1732584193.0, - ), - ), - ), - Call( - 11, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1770035416.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1804603682.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 568446438.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 681279174.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 11, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1700485571.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1873313359.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('olda' type=inline), - #5, - ), - ), - ], - ), - ], - ), - ), - ( - "a#9", - Argument( - 1, - ), - ), - ( - "b#10", - Argument( - 1, - ), - ), - ( - "b#11", - Argument( - 1, - ), - ), - ( - "b#12", - Argument( - 1, - ), - ), - ( - "b#13", - Argument( - 1, - ), - ), - ( - "b#5", - Alternatives( - 212, - [ - Unknown( - None, - "unsupported expression", - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 22.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1236535329.0, - ), - ), - ), - ], - ), - Call( - 11, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1163531501.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 20.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 76029189.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 23.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1309151649.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 21.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('oldb' type=inline), - #5, - ), - ), - ], - ), - ], - ), - ), - ( - "b#9", - Argument( - 2, - ), - ), - ( - "bitRotateLeft", - Function( - 2, - Unknown( - None, - "unsupported expression", - ), - ), - ), - ( - "bytes", - Alternatives( - 3, - [ - Argument( - 0, - ), - Unknown( - None, - "unknown new expression", - ), - ], - ), - ), - ( - "bytesToWords", - Function( - 2, - Variable( - ( - Atom('output' type=static), - #6, - ), - ), - ), - ), - ( - "c#10", - Argument( - 2, - ), - ), - ( - "c#11", - Argument( - 2, - ), - ), - ( - "c#12", - Argument( - 2, - ), - ), - ( - "c#13", - Argument( - 2, - ), - ), - ( - "c#5", - Alternatives( - 214, - [ - Unknown( - None, - "unsupported expression", - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 606105819.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 17.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 643717713.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1735328473.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1839030562.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 530742520.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 718787259.0, - ), - ), - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('oldc' type=inline), - #5, - ), - ), - ], - ), - ], - ), - ), - ( - "cnt", - Argument( - 1, - ), - ), - ( - "d#10", - Argument( - 3, - ), - ), - ( - "d#11", - Argument( - 3, - ), - ), - ( - "d#12", - Argument( - 3, - ), - ), - ( - "d#13", - Argument( - 3, - ), - ), - ( - "d#5", - Alternatives( - 212, - [ - Constant( - Num( - ConstantNumber( - 271733878.0, - ), - ), - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 1.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 5.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1200080426.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ff' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 13.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 6.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 38016083.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 14.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5gg' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 2.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 9.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 8.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 4.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1272893353.0, - ), - ), - ), - ], - ), - Call( - 11, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 3, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5hh' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 12.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 7.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Constant( - Num( - ConstantNumber( - 1126891415.0, - ), - ), - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 3.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 15.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 13, - Variable( - ( - Atom('md5ii' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Member( - 5, - Variable( - ( - Atom('x' type=static), - #5, - ), - ), - Add( - 3, - [ - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - Constant( - Num( - ConstantNumber( - 11.0, - ), - ), - ), - ], - ), - ), - Constant( - Num( - ConstantNumber( - 10.0, - ), - ), - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - Variable( - ( - Atom('oldd' type=inline), - #5, - ), - ), - ], - ), - ], - ), - ), - ( - "hex", - Alternatives( - 14, - [ - Unknown( - Some( - Variable( - ( - Atom('hex' type=inline), - #4, - ), - ), - ), - "pattern without value", - ), - Call( - 12, - FreeVar( - Other( - Atom('parseInt' type=dynamic), - ), - ), - [ - Add( - 9, - [ - MemberCall( - 4, - Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - ], - ), - MemberCall( - 4, - Variable( - ( - Atom('hexTab' type=inline), - #4, - ), - ), - Constant( - StrWord( - Atom('charAt' type=inline), - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - ], - ), - ], - ), - Constant( - Num( - ConstantNumber( - 16.0, - ), - ), - ), - ], - ), - ], - ), - ), - ( - "hexTab", - Constant( - StrWord( - Atom('0123456789abcdef' type=dynamic), - ), - ), - ), - ( - "i#2", - Constant( - Num( - ConstantNumber( - 0.0, - ), - ), - ), - ), - ( - "i#4", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('i' type=static), - #4, - ), - ), - ), - "pattern without value", - ), - Constant( - Num( - ConstantNumber( - 0.0, - ), - ), - ), - ], - ), - ), - ( - "i#5", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('i' type=static), - #5, - ), - ), - ), - "pattern without value", - ), - Constant( - Num( - ConstantNumber( - 0.0, - ), - ), - ), - ], - ), - ), - ( - "i#6", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('i' type=static), - #6, - ), - ), - ), - "pattern without value", - ), - Constant( - Num( - ConstantNumber( - 0.0, - ), - ), - ), - ], - ), - ), - ( - "input#4", - Argument( - 0, - ), - ), - ( - "input#6", - Argument( - 0, - ), - ), - ( - "len", - Argument( - 1, - ), - ), - ( - "length32", - Unknown( - None, - "unsupported expression", - ), - ), - ( - "length8", - Unknown( - None, - "unsupported expression", - ), - ), - ( - "lsw", - Add( - 3, - [ - Unknown( - None, - "unsupported expression", - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - ), - ( - "md5", - Function( - 9, - Call( - 8, - Variable( - ( - Atom('md5ToHexEncodedArray' type=dynamic), - #1, - ), - ), - [ - Call( - 6, - Variable( - ( - Atom('wordsToMd5' type=dynamic), - #1, - ), - ), - [ - Call( - 3, - Variable( - ( - Atom('bytesToWords' type=dynamic), - #1, - ), - ), - [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - ], - ), - ), - ), - ( - "md5ToHexEncodedArray", - Function( - 2, - Variable( - ( - Atom('output' type=static), - #4, - ), - ), - ), - ), - ( - "md5cmn", - Function( - 17, - Call( - 16, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Call( - 13, - Variable( - ( - Atom('bitRotateLeft' type=dynamic), - #1, - ), - ), - [ - Call( - 10, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('a' type=static), - #9, - ), - ), - Variable( - ( - Atom('q' type=static), - #9, - ), - ), - ], - ), - Call( - 4, - Variable( - ( - Atom('safeAdd' type=inline), - #1, - ), - ), - [ - Variable( - ( - Atom('x' type=static), - #9, - ), - ), - Variable( - ( - Atom('t' type=inline), - #9, - ), - ), - ], - ), - ], - ), - Variable( - ( - Atom('s' type=static), - #9, - ), - ), - ], - ), - Variable( - ( - Atom('b' type=static), - #9, - ), - ), - ], - ), - ), - ), - ( - "md5ff", - Function( - 9, - Call( - 8, - Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #10, - ), - ), - Variable( - ( - Atom('b' type=static), - #10, - ), - ), - Variable( - ( - Atom('x' type=static), - #10, - ), - ), - Variable( - ( - Atom('s' type=static), - #10, - ), - ), - Variable( - ( - Atom('t' type=inline), - #10, - ), - ), - ], - ), - ), - ), - ( - "md5gg", - Function( - 9, - Call( - 8, - Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #11, - ), - ), - Variable( - ( - Atom('b' type=static), - #11, - ), - ), - Variable( - ( - Atom('x' type=static), - #11, - ), - ), - Variable( - ( - Atom('s' type=static), - #11, - ), - ), - Variable( - ( - Atom('t' type=inline), - #11, - ), - ), - ], - ), - ), - ), - ( - "md5hh", - Function( - 9, - Call( - 8, - Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #12, - ), - ), - Variable( - ( - Atom('b' type=static), - #12, - ), - ), - Variable( - ( - Atom('x' type=static), - #12, - ), - ), - Variable( - ( - Atom('s' type=static), - #12, - ), - ), - Variable( - ( - Atom('t' type=inline), - #12, - ), - ), - ], - ), - ), - ), - ( - "md5ii", - Function( - 9, - Call( - 8, - Variable( - ( - Atom('md5cmn' type=inline), - #1, - ), - ), - [ - Unknown( - None, - "unsupported expression", - ), - Variable( - ( - Atom('a' type=static), - #13, - ), - ), - Variable( - ( - Atom('b' type=static), - #13, - ), - ), - Variable( - ( - Atom('x' type=static), - #13, - ), - ), - Variable( - ( - Atom('s' type=static), - #13, - ), - ), - Variable( - ( - Atom('t' type=inline), - #13, - ), - ), - ], - ), - ), - ), - ( - "msg", - Call( - 5, - FreeVar( - Other( - Atom('unescape' type=dynamic), - ), - ), - [ - Call( - 3, - FreeVar( - Other( - Atom('encodeURIComponent' type=dynamic), - ), - ), - [ - Variable( - ( - Atom('bytes' type=inline), - #2, - ), - ), - ], - ), - ], - ), - ), - ( - "msw", - Add( - 4, - [ - Unknown( - None, - "unsupported expression", - ), - Unknown( - None, - "unsupported expression", - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - ), - ( - "num", - Argument( - 0, - ), - ), - ( - "olda", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('olda' type=inline), - #5, - ), - ), - ), - "pattern without value", - ), - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - ], - ), - ), - ( - "oldb", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('oldb' type=inline), - #5, - ), - ), - ), - "pattern without value", - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - ], - ), - ), - ( - "oldc", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('oldc' type=inline), - #5, - ), - ), - ), - "pattern without value", - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - ], - ), - ), - ( - "oldd", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('oldd' type=inline), - #5, - ), - ), - ), - "pattern without value", - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - ], - ), - ), - ( - "output#4", - Array( - 1, - [], - ), - ), - ( - "output#6", - Array( - 1, - [], - ), - ), - ( - "q", - Argument( - 0, - ), - ), - ( - "s#10", - Argument( - 5, - ), - ), - ( - "s#11", - Argument( - 5, - ), - ), - ( - "s#12", - Argument( - 5, - ), - ), - ( - "s#13", - Argument( - 5, - ), - ), - ( - "s#9", - Argument( - 4, - ), - ), - ( - "safeAdd", - Function( - 2, - Unknown( - None, - "unsupported expression", - ), - ), - ), - ( - "t#10", - Argument( - 6, - ), - ), - ( - "t#11", - Argument( - 6, - ), - ), - ( - "t#12", - Argument( - 6, - ), - ), - ( - "t#13", - Argument( - 6, - ), - ), - ( - "t#9", - Argument( - 5, - ), - ), - ( - "wordsToMd5", - Function( - 6, - Array( - 5, - [ - Variable( - ( - Atom('a' type=static), - #5, - ), - ), - Variable( - ( - Atom('b' type=static), - #5, - ), - ), - Variable( - ( - Atom('c' type=inline), - #5, - ), - ), - Variable( - ( - Atom('d' type=static), - #5, - ), - ), - ], - ), - ), - ), - ( - "x#10", - Argument( - 4, - ), - ), - ( - "x#11", - Argument( - 4, - ), - ), - ( - "x#12", - Argument( - 4, - ), - ), - ( - "x#13", - Argument( - 4, - ), - ), - ( - "x#4", - Alternatives( - 3, - [ - Unknown( - Some( - Variable( - ( - Atom('x' type=static), - #4, - ), - ), - ), - "pattern without value", - ), - Unknown( - None, - "unsupported expression", - ), - ], - ), - ), - ( - "x#5", - Argument( - 0, - ), - ), - ( - "x#7", - Argument( - 0, - ), - ), - ( - "x#9", - Argument( - 3, - ), - ), - ( - "y", - Argument( - 1, - ), - ), -] diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/md5/large b/crates/turbopack-ecmascript/tests/analyzer/graph/md5/large new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/graph-explained.snapshot b/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/graph-explained.snapshot new file mode 100644 index 0000000000000..b17353e67bf7f --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/graph-explained.snapshot @@ -0,0 +1,6141 @@ +$a = (???*0* | nd() | he(c) | je(a, c) | ke(a, c)) +- *0* $a + ⚠️ pattern without value + +$b = (...) => (a | b | null) + +$c = (...) => FreeVar(undefined) + +$d = [9, 13, 27, 32] + +$e = Ze("animationend") + +$f = (...) => FreeVar(undefined) + +$g = ???*0* +- *0* unsupported expression + +$h = { + "readContext": Vg, + "useCallback": Bi, + "useContext": Vg, + "useEffect": ji, + "useImperativeHandle": zi, + "useInsertionEffect": wi, + "useLayoutEffect": xi, + "useMemo": Ci, + "useReducer": gi, + "useRef": si, + "useState": *anonymous function 73223*, + "useDebugValue": Ai, + "useDeferredValue": *anonymous function 73283*, + "useTransition": *anonymous function 73380*, + "useMutableSource": hi, + "useSyncExternalStore": ii, + "useId": Fi, + "unstable_isNewReconciler": ???*0* +} +- *0* unsupported expression + +$i = (...) => (null | b["child"]) + +$k = (...) => (1 | 0 | 11 | 14 | 2) + +*anonymous function 10089* = (...) => d + +*anonymous function 100988* = (...) => FreeVar(undefined) + +*anonymous function 10119* = (...) => FreeVar(undefined) + +*anonymous function 10152* = (...) => FreeVar(undefined) + +*anonymous function 108286* = (...) => FreeVar(undefined) + +*anonymous function 114743* = (...) => null + +*anonymous function 117815* = (...) => ( + | zj(a, b, c) + | b + | dj(a, b, d, e, c) + | ij(a, b, d, e, c) + | b["child"] + | null + | pj(a, b, c) + | Zi(a, b, d, e, c) + | aj(a, b, d, e, c) + | cj(a, b, b["type"], b["pendingProps"], c) + | kj(null, b, d, ???*0*, a, c) + | yj(a, b, c) + | ej(a, b, c) +) +- *0* unsupported expression + +*anonymous function 126145* = (...) => FreeVar(undefined) + +*anonymous function 126252* = (...) => FreeVar(undefined) + +*anonymous function 126382* = (...) => FreeVar(undefined) + +*anonymous function 126480* = (...) => FreeVar(undefined) + +*anonymous function 126604* = (...) => FreeVar(undefined) + +*anonymous function 127055* = (...) => FreeVar(undefined) + +*anonymous function 127285* = (...) => FreeVar(undefined) + +*anonymous function 127435* = (...) => FreeVar(undefined) + +*anonymous function 127571* = (...) => FreeVar(undefined) + +*anonymous function 127654* = (...) => FreeVar(undefined) + +*anonymous function 127846* = (...) => FreeVar(undefined) + +*anonymous function 127923* = (...) => FreeVar(undefined) + +*anonymous function 128036* = (...) => FreeVar(undefined) + +*anonymous function 128133* = (...) => C + +*anonymous function 128157* = (...) => b() + +*anonymous function 128216* = (...) => FreeVar(undefined) + +*anonymous function 129223* = (...) => (null | a["stateNode"]) + +*anonymous function 129753* = (...) => dl(a, b, null, c) + +*anonymous function 129905* = (...) => ???*0* +- *0* unknown new expression + +*anonymous function 130256* = (...) => (null | a) + +*anonymous function 130523* = (...) => Sk(a) + +*anonymous function 130565* = (...) => sl(null, a, b, ???*0*, c) +- *0* unsupported expression + +*anonymous function 130658* = (...) => ???*0* +- *0* unknown new expression + +*anonymous function 131212* = (...) => sl(null, a, b, ???*0*, c) +- *0* unsupported expression + +*anonymous function 131315* = (...) => ???*0* +- *0* unsupported expression + +*anonymous function 131389* = (...) => FreeVar(undefined) + +*anonymous function 131418* = (...) => FreeVar(undefined) + +*anonymous function 131559* = (...) => sl(a, b, c, ???*0*, d) +- *0* unsupported expression + +*anonymous function 13525* = (...) => FreeVar(undefined) + +*anonymous function 13573* = (...) => a(b, c, d, e) + +*anonymous function 13608* = (...) => FreeVar(undefined) + +*anonymous function 14731* = (...) => FreeVar(undefined) + +*anonymous function 14754* = (...) => FreeVar(undefined) + +*anonymous function 17157* = (...) => FreeVar(undefined) + +*anonymous function 17435* = (...) => FreeVar(undefined) + +*anonymous function 2285* = (...) => FreeVar(undefined) + +*anonymous function 23424* = (...) => FreeVar(undefined) + +*anonymous function 2443* = (...) => FreeVar(undefined) + +*anonymous function 2564* = (...) => FreeVar(undefined) + +*anonymous function 2705* = (...) => FreeVar(undefined) + +*anonymous function 27645* = (...) => FreeVar(undefined) + +*anonymous function 27843* = (...) => FreeVar(undefined) + +*anonymous function 28013* = (...) => FreeVar(undefined) + +*anonymous function 28108* = (...) => (a["timeStamp"] | FreeVar(Date)["now"]()) + +*anonymous function 28404* = (...) => (a["toElement"] | a["fromElement"] | a["relatedTarget"]) + +*anonymous function 28530* = (...) => (a["movementX"] | wd) + +*anonymous function 28699* = (...) => (a["movementY"] | xd) + +*anonymous function 28936* = (...) => (a["clipboardData"] | FreeVar(window)["clipboardData"]) + +*anonymous function 29891* = (...) => (b | ???*0* | Nd[a["keyCode"]] | "Unidentified" | "") +- *0* unsupported expression + +*anonymous function 3008* = (...) => FreeVar(undefined) + +*anonymous function 30217* = (...) => (od(a) | 0) + +*anonymous function 30272* = (...) => (a["keyCode"] | 0) + +*anonymous function 30346* = (...) => (od(a) | a["keyCode"] | 0) + +*anonymous function 30803* = (...) => (a["deltaX"] | ???*0* | 0) +- *0* unsupported expression + +*anonymous function 30887* = (...) => (a["deltaY"] | ???*0* | 0) +- *0* unsupported expression + +*anonymous function 3119* = (...) => FreeVar(undefined) + +*anonymous function 3196* = (...) => FreeVar(undefined) + +*anonymous function 3280* = (...) => FreeVar(undefined) + +*anonymous function 3354* = (...) => FreeVar(undefined) + +*anonymous function 39904* = (...) => FreeVar(undefined) + +*anonymous function 40883* = (...) => FreeVar(undefined) + +*anonymous function 4580* = (...) => FreeVar(undefined) + +*anonymous function 45964* = (...) => Hf["resolve"](null)["then"](a)["catch"](If) + +*anonymous function 46048* = (...) => FreeVar(undefined) + +*anonymous function 4744* = (...) => FreeVar(undefined) + +*anonymous function 4883* = (...) => FreeVar(undefined) + +*anonymous function 5021* = (...) => FreeVar(undefined) + +*anonymous function 5213* = (...) => FreeVar(undefined) + +*anonymous function 55504* = (...) => ???*0* +- *0* unsupported expression + +*anonymous function 55574* = (...) => FreeVar(undefined) + +*anonymous function 55754* = (...) => FreeVar(undefined) + +*anonymous function 55941* = (...) => FreeVar(undefined) + +*anonymous function 58064* = (...) => FreeVar(undefined) + +*anonymous function 61566* = (...) => b(e, a) + +*anonymous function 62327* = (...) => b(e, a) + +*anonymous function 67764* = (...) => FreeVar(undefined) + +*anonymous function 6811* = (...) => FreeVar(undefined) + +*anonymous function 6885* = (...) => FreeVar(undefined) + +*anonymous function 69020* = (...) => FreeVar(undefined) + +*anonymous function 69089* = (...) => FreeVar(undefined) + +*anonymous function 71076* = (...) => a + +*anonymous function 71188* = (...) => ti(4194308, 4, yi["bind"](null, b, a), c) + +*anonymous function 71305* = (...) => ti(4194308, 4, a, b) + +*anonymous function 71364* = (...) => ti(4, 2, a, b) + +*anonymous function 71406* = (...) => a + +*anonymous function 71500* = (...) => [d["memoizedState"], a] + +*anonymous function 71750* = (...) => ???*0* +- *0* unsupported expression + +*anonymous function 71860* = (...) => ???*0* +- *0* unsupported expression + +*anonymous function 71915* = (...) => [b, a] + +*anonymous function 72018* = (...) => FreeVar(undefined) + +*anonymous function 72052* = (...) => c + +*anonymous function 72352* = (...) => ???*0* +- *0* unsupported expression + +*anonymous function 72781* = (...) => fi(ei) + +*anonymous function 72842* = (...) => Di(b, O["memoizedState"], a) + +*anonymous function 72911* = (...) => [a, b] + +*anonymous function 73223* = (...) => gi(ei) + +*anonymous function 73283* = (...) => (???*0* | Di(b, O["memoizedState"], a)) +- *0* unsupported expression + +*anonymous function 73380* = (...) => [a, b] + +*anonymous function 73860* = (...) => FreeVar(undefined) + +*anonymous function 74018* = (...) => FreeVar(undefined) + +*anonymous function 74191* = (...) => d(e) + +*anonymous function 74226* = (...) => FreeVar(undefined) + +*anonymous function 74327* = (...) => FreeVar(undefined) + +*anonymous function 86042* = (...) => FreeVar(undefined) + +*anonymous function 86340* = (...) => FreeVar(undefined) + +*anonymous function 86357* = (...) => FreeVar(undefined) + +*anonymous function 87803* = (...) => FreeVar(undefined) + +*anonymous function 9947* = (...) => e["call"](???*0*) +- *0* unsupported expression + +*anonymous function 9983* = (...) => FreeVar(undefined) + +A = FreeVar(Object)["assign"] + +Aa = FreeVar(Symbol)["for"]("react.profiler") + +Ab = (null | [a] | ???*0*) +- *0* unsupported expression + +Ac = (...) => FreeVar(undefined) + +Ad = A( + {}, + ud, + { + "screenX": 0, + "screenY": 0, + "clientX": 0, + "clientY": 0, + "pageX": 0, + "pageY": 0, + "ctrlKey": 0, + "shiftKey": 0, + "altKey": 0, + "metaKey": 0, + "getModifierState": zd, + "button": 0, + "buttons": 0, + "relatedTarget": *anonymous function 28404*, + "movementX": *anonymous function 28530*, + "movementY": *anonymous function 28699* + } +) + +Ae = (...) => FreeVar(undefined) + +Af = (...) => FreeVar(undefined) + +Ag = (...) => FreeVar(undefined) + +Ah = (...) => a + +Ai = (...) => FreeVar(undefined) + +Aj = (???*0* | *anonymous function 86042*) +- *0* Aj + ⚠️ pattern without value + +Ak = (null | a) + +B = ca["unstable_now"] + +Ba = FreeVar(Symbol)["for"]("react.provider") + +Bb = (...) => FreeVar(undefined) + +Bc = (...) => FreeVar(undefined) + +Bd = rd(Ad) + +Be = (...) => FreeVar(undefined) + +Bf = (...) => FreeVar(undefined) + +Bg = (...) => ???*0* +- *0* unknown new expression + +Bh = vh(???*0*) +- *0* unsupported expression + +Bi = (...) => (d[0] | a) + +Bj = (???*0* | *anonymous function 86340*) +- *0* Bj + ⚠️ pattern without value + +Bk = (???*0* | B()) +- *0* unsupported expression + +C = (0 | 1 | e | 4 | e | b | c | d | d | g | 16 | a | c | a | c) + +Ca = FreeVar(Symbol)["for"]("react.context") + +Cb = (...) => (null | a) + +Cc = (...) => FreeVar(undefined) + +Cd = A({}, Ad, {"dataTransfer": 0}) + +Ce = (...) => FreeVar(undefined) + +Cf = (null | dd) + +Cg = (...) => ???*0* +- *0* unsupported expression + +Ch = vh(???*0*) +- *0* unsupported expression + +Ci = (...) => (d[0] | a) + +Cj = (???*0* | *anonymous function 86357*) +- *0* Cj + ⚠️ pattern without value + +Ck = (0 | yc()) + +D = (...) => FreeVar(undefined) + +Da = FreeVar(Symbol)["for"]("react.forward_ref") + +Db = (...) => (a[Pf] | null) + +Dc = (...) => (16 | 536870912 | 4 | 1) + +Dd = rd(Cd) + +De = (...) => te(qe) + +Df = (null | {"focusedElem": a, "selectionRange": c} | ???*0*) +- *0* unsupported expression + +Dg = (...) => ???*0* +- *0* unsupported expression + +Dh = {} + +Di = (...) => (???*0* | b) +- *0* unsupported expression + +Dj = (???*0* | *anonymous function 87803*) +- *0* Dj + ⚠️ pattern without value + +Dk = (...) => FreeVar(undefined) + +E = (...) => FreeVar(undefined) + +Ea = FreeVar(Symbol)["for"]("react.suspense") + +Eb = (...) => FreeVar(undefined) + +Ec = (???*0* | *anonymous function 127654*) +- *0* Ec + ⚠️ pattern without value + +Ed = A({}, ud, {"relatedTarget": 0}) + +Ee = (...) => te(b) + +Ef = (...) => ???*0* +- *0* unsupported expression + +Eg = (...) => FreeVar(undefined) + +Eh = Uf(Dh) + +Ei = (...) => FreeVar(undefined) + +Ej = (...) => FreeVar(undefined) + +Ek = (...) => FreeVar(undefined) + +F#170 = (u["stateNode"] | Kb(w, x) | "onMouseLeave" | "onPointerLeave" | null | t | x | vf(F)) + +F#361 = ???*0* +- *0* F + ⚠️ pattern without value + +F#362 = ???*0* +- *0* F + ⚠️ pattern without value + +F#416 = Ri(f, h, b) + +F#425 = h["sibling"] + +Fa = FreeVar(Symbol)["for"]("react.suspense_list") + +Fb = (...) => FreeVar(undefined) + +Fc = (???*0* | *anonymous function 127923*) +- *0* Fc + ⚠️ pattern without value + +Fd = rd(Ed) + +Fe = (...) => te(b) + +Ff = (FreeVar(setTimeout) | ???*0*) +- *0* unsupported expression + +Fg = (...) => FreeVar(undefined) + +Fh = Uf(Dh) + +Fi = (...) => di()["memoizedState"] + +Fj = (...) => (null | b | b["child"]) + +Fk = (...) => null + +G = (...) => FreeVar(undefined) + +Ga = FreeVar(Symbol)["for"]("react.memo") + +Gb = ((...) => a(b) | Rk) + +Gc = (???*0* | *anonymous function 128036*) +- *0* Gc + ⚠️ pattern without value + +Gd = A( + {}, + sd, + {"animationName": 0, "elapsedTime": 0, "pseudoElement": 0} +) + +Ge = (...) => ???*0* +- *0* unsupported expression + +Gf = (FreeVar(clearTimeout) | ???*0*) +- *0* unsupported expression + +Gg = (...) => ???*0* +- *0* unsupported expression + +Gh = Uf(Dh) + +Gi = (...) => FreeVar(undefined) + +Gj = (...) => FreeVar(undefined) + +Gk = (...) => ac(a, b) + +H = Uf(Vf) + +Ha = FreeVar(Symbol)["for"]("react.lazy") + +Hb = ((...) => FreeVar(undefined) | Sk) + +Hc = (???*0* | *anonymous function 128133*) +- *0* Hc + ⚠️ pattern without value + +Hd = rd(Gd) + +He = (FreeVar(Object)["is"] | Ge) + +Hf = (FreeVar(Promise) | ???*0*) +- *0* unsupported expression + +Hg = (...) => FreeVar(undefined) + +Hh = (...) => a + +Hi = (...) => ???*0* +- *0* unsupported expression + +Hj = (FreeVar(Infinity) | (B() + 500)) + +Hk = (...) => (null | Hk["bind"](null, a)) + +I = ???*0* +- *0* unsupported expression + +Ia = FreeVar(Symbol)["for"]("react.offscreen") + +Ib = ???*0* +- *0* unsupported expression + +Ic = (???*0* | *anonymous function 128157*) +- *0* Ic + ⚠️ pattern without value + +Id = A({}, sd, {"clipboardData": *anonymous function 28936*}) + +Ie = (...) => ???*0* +- *0* unsupported expression + +If = (...) => FreeVar(undefined) + +Ig = (...) => FreeVar(undefined) + +Ih = (...) => FreeVar(undefined) + +Ii = (...) => FreeVar(undefined) + +Ij = (...) => FreeVar(undefined) + +Ik = (...) => (d | ???*0*) +- *0* unsupported expression + +J#170 = (???*0* | Vb(n) | h | ue(k) | F) +- *0* unsupported expression + +J#241 = (...) => (g(a) | J(a, d, l(f["_payload"]), h) | n(a, d, f, h) | t(a, d, f, h) | ???*0* | c(a, d)) +- *0* unsupported expression + +J#360 = n["memoizedState"] + +J#416 = Vi(g) + +J#425 = t["sibling"] + +Ja = FreeVar(Symbol)["iterator"] + +Jb = (...) => (a(b, c) | Gb(a, b, c)) + +Jc = ???*0* +- *0* unsupported expression + +Jd = rd(Id) + +Je = (...) => a + +Jf = (FreeVar(queueMicrotask) | *anonymous function 45964* | Ff) + +Jg = (...) => FreeVar(undefined) + +Jh = (...) => FreeVar(undefined) + +Ji = (...) => FreeVar(undefined) + +Jj = (...) => (???*0* | null) +- *0* unsupported expression + +Jk = (...) => T + +K = (0 | e | c | b | c | h | e) + +Ka = (...) => (null | a) + +Kb = (...) => (null | c) + +Kc = [] + +Kd = A({}, sd, {"data": 0}) + +Ke = (...) => {"node": c, "offset": ???*0*} +- *0* unsupported expression + +Kf = (...) => FreeVar(undefined) + +Kg = ua["ReactCurrentBatchConfig"] + +Kh = (...) => FreeVar(undefined) + +Ki = (...) => {"value": a, "source": b, "stack": e, "digest": null} + +Kj = (???*0* | g | h) +- *0* unsupported expression + +Kk = (...) => (ai | a) + +L = (...) => (B() | Bk | ???*0*) +- *0* unsupported expression + +La = (???*0* | ???*1* | "") +- *0* La + ⚠️ pattern without value +- *1* unsupported expression + +Lb = ???*0* +- *0* unsupported expression + +Lc = (null | Tc(Lc, a, b, c, d, e)) + +Ld = rd(Kd) + +Le = (...) => (???*0* | Le(a, b["parentNode"]) | a["contains"](b)) +- *0* unsupported expression + +Lf = (...) => (null | a) + +Lg = (...) => b + +Lh = (...) => FreeVar(undefined) + +Li = (...) => {"value": a, "source": null, "stack": (c | null), "digest": (b | null)} + +Lj = (FreeVar(WeakSet) | FreeVar(Set)) + +Lk = (...) => a + +M = Uf(0) + +Ma = (...) => ` +${La}${a}` + +Mb = {} + +Mc = (null | Tc(Mc, a, b, c, d, e)) + +Md = { + "Esc": "Escape", + "Spacebar": " ", + "Left": "ArrowLeft", + "Up": "ArrowUp", + "Right": "ArrowRight", + "Down": "ArrowDown", + "Del": "Delete", + "Win": "OS", + "Menu": "ContextMenu", + "Apps": "ContextMenu", + "Scroll": "ScrollLock", + "MozPrintableKey": "Unidentified" +} + +Me = (...) => b + +Mf = (...) => (a | null) + +Mg = Uf(null) + +Mh = (...) => (b | null) + +Mi = (...) => FreeVar(undefined) + +Mj = (...) => FreeVar(undefined) + +Mk = (...) => FreeVar(undefined) + +N = (null | b) + +Na = ???*0* +- *0* unsupported expression + +Nb = (...) => FreeVar(undefined) + +Nc = (null | Tc(Nc, a, b, c, d, e)) + +Nd = { + 8: "Backspace", + 9: "Tab", + 12: "Clear", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 19: "Pause", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 45: "Insert", + 46: "Delete", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "NumLock", + 145: "ScrollLock", + 224: "Meta" +} + +Ne = (...) => ???*0* +- *0* unsupported expression + +Nf = FreeVar(Math)["random"]()["toString"](36)["slice"](2) + +Ng = (null | a) + +Nh = [] + +Ni = (FreeVar(WeakMap) | FreeVar(Map)) + +Nj = (...) => FreeVar(undefined) + +Nk = (...) => FreeVar(undefined) + +O = (null | ???*0* | a) +- *0* unsupported expression + +Oa = (...) => ("" | k | Ma(a)) + +Ob = ???*0* +- *0* unsupported expression + +Oc = ???*0* +- *0* unknown new expression + +Od = {"Alt": "altKey", "Control": "ctrlKey", "Meta": "metaKey", "Shift": "shiftKey"} + +Oe = (...) => FreeVar(undefined) + +Of = `__reactFiber$${Nf}` + +Og = (null | ???*0* | a) +- *0* unsupported expression + +Oh = (...) => FreeVar(undefined) + +Oi = (...) => c + +Oj = ???*0* +- *0* unsupported expression + +Ok = (...) => a + +P = (null | ???*0* | a | b | a) +- *0* unsupported expression + +Pa = (...) => (Ma(a["type"]) | Ma("Lazy") | Ma("Suspense") | Ma("SuspenseList") | a | "") + +Pb = (null | a) + +Pc = ???*0* +- *0* unknown new expression + +Pd = (...) => (b["getModifierState"](a) | ???*0*) +- *0* unsupported expression + +Pe = ???*0* +- *0* unsupported expression + +Pf = `__reactProps$${Nf}` + +Pg = (null | ???*0*) +- *0* unsupported expression + +Ph = ua["ReactCurrentDispatcher"] + +Pi = ???*0* +- *0* unsupported expression + +Pj = (...) => n + +Pk = (...) => ???*0* +- *0* unsupported expression + +Q = (...) => FreeVar(undefined) + +Qa = (...) => ( + | null + | a["displayName"] + | a["name"] + | a + | "Fragment" + | "Portal" + | "Profiler" + | "StrictMode" + | "Suspense" + | "SuspenseList" + | `${???*0*}.Consumer` + | `${???*1*}.Provider` + | b + | Qa(a["type"]) + | "Memo" + | Qa(a(b)) +) +- *0* unsupported expression +- *1* unsupported expression + +Qb = ???*0* +- *0* unsupported expression + +Qc = [] + +Qd = A( + {}, + ud, + { + "key": *anonymous function 29891*, + "code": 0, + "location": 0, + "ctrlKey": 0, + "shiftKey": 0, + "altKey": 0, + "metaKey": 0, + "repeat": 0, + "locale": 0, + "getModifierState": zd, + "charCode": *anonymous function 30217*, + "keyCode": *anonymous function 30272*, + "which": *anonymous function 30346* + } +) + +Qe = (null | xa) + +Qf = `__reactListeners$${Nf}` + +Qg = (...) => FreeVar(undefined) + +Qh = ua["ReactCurrentBatchConfig"] + +Qi = (d | null) + +Qj = (...) => FreeVar(undefined) + +Qk = (...) => null + +R = (null | a) + +Ra = (...) => ( + | "Cache" + | `${???*0*}.Consumer` + | `${???*1*}.Provider` + | "DehydratedFragment" + | b["displayName"] + | ???*2* + | "Fragment" + | b + | "Portal" + | "Root" + | "Text" + | Qa(b) + | "StrictMode" + | "Mode" + | "Offscreen" + | "Profiler" + | "Scope" + | "Suspense" + | "SuspenseList" + | "TracingMarker" + | b["name"] + | null +) +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression + +Rb = (null | l) + +Rc = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit"["split"](" ") + +Rd = rd(Qd) + +Re = (null | d | ???*0*) +- *0* unsupported expression + +Rf = `__reactHandles$${Nf}` + +Rg = (...) => FreeVar(undefined) + +Rh = (0 | f) + +Ri = (...) => c + +Rj = (...) => FreeVar(undefined) + +Rk = (...) => a(b) + +S = (...) => b + +Sa = (...) => (a | "") + +Sb = {"onError": *anonymous function 17435*} + +Sc = (...) => FreeVar(undefined) + +Sd = A( + {}, + Ad, + { + "pointerId": 0, + "width": 0, + "height": 0, + "pressure": 0, + "tangentialPressure": 0, + "tiltX": 0, + "tiltY": 0, + "twist": 0, + "pointerType": 0, + "isPrimary": 0 + } +) + +Se = (null | d | ???*0*) +- *0* unsupported expression + +Sf = [] + +Sg = (...) => FreeVar(undefined) + +Sh = ???*0* +- *0* unsupported expression + +Si = (???*0* | null) +- *0* unknown new expression + +Sj = (...) => FreeVar(undefined) + +Sk = (...) => a() + +T = (3 | 0 | 1 | 2 | 4 | 6 | 5) + +Ta = (...) => ???*0* +- *0* unsupported expression + +Tb = (...) => FreeVar(undefined) + +Tc = (...) => a + +Td = rd(Sd) + +Te = ???*0* +- *0* unsupported expression + +Tf = ???*0* +- *0* unsupported expression + +Tg = (...) => FreeVar(undefined) + +Th = ???*0* +- *0* unsupported expression + +Ti = (...) => FreeVar(undefined) + +Tj = (...) => FreeVar(undefined) + +Tk = (...) => FreeVar(undefined) + +U = (???*0* | d | m | l | k | l) +- *0* unsupported expression + +Ua = (...) => { + "getValue": *anonymous function 10089*, + "setValue": *anonymous function 10119*, + "stopTracking": *anonymous function 10152* +} + +Ub = (...) => FreeVar(undefined) + +Uc = (...) => ???*0* +- *0* unsupported expression + +Ud = A( + {}, + ud, + { + "touches": 0, + "targetTouches": 0, + "changedTouches": 0, + "altKey": 0, + "metaKey": 0, + "ctrlKey": 0, + "shiftKey": 0, + "getModifierState": zd + } +) + +Ue = (...) => FreeVar(undefined) + +Uf = (...) => {"current": a} + +Ug = ???*0* +- *0* unsupported expression + +Uh = 0 + +Ui = (...) => FreeVar(undefined) + +Uj = (...) => ???*0* +- *0* unsupported expression + +Uk = (...) => FreeVar(undefined) + +V = ( + | null + | b + | a + | b["return"] + | a + | m + | y + | a + | e + | k + | f + | c + | b["return"] + | c + | b["return"] + | h + | b["return"] + | a["current"] + | l + | q + | r + | y + | f + | g + | x + | f["return"] + | w + | u + | F + | h["return"] +) + +Va = (...) => FreeVar(undefined) + +Vb = (...) => (c | null) + +Vc = (...) => FreeVar(undefined) + +Vd = rd(Ud) + +Ve = (...) => c + +Vf = {} + +Vg = (...) => b + +Vh = 0 + +Vi = (...) => (a | null) + +Vj = (...) => (null | a["stateNode"]) + +Vk = (...) => FreeVar(undefined) + +W = (...) => FreeVar(undefined) + +Wa = (...) => ???*0* +- *0* unsupported expression + +Wb = (...) => (b["dehydrated"] | null) + +Wc = (...) => (b | c | null) + +Wd = A( + {}, + sd, + {"propertyName": 0, "elapsedTime": 0, "pseudoElement": 0} +) + +We = { + "animationend": Ve("Animation", "AnimationEnd"), + "animationiteration": Ve("Animation", "AnimationIteration"), + "animationstart": Ve("Animation", "AnimationStart"), + "transitionend": Ve("Transition", "TransitionEnd") +} + +Wf = Uf(???*0*) +- *0* unsupported expression + +Wg = (null | [a]) + +Wh = (...) => ???*0* +- *0* unsupported expression + +Wi = (...) => a + +Wj = (...) => FreeVar(undefined) + +Wk = (???*0* | *anonymous function 117815*) +- *0* Wk + ⚠️ pattern without value + +X = (null | d | c["stateNode"]["containerInfo"] | h["stateNode"] | h["stateNode"]["containerInfo"]) + +Xa = (...) => (null | a["activeElement"] | a["body"]) + +Xb = (...) => FreeVar(undefined) + +Xc = (...) => ???*0* +- *0* unsupported expression + +Xd = rd(Wd) + +Xe = {} + +Xf = (Vf | H["current"]) + +Xg = (...) => FreeVar(undefined) + +Xh = (...) => a + +Xi = ua["ReactCurrentOwner"] + +Xj = (...) => FreeVar(undefined) + +Xk = (...) => null + +Y = (null | ???*0* | b | c | b) +- *0* unsupported expression + +Ya = (...) => A( + {}, + b, + { + "defaultChecked": ???*0*, + "defaultValue": ???*1*, + "value": ???*2*, + "checked": (c | a["_wrapperState"]["initialChecked"]) + } +) +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression + +Yb = (...) => (null | a | b) + +Yc = (...) => (a | b["stateNode"]["containerInfo"] | null) + +Yd = A( + {}, + Ad, + { + "deltaX": *anonymous function 30803*, + "deltaY": *anonymous function 30887*, + "deltaZ": 0, + "deltaMode": 0 + } +) + +Ye = ({} | FreeVar(document)["createElement"]("div")["style"]) + +Yf = (...) => (Vf | d["__reactInternalMemoizedMaskedChildContext"] | e) + +Yg = (...) => Zg(a, d) + +Yh = { + "readContext": Vg, + "useCallback": *anonymous function 71076*, + "useContext": Vg, + "useEffect": vi, + "useImperativeHandle": *anonymous function 71188*, + "useLayoutEffect": *anonymous function 71305*, + "useInsertionEffect": *anonymous function 71364*, + "useMemo": *anonymous function 71406*, + "useReducer": *anonymous function 71500*, + "useRef": *anonymous function 71750*, + "useState": qi, + "useDebugValue": Ai, + "useDeferredValue": *anonymous function 71860*, + "useTransition": *anonymous function 71915*, + "useMutableSource": *anonymous function 72018*, + "useSyncExternalStore": *anonymous function 72052*, + "useId": *anonymous function 72352*, + "unstable_isNewReconciler": ???*0* +} +- *0* unsupported expression + +Yi = (...) => FreeVar(undefined) + +Yj = (???*0* | e) +- *0* unsupported expression + +Yk = (...) => FreeVar(undefined) + +Z = (0 | ???*0*) +- *0* unsupported expression + +Za = (...) => FreeVar(undefined) + +Zb = (...) => ($b(a) | null) + +Zc = (...) => FreeVar(undefined) + +Zd = rd(Yd) + +Ze = (...) => (Xe[a] | a | ???*0*) +- *0* unsupported expression + +Zf = (...) => ???*0* +- *0* unsupported expression + +Zg = (...) => (c["stateNode"] | null) + +Zh = { + "readContext": Vg, + "useCallback": Bi, + "useContext": Vg, + "useEffect": ji, + "useImperativeHandle": zi, + "useInsertionEffect": wi, + "useLayoutEffect": xi, + "useMemo": Ci, + "useReducer": fi, + "useRef": si, + "useState": *anonymous function 72781*, + "useDebugValue": Ai, + "useDeferredValue": *anonymous function 72842*, + "useTransition": *anonymous function 72911*, + "useMutableSource": hi, + "useSyncExternalStore": ii, + "useId": Fi, + "unstable_isNewReconciler": ???*0* +} +- *0* unsupported expression + +Zi = (...) => ($i(a, b, e) | b["child"]) + +Zj = (...) => FreeVar(undefined) + +Zk = (...) => FreeVar(undefined) + +a#10 = arguments[0] + +a#100 = (arguments[0] | a["expirationTimes"]) + +a#101 = (arguments[0] | a["entanglements"]) + +a#102 = arguments[0] + +a#103 = arguments[0] + +a#104 = ( + | arguments[0] + | { + "blockedOn": b, + "domEventName": c, + "eventSystemFlags": d, + "nativeEvent": f, + "targetContainers": [e] + } +) + +a#105 = arguments[0] + +a#106 = arguments[0] + +a#107 = arguments[0] + +a#108 = arguments[0] + +a#109 = arguments[0] + +a#11 = arguments[0] + +a#110 = arguments[0] + +a#112 = arguments[0] + +a#113 = arguments[0] + +a#114 = arguments[0] + +a#115 = (arguments[0] | xb(d) | Wc(a) | null | Wb(b)) + +a#116 = arguments[0] + +a#117 = (???*0* | 0) +- *0* a + ⚠️ pattern without value + +a#118 = (arguments[0] | a["charCode"] | 13 | b) + +a#119 = arguments[0] + +a#12 = arguments[0] + +a#121 = ???*0*["nativeEvent"] +- *0* unsupported expression + +a#122 = ???*0*["nativeEvent"] +- *0* unsupported expression + +a#123 = arguments[0] + +a#124 = arguments[0] + +a#125 = arguments[0] + +a#126 = arguments[0] + +a#127 = arguments[0] + +a#128 = (arguments[0] | Od[a]) + +a#129 = (arguments[0] | od(a)) + +a#13 = arguments[0] + +a#130 = arguments[0] + +a#131 = arguments[0] + +a#132 = arguments[0] + +a#133 = arguments[0] + +a#134 = arguments[0] + +a#135 = arguments[0] + +a#136 = (arguments[0] | a["detail"]) + +a#137 = (arguments[0] | b["data"]) + +a#138 = (arguments[0] | nd()) + +a#139 = arguments[0] + +a#14 = arguments[0] + +a#140 = arguments[0] + +a#141 = arguments[0] + +a#142 = arguments[0] + +a#143 = arguments[0] + +a#144 = arguments[0] + +a#145 = arguments[0] + +a#146 = arguments[0] + +a#147 = arguments[0] + +a#148 = arguments[0] + +a#149 = arguments[0] + +a#15 = arguments[0] + +a#150 = arguments[0] + +a#151 = (arguments[0] | a["firstChild"]) + +a#152 = (arguments[0] | 0 | d) + +a#153 = arguments[0] + +a#154 = (FreeVar(window) | b["contentWindow"]) + +a#156 = arguments[0] + +a#157 = ( + | arguments[0] + | d["end"] + | b + | ???*0* + | FreeVar(window) + | a["getSelection"]() + | c + | a["parentNode"] + | b[c] +) +- *0* unsupported expression + +a#158 = arguments[0] + +a#159 = arguments[0] + +a#16 = arguments[0] + +a#160 = arguments[0] + +a#161 = arguments[0] + +a#162 = arguments[0] + +a#163 = (arguments[0] | Rb) + +a#164 = arguments[0] + +a#165 = arguments[0] + +a#166 = arguments[0] + +a#168 = arguments[0] + +a#169 = arguments[0] + +a#17 = arguments[0] + +a#171 = arguments[0] + +a#172 = (arguments[0] | a["return"]) + +a#173 = (arguments[0] | a["return"]) + +a#174 = arguments[0] + +a#175 = arguments[0] + +a#176 = arguments[0] + +a#177 = arguments[0] + +a#178 = arguments[0] + +a#179 = arguments[0] + +a#18 = arguments[0] + +a#180 = arguments[0] + +a#181 = (arguments[0] | a["nextSibling"]) + +a#182 = (arguments[0] | a["previousSibling"]) + +a#183 = (arguments[0] | Mf(a) | c) + +a#184 = (arguments[0] | a[Of] | a[uf]) + +a#185 = arguments[0] + +a#186 = arguments[0] + +a#187 = arguments[0] + +a#188 = arguments[0] + +a#189 = arguments[0] + +a#19 = arguments[0] + +a#190 = (arguments[0] | a["stateNode"]) + +a#191 = (arguments[0] | a["childContextTypes"]) + +a#192 = arguments[0] + +a#193 = arguments[0] + +a#194 = (arguments[0] | ???*0* | Vf | a["stateNode"]) +- *0* unsupported expression + +a#195 = (arguments[0] | bg(a, b, Xf)) + +a#196 = arguments[0] + +a#197 = arguments[0] + +a#198 = 0 + +a#20 = arguments[0] + +a#200 = arguments[0] + +a#201 = (arguments[0] | sg) + +a#202 = arguments[0] + +a#203 = arguments[0] + +a#204 = arguments[0] + +a#205 = arguments[0] + +a#206 = arguments[0] + +a#207 = arguments[0] + +a#208 = (arguments[0] | a["return"]) + +a#209 = (arguments[0] | a["memoizedState"] | a["dehydrated"] | null | a["nextSibling"]) + +a#21 = arguments[0] + +a#210 = (yg | Lf(a["nextSibling"])) + +a#211 = arguments[0] + +a#212 = (arguments[0] | a["defaultProps"]) + +a#213 = arguments[0] + +a#214 = (arguments[0] | a["return"]) + +a#215 = (arguments[0] | a["dependencies"]) + +a#216 = (arguments[0] | {"context": a, "memoizedValue": b, "next": null}) + +a#217 = arguments[0] + +a#218 = arguments[0] + +a#219 = (arguments[0] | a["return"]) + +a#22 = arguments[0] + +a#220 = arguments[0] + +a#221 = (arguments[0] | a["updateQueue"]) + +a#222 = arguments[0] + +a#223 = arguments[0] + +a#224 = arguments[0] + +a#225 = (arguments[0] | c["lastBaseUpdate"]) + +a#226 = arguments[0] + +a#227 = (arguments[0] | b["effects"]) + +a#228 = arguments[0] + +a#229 = (arguments[0] | a["_reactInternals"]) + +a#23 = arguments[0] + +a#230 = (arguments[0] | a["_reactInternals"]) + +a#231 = (arguments[0] | a["_reactInternals"]) + +a#232 = (arguments[0] | a["_reactInternals"]) + +a#233 = (arguments[0] | a["stateNode"]) + +a#234 = (arguments[0] | a["stateNode"]) + +a#235 = (arguments[0] | b["state"]) + +a#236 = arguments[0] + +a#237 = (arguments[0] | c["ref"]) + +a#238 = arguments[0] + +a#239 = ( + | arguments[0] + | FreeVar(Object)["prototype"]["toString"]["call"](b) +) + +a#24 = arguments[0] + +a#240 = arguments[0] + +a#241 = arguments[0] + +a#244 = (arguments[0] | ???*0*) +- *0* unknown new expression + +a#245 = (arguments[0] | wh(a, b)) + +a#248 = arguments[0] + +a#249 = arguments[0] + +a#25 = arguments[0] + +a#250 = arguments[0] + +a#251 = arguments[0] + +a#252 = arguments[0] + +a#253 = arguments[0] + +a#254 = (arguments[0] | a["get"](c) | null | a["get"]((c | d["key"]))) + +a#256 = arguments[0] + +a#258 = arguments[0] + +a#259 = (arguments[0] | d | h) + +a#26 = (arguments[0] | ???*0* | a["@@iterator"]) +- *0* unsupported expression + +a#260 = arguments[0] + +a#261 = (arguments[0] | b["nodeType"] | b["parentNode"] | b | a["tagName"]) + +a#262 = arguments[0] + +a#263 = arguments[0] + +a#264 = arguments[0] + +a#265 = 0 + +a#266 = arguments[0] + +a#267 = (arguments[0] | c(d, e)) + +a#268 = ???*0* +- *0* unsupported expression + +a#269 = {"memoizedState": null, "baseState": null, "baseQueue": null, "queue": null, "next": null} + +a#27 = arguments[0] + +a#270 = ( + | N["alternate"] + | a["memoizedState"] + | null + | O["next"] + | { + "memoizedState": O["memoizedState"], + "baseState": O["baseState"], + "baseQueue": O["baseQueue"], + "queue": O["queue"], + "next": null + } +) + +a#271 = arguments[0] + +a#272 = (arguments[0] | c["interleaved"]) + +a#273 = arguments[0] + +a#274 = arguments[0] + +a#275 = (arguments[0] | {"getSnapshot": b, "value": c}) + +a#276 = arguments[0] + +a#277 = arguments[0] + +a#278 = (arguments[0] | a["value"]) + +a#280 = arguments[0] + +a#281 = ( + | arguments[0] + | a() + | { + "pending": null, + "interleaved": null, + "lanes": 0, + "dispatch": null, + "lastRenderedReducer": ei, + "lastRenderedState": a + } + | ???*0* +) +- *0* unsupported expression + +a#282 = ( + | arguments[0] + | {"tag": a, "create": b, "destroy": c, "deps": d, "next": null} +) + +a#283 = arguments[0] + +a#284 = arguments[0] + +a#285 = arguments[0] + +a#286 = arguments[0] + +a#287 = arguments[0] + +a#288 = arguments[0] + +a#289 = (arguments[0] | a()) + +a#29 = (arguments[0] | a["displayName"] | a["name"] | "") + +a#290 = arguments[0] + +a#291 = arguments[0] + +a#292 = (arguments[0] | a()) + +a#293 = arguments[0] + +a#294 = arguments[0] + +a#295 = arguments[0] + +a#296 = arguments[0] + +a#298 = arguments[0] + +a#299 = arguments[0] + +a#3 = arguments[0] + +a#300 = arguments[0] + +a#301 = arguments[0] + +a#302 = arguments[0] + +a#303 = arguments[0] + +a#304 = arguments[0] + +a#305 = (arguments[0] | a()) + +a#306 = ( + | arguments[0] + | { + "pending": null, + "interleaved": null, + "lanes": 0, + "dispatch": null, + "lastRenderedReducer": a, + "lastRenderedState": b + } + | ???*0* +) +- *0* unsupported expression + +a#307 = (arguments[0] | {"current": a}) + +a#308 = arguments[0] + +a#309 = (qi(???*0*) | Ei["bind"](null, a[1])) +- *0* unsupported expression + +a#310 = arguments[0] + +a#311 = ci() + +a#312 = arguments[0] + +a#313 = fi(ei)[0] + +a#314 = arguments[0] + +a#315 = gi(ei)[0] + +a#316 = arguments[0] + +a#318 = arguments[0] + +a#319 = arguments[0] + +a#321 = arguments[0] + +a#322 = arguments[0] + +a#324 = (arguments[0] | Ui["bind"](null, a, b, c)) + +a#325 = (arguments[0] | a["return"]) + +a#326 = arguments[0] + +a#327 = arguments[0] + +a#328 = arguments[0] + +a#329 = (arguments[0] | yh(c["type"], null, d, b, b["mode"], e) | wh(f, d)) + +a#330 = arguments[0] + +a#331 = (arguments[0] | ???*0* | c) +- *0* unsupported expression + +a#332 = arguments[0] + +a#333 = arguments[0] + +a#334 = arguments[0] + +a#335 = arguments[0] + +a#336 = arguments[0] + +a#337 = arguments[0] + +a#338 = arguments[0] + +a#339 = ( + | arguments[0] + | b["memoizedState"] + | a["dehydrated"] + | d["fallback"] + | Ah(a, d, c, null) + | f["sibling"] +) + +a#34 = (arguments[0] | Oa(a["type"], ???*0*) | Oa(a["type"]["render"], ???*1*)) +- *0* unsupported expression +- *1* unsupported expression + +a#340 = arguments[0] + +a#341 = (arguments[0] | rj(b, b["pendingProps"]["children"])) + +a#342 = (arguments[0] | f["treeContext"]) + +a#343 = arguments[0] + +a#344 = arguments[0] + +a#345 = ( + | arguments[0] + | b["child"] + | a["child"] + | a["return"] + | a["sibling"] + | c["alternate"] + | e["alternate"] + | e["sibling"] +) + +a#346 = arguments[0] + +a#347 = (arguments[0] | b["child"] | a["sibling"]) + +a#348 = (arguments[0] | $i(a, b, c)) + +a#349 = arguments[0] + +a#35 = ( + | arguments[0] + | a["displayName"] + | b["displayName"] + | b["name"] + | "" + | `ForwardRef(${a})` + | "ForwardRef" + | a["_init"] +) + +a#350 = (arguments[0] | b["stateNode"]) + +a#351 = arguments[0] + +a#352 = arguments[0] + +a#353 = arguments[0] + +a#354 = ( + | arguments[0] + | Hh(Eh["current"]) + | ???*0* + | kb(c) + | g["createElement"]("div") + | a["removeChild"](a["firstChild"]) + | g["createElement"](c, {"is": d["is"]}) + | g["createElement"](c) + | g["createElementNS"](a, c) + | xg + | b["child"] + | d + | g["dependencies"] + | a["sibling"] + | Mh(g) +) +- *0* unsupported expression + +a#355 = (arguments[0] | b["flags"] | b["memoizedState"]) + +a#356 = arguments[0] + +a#358 = arguments[0] + +a#360 = (arguments[0] | Me() | b["child"] | b["sibling"]) + +a#363 = arguments[0] + +a#364 = arguments[0] + +a#365 = (arguments[0] | c) + +a#366 = arguments[0] + +a#367 = arguments[0] + +a#368 = (arguments[0] | a["return"] | a["sibling"] | a["child"]) + +a#369 = (arguments[0] | a["stateNode"] | a["child"] | a["sibling"]) + +a#37 = (arguments[0] | b["render"] | a["displayName"] | a["name"] | "") + +a#370 = (arguments[0] | a["stateNode"] | a["child"] | a["sibling"]) + +a#371 = arguments[0] + +a#372 = (arguments[0] | X) + +a#375 = arguments[0] + +a#377 = arguments[0] + +a#379 = arguments[0] + +a#38 = arguments[0] + +a#389 = arguments[0] + +a#39 = (arguments[0] | a["nodeName"]) + +a#391 = arguments[0] + +a#392 = arguments[0] + +a#393 = arguments[0] + +a#395 = arguments[0] + +a#396 = arguments[0] + +a#4 = arguments[0] + +a#40 = arguments[0] + +a#402 = (arguments[0] | C | FreeVar(window)["event"] | 16 | jd(a["type"])) + +a#403 = arguments[0] + +a#404 = arguments[0] + +a#405 = arguments[0] + +a#407 = (arguments[0] | Jk(a, b)) + +a#408 = arguments[0] + +a#409 = arguments[0] + +a#41 = arguments[0] + +a#411 = (arguments[0] | a["expirationTimes"]) + +a#412 = arguments[0] + +a#413 = arguments[0] + +a#414 = arguments[0] + +a#415 = (arguments[0] | wh(a["current"], null)) + +a#416 = arguments[0] + +a#418 = nk["current"] + +a#419 = arguments[0] + +a#42 = arguments[0] + +a#421 = arguments[0] + +a#422 = (arguments[0] | b["return"]) + +a#423 = arguments[0] + +a#424 = (arguments[0] | Qi) + +a#425 = (Dc(yk) | xk) + +a#428 = (arguments[0] | dh(a, b, 1)) + +a#429 = (arguments[0] | Ki(c, a) | Ri(b, a, 1) | L()) + +a#43 = arguments[0] + +a#430 = arguments[0] + +a#431 = (arguments[0] | Zg(a, b)) + +a#432 = arguments[0] + +a#433 = arguments[0] + +a#434 = (arguments[0] | b["pendingProps"] | Lg(d, a) | ???*0*) +- *0* unsupported expression + +a#435 = arguments[0] + +a#436 = arguments[0] + +a#437 = arguments[0] + +a#438 = (arguments[0] | a["prototype"]) + +a#439 = (arguments[0] | a["$$typeof"]) + +a#44 = (arguments[0] | d) + +a#440 = arguments[0] + +a#441 = (arguments[0] | Bg(12, c, b, ???*0*) | Bg(13, c, b, e) | Bg(19, c, b, e)) +- *0* unsupported expression + +a#442 = (arguments[0] | Bg(7, a, d, b)) + +a#443 = (arguments[0] | Bg(22, a, d, b)) + +a#444 = (arguments[0] | Bg(6, a, null, b)) + +a#445 = arguments[0] + +a#446 = arguments[0] + +a#447 = (arguments[0] | ???*0*) +- *0* unknown new expression + +a#448 = arguments[0] + +a#449 = (arguments[0] | a["_reactInternals"]) + +a#45 = (arguments[0] | a | ???*0*) +- *0* unsupported expression + +a#450 = (arguments[0] | cl(c, d, ???*0*, a, e, f, g, h, k)) +- *0* unsupported expression + +a#451 = (arguments[0] | dh(e, b, g)) + +a#452 = (arguments[0] | a["current"]) + +a#453 = (arguments[0] | a["memoizedState"]) + +a#454 = (arguments[0] | a["alternate"]) + +a#455 = arguments[0] + +a#456 = arguments[0] + +a#457 = arguments[0] + +a#458 = ???*0*["_internalRoot"] +- *0* unsupported expression + +a#459 = arguments[0] + +a#460 = (arguments[0] | {"blockedOn": null, "target": a, "priority": b}) + +a#461 = arguments[0] + +a#462 = arguments[0] + +a#463 = arguments[0] + +a#464 = hl(g) + +a#465 = hl(k) + +a#466 = arguments[0] + +a#467 = hl(g) + +a#468 = arguments[0] + +a#47 = arguments[0] + +a#470 = arguments[0] + +a#471 = arguments[0] + +a#472 = arguments[0] + +a#473 = arguments[0] + +a#474 = (arguments[0] | Zb(a)) + +a#475 = ???*0* +- *0* a + ⚠️ pattern without value + +a#476 = arguments[0] + +a#477 = arguments[0] + +a#478 = (arguments[0] | FreeVar(Object)["keys"](a)["join"](",") | Zb(b) | null | a["stateNode"]) + +a#479 = arguments[0] + +a#48 = arguments[0] + +a#480 = arguments[0] + +a#481 = (arguments[0] | 0) + +a#482 = arguments[0] + +a#483 = arguments[0] + +a#484 = arguments[0] + +a#49 = arguments[0] + +a#5 = (arguments[0] | 0) + +a#50 = arguments[0] + +a#51 = arguments[0] + +a#52 = arguments[0] + +a#53 = (arguments[0] | a["options"]) + +a#54 = arguments[0] + +a#55 = arguments[0] + +a#56 = arguments[0] + +a#57 = arguments[0] + +a#58 = arguments[0] + +a#59 = arguments[0] + +a#6 = arguments[0] + +a#60 = *anonymous function 13608* + +a#62 = arguments[0] + +a#63 = arguments[0] + +a#64 = arguments[0] + +a#66 = arguments[0] + +a#67 = (arguments[0] | a["style"]) + +a#68 = arguments[0] + +a#69 = arguments[0] + +a#7 = (arguments[0] | a["toLowerCase"]()["slice"](0, 5)) + +a#70 = (arguments[0] | a["target"] | a["srcElement"] | FreeVar(window) | a["correspondingUseElement"]) + +a#71 = (arguments[0] | Cb(a)) + +a#72 = arguments[0] + +a#73 = (zb | 0) + +a#74 = arguments[0] + +a#75 = arguments[0] + +a#76 = (arguments[0] | a["type"] | ???*0*) +- *0* unsupported expression + +a#77 = ???*0* +- *0* a + ⚠️ pattern without value + +a#78 = arguments[0] + +a#8 = arguments[0] + +a#80 = arguments[0] + +a#81 = arguments[0] + +a#82 = arguments[0] + +a#83 = (arguments[0] | b | b["return"]) + +a#84 = (arguments[0] | a["alternate"]) + +a#85 = arguments[0] + +a#86 = arguments[0] + +a#87 = (arguments[0] | Yb(a)) + +a#88 = (arguments[0] | a["child"] | a["sibling"]) + +a#89 = arguments[0] + +a#9 = arguments[0] + +a#91 = arguments[0] + +a#92 = arguments[0] + +a#93 = (arguments[0] | a["entanglements"]) + +a#94 = arguments[0] + +a#95 = arguments[0] + +a#96 = (arguments[0] | ???*0*) +- *0* unsupported expression + +a#97 = rc + +a#98 = arguments[0] + +a#99 = (arguments[0] | a["eventTimes"]) + +aa = FreeVar(Require)("react") + +ab = (...) => FreeVar(undefined) + +ac = ca["unstable_scheduleCallback"] + +ad = (...) => FreeVar(undefined) + +ae = ???*0* +- *0* unsupported expression + +af = Ze("animationiteration") + +ag = (...) => FreeVar(undefined) + +ah = (...) => FreeVar(undefined) + +ai = { + "readContext": Vg, + "useCallback": Q, + "useContext": Q, + "useEffect": Q, + "useImperativeHandle": Q, + "useInsertionEffect": Q, + "useLayoutEffect": Q, + "useMemo": Q, + "useReducer": Q, + "useRef": Q, + "useState": Q, + "useDebugValue": Q, + "useDeferredValue": Q, + "useTransition": Q, + "useMutableSource": Q, + "useSyncExternalStore": Q, + "useId": Q, + "unstable_isNewReconciler": ???*0* +} +- *0* unsupported expression + +aj = (...) => (cj(a, b, f, d, e) | ???*0* | $i(a, b, e)) +- *0* unsupported expression + +ak = (...) => FreeVar(undefined) + +al = (...) => FreeVar(undefined) + +b#100 = (arguments[1] | a["entanglements"]) + +b#101 = arguments[1] + +b#103 = arguments[1] + +b#104 = (arguments[1] | Cb(b) | a["targetContainers"]) + +b#105 = arguments[1] + +b#106 = (Wc(a["target"]) | c["tag"] | Wb(c)) + +b#107 = (a["targetContainers"] | Cb(c)) + +b#108 = arguments[1] + +b#109 = arguments[1] + +b#11 = a[0] + +b#110 = (...) => ad(b, a) + +b#111 = arguments[0] + +b#112 = arguments[1] + +b#113 = arguments[1] + +b#114 = arguments[1] + +b#115 = (arguments[1] | Vb(a)) + +b#117 = ld + +b#118 = a["keyCode"] + +b#119 = (...) => ???*0* +- *0* unsupported expression + +b#120 = (arguments[0] | a[c]) + +b#128 = ???*0*["nativeEvent"] +- *0* unsupported expression + +b#129 = (Md[a["key"]] | a["key"]) + +b#135 = arguments[1] + +b#137 = arguments[1] + +b#138 = arguments[1] + +b#139 = ???*0* +- *0* unsupported expression + +b#140 = (arguments[1] | oe(b, "onChange")) + +b#142 = ue(a) + +b#143 = arguments[1] + +b#144 = [] + +b#145 = arguments[1] + +b#147 = arguments[1] + +b#148 = arguments[1] + +b#149 = arguments[1] + +b#150 = arguments[1] + +b#152 = arguments[1] + +b#153 = arguments[1] + +b#154 = (Xa() | Xa(a["document"])) + +b#156 = ???*0* +- *0* unsupported expression + +b#157 = (Me() | d["start"] | c["ownerDocument"] | FreeVar(document) | b["createRange"]() | []) + +b#158 = (arguments[1] | ???*0*) +- *0* unknown new expression + +b#159 = arguments[1] + +b#160 = We[a] + +b#161 = arguments[1] + +b#162 = arguments[1] + +b#163 = (arguments[1] | ???*0*) +- *0* unsupported expression + +b#164 = arguments[1] + +b#165 = arguments[1] + +b#166 = (a | a["ownerDocument"]) + +b#167 = arguments[0] + +b#168 = arguments[1] + +b#169 = arguments[1] + +b#171 = arguments[1] + +b#172 = arguments[1] + +b#174 = arguments[1] + +b#176 = (arguments[1] | zf(b)) + +b#177 = arguments[1] + +b#180 = arguments[1] + +b#181 = (a["nodeType"] | a["data"]) + +b#182 = 0 + +b#183 = (a[Of] | c[uf] | c[Of]) + +b#189 = arguments[1] + +b#190 = arguments[1] + +b#192 = arguments[1] + +b#193 = (arguments[1] | b["childContextTypes"]) + +b#195 = arguments[1] + +b#198 = C + +b#20 = a["replace"](ra, sa) + +b#200 = arguments[1] + +b#201 = arguments[1] + +b#204 = (arguments[1] | a["deletions"]) + +b#205 = (arguments[1] | null | b) + +b#207 = (yg | Lf(c["nextSibling"])) + +b#209 = (???*0* | ???*1* | a["type"] | yg | Lf(b["nextSibling"]) | 0) +- *0* b + ⚠️ pattern without value +- *1* unsupported expression + +b#21 = a["replace"](ra, sa) + +b#212 = (arguments[1] | A({}, b)) + +b#213 = Mg["current"] + +b#214 = arguments[1] + +b#215 = arguments[1] + +b#216 = a["_currentValue"] + +b#218 = arguments[1] + +b#219 = arguments[1] + +b#22 = a["replace"](ra, sa) + +b#221 = arguments[1] + +b#222 = arguments[1] + +b#223 = arguments[1] + +b#224 = (arguments[1] | b["updateQueue"] | b["shared"]) + +b#225 = arguments[1] + +b#226 = (arguments[1] | e["shared"]["interleaved"]) + +b#227 = (arguments[1] | 0) + +b#228 = (arguments[1] | a["memoizedState"]) + +b#230 = (arguments[1] | dh(a, f, e)) + +b#231 = (arguments[1] | dh(a, f, e)) + +b#232 = (arguments[1] | dh(a, e, d)) + +b#233 = arguments[1] + +b#234 = (arguments[1] | ???*0*) +- *0* unknown new expression + +b#235 = arguments[1] + +b#236 = (arguments[1] | e["state"]) + +b#237 = (arguments[1] | *anonymous function 58064*) + +b#238 = (e["refs"] | ???*0*) +- *0* unsupported expression + +b#239 = arguments[1] + +b#240 = a["_init"] + +b#241 = (...) => FreeVar(undefined) + +b#242 = arguments[0] + +b#244 = (arguments[1] | b["sibling"]) + +b#245 = arguments[1] + +b#246 = arguments[0] + +b#247 = arguments[0] + +b#248 = (arguments[1] | xh(c, a["mode"], d) | e(b, c)) + +b#249 = arguments[1] + +b#25 = (arguments[1] | e["attributeName"]) + +b#250 = (arguments[1] | zh(c, a["mode"], d) | e(b, (c["children"] | []))) + +b#251 = (arguments[1] | Ah(c, a["mode"], d, f) | e(b, c)) + +b#252 = (arguments[1] | xh(`${b}`, a["mode"], c) | zh(b, a["mode"], c) | Ah(b, a["mode"], c, null)) + +b#253 = arguments[1] + +b#254 = arguments[1] + +b#261 = ( + | arguments[1] + | b["namespaceURI"] + | lb(null, "") + | b["documentElement"] + | a["namespaceURI"] + | null + | lb(b, a) +) + +b#262 = Hh(Eh["current"]) + +b#264 = (a | b["child"] | b["return"] | b["sibling"]) + +b#266 = arguments[1] + +b#267 = (arguments[1] | ???*0*) +- *0* unsupported expression + +b#27 = c["stack"]["trim"]()["match"](/\n( *(at )?)/) + +b#270 = (N["memoizedState"] | P["next"]) + +b#271 = arguments[1] + +b#272 = di() + +b#273 = di() + +b#274 = arguments[1] + +b#275 = (arguments[1] | N["updateQueue"] | {"lastEffect": null, "stores": null}) + +b#276 = arguments[1] + +b#277 = arguments[1] + +b#278 = a["getSnapshot"] + +b#280 = Zg(a, 1) + +b#281 = ci() + +b#282 = (arguments[1] | N["updateQueue"] | {"lastEffect": null, "stores": null}) + +b#283 = arguments[1] + +b#284 = arguments[1] + +b#285 = arguments[1] + +b#286 = arguments[1] + +b#287 = arguments[1] + +b#288 = arguments[1] + +b#289 = arguments[1] + +b#29 = (arguments[1] | *anonymous function 6811*) + +b#290 = arguments[1] + +b#291 = (arguments[1] | null | b) + +b#292 = (arguments[1] | null | b) + +b#293 = arguments[1] + +b#294 = arguments[1] + +b#295 = arguments[1] + +b#296 = arguments[1] + +b#298 = a["alternate"] + +b#299 = arguments[1] + +b#3 = `https://reactjs.org/docs/error-decoder.html?invariant=${a}` + +b#300 = arguments[1] + +b#301 = arguments[1] + +b#302 = arguments[1] + +b#303 = arguments[1] + +b#304 = arguments[1] + +b#305 = (arguments[1] | null | b) + +b#306 = (arguments[1] | c(b) | b) + +b#307 = ci() + +b#309 = a[0] + +b#310 = arguments[1] + +b#311 = (R["identifierPrefix"] | `:${b}R${c}` | `:${b}r${c["toString"](32)}:`) + +b#312 = di() + +b#313 = di()["memoizedState"] + +b#314 = di() + +b#315 = di()["memoizedState"] + +b#316 = arguments[1] + +b#318 = arguments[1] + +b#319 = arguments[1] + +b#321 = arguments[1] + +b#322 = arguments[1] + +b#324 = arguments[1] + +b#325 = (???*0* | ???*1* | a["memoizedState"]) +- *0* b + ⚠️ pattern without value +- *1* unsupported expression + +b#326 = (arguments[1] | ch(???*0*, 1)) +- *0* unsupported expression + +b#327 = arguments[1] + +b#328 = arguments[1] + +b#329 = arguments[1] + +b#330 = arguments[1] + +b#331 = arguments[1] + +b#332 = arguments[1] + +b#333 = arguments[1] + +b#334 = arguments[1] + +b#335 = arguments[1] + +b#336 = a["stateNode"] + +b#337 = arguments[1] + +b#339 = arguments[1] + +b#340 = ( + | arguments[1] + | qj({"mode": "visible", "children": b}, a["mode"], 0, null) +) + +b#341 = arguments[1] + +b#342 = (arguments[1] | vj["bind"](null, a) | rj(b, d["children"])) + +b#343 = arguments[1] + +b#344 = arguments[1] + +b#345 = arguments[1] + +b#346 = arguments[1] + +b#347 = arguments[1] + +b#348 = arguments[1] + +b#349 = arguments[1] + +b#35 = (a["render"] | a["displayName"] | null | a["_payload"]) + +b#350 = arguments[1] + +b#351 = arguments[1] + +b#352 = (arguments[1] | a["tail"] | b["sibling"]) + +b#353 = ???*0* +- *0* unsupported expression + +b#354 = (arguments[1] | f["tail"]) + +b#355 = arguments[1] + +b#356 = arguments[1] + +b#358 = arguments[1] + +b#360 = (arguments[1] | V) + +b#363 = arguments[1] + +b#364 = (arguments[1] | b["updateQueue"] | b["lastEffect"] | null | b["next"]) + +b#365 = a["ref"] + +b#366 = (a["alternate"] | a["stateNode"]) + +b#369 = (arguments[1] | c["parentNode"] | c) + +b#37 = a["type"] + +b#370 = arguments[1] + +b#371 = arguments[1] + +b#372 = arguments[1] + +b#375 = a["updateQueue"] + +b#376 = arguments[0] + +b#377 = (arguments[1] | b["child"] | b["sibling"]) + +b#379 = (arguments[1] | d) + +b#389 = a["flags"] + +b#39 = a["type"] + +b#391 = arguments[1] + +b#392 = arguments[1] + +b#393 = V + +b#395 = V + +b#396 = V + +b#4 = arguments[1] + +b#40 = ("checked" | "value") + +b#403 = arguments[1] + +b#404 = (arguments[1] | ???*0*) +- *0* unsupported expression + +b#405 = (arguments[1] | Jk(a, d) | d | 0 | T | Ok(a, e) | Ok(a, f) | ???*0* | a["eventTimes"]) +- *0* unsupported expression + +b#407 = (arguments[1] | uk) + +b#409 = (a | c | b["return"] | b["sibling"]) + +b#411 = arguments[1] + +b#412 = (uc(a, 0) | d) + +b#413 = arguments[1] + +b#414 = K + +b#415 = (arguments[1] | 0) + +b#416 = (arguments[1] | Z | y | na) + +b#419 = arguments[1] + +b#421 = Wk(a["alternate"], a, gj) + +b#422 = (a | b["sibling"]) + +b#423 = arguments[1] + +b#424 = arguments[1] + +b#425 = pk["transition"] + +b#428 = (arguments[1] | Ki(c, b) | Oi(a, b, 1) | L()) + +b#429 = (arguments[1] | dh(b, a, 1) | b["return"]) + +b#430 = (arguments[1] | L()) + +b#431 = (arguments[1] | 1 | sc) + +b#432 = a["memoizedState"] + +b#433 = arguments[1] + +b#434 = ( + | arguments[1] + | kj(null, b, d, ???*0*, f, c) + | b["child"] + | dj(null, b, d, a, c) + | ij(null, b, d, a, c) + | Zi(null, b, d, a, c) + | aj(null, b, d, Lg(d["type"], a), c) + | mj(a, b, d, c, e) + | $i(a, b, c) +) +- *0* unsupported expression + +b#435 = arguments[1] + +b#436 = arguments[1] + +b#437 = arguments[1] + +b#44 = a["_valueTracker"] + +b#440 = (arguments[1] | a["dependencies"]) + +b#441 = (arguments[1] | Bg(g, c, b, e)) + +b#442 = arguments[1] + +b#443 = arguments[1] + +b#444 = arguments[1] + +b#445 = (arguments[1] | Bg(4, (a["children"] | []), a["key"], b)) + +b#446 = arguments[1] + +b#447 = (arguments[1] | 1 | 0) + +b#448 = arguments[1] + +b#449 = ( + | a + | b["stateNode"]["context"] + | b["stateNode"]["__reactInternalMemoizedMergedChildContext"] + | b["return"] +) + +b#450 = arguments[1] + +b#451 = (arguments[1] | ch(f, g)) + +b#453 = arguments[1] + +b#454 = arguments[1] + +b#457 = ???*0*["_internalRoot"] +- *0* unsupported expression + +b#458 = a["containerInfo"] + +b#46 = ???*0* +- *0* b + ⚠️ pattern without value + +b#460 = Hc() + +b#463 = arguments[1] + +b#466 = arguments[1] + +b#468 = a["stateNode"] + +b#469 = Zg(a, 1) + +b#47 = arguments[1] + +b#470 = Zg(a, 134217728) + +b#471 = lh(a) + +b#472 = arguments[1] + +b#473 = (arguments[1] | c["name"] | 0 | c["value"]) + +b#476 = arguments[1] + +b#477 = (arguments[1] | cl(a, 1, ???*0*, null, null, c, ???*1*, d, e)) +- *0* unsupported expression +- *1* unsupported expression + +b#478 = a["_reactInternals"] + +b#48 = arguments[1] + +b#480 = arguments[1] + +b#481 = (arguments[1] | fl(b, null, a, 1, (c | null), e, ???*0*, f, g)) +- *0* unsupported expression + +b#482 = arguments[1] + +b#484 = arguments[1] + +b#49 = (arguments[1] | b["checked"]) + +b#5 = arguments[1] + +b#50 = arguments[1] + +b#51 = (arguments[1] | `${a["_wrapperState"]["initialValue"]}`) + +b#52 = arguments[1] + +b#53 = (arguments[1] | {} | null | a[e]) + +b#54 = arguments[1] + +b#55 = (arguments[1] | b["defaultValue"] | c | "") + +b#56 = arguments[1] + +b#57 = a["textContent"] + +b#59 = arguments[1] + +b#61 = arguments[0] + +b#62 = (arguments[1] | mb["firstChild"]) + +b#63 = arguments[1] + +b#65 = ( + | arguments[0] + | (b + a["charAt"](0)["toUpperCase"]() + a["substring"](1)) +) + +b#66 = arguments[1] + +b#67 = arguments[1] + +b#68 = arguments[1] + +b#69 = arguments[1] + +b#7 = arguments[1] + +b#71 = (a["stateNode"] | Db(b)) + +b#73 = Ab + +b#74 = arguments[1] + +b#75 = arguments[1] + +b#76 = arguments[1] + +b#78 = arguments[1] + +b#8 = arguments[1] + +b#81 = arguments[1] + +b#82 = arguments[1] + +b#83 = (a | b["return"]) + +b#84 = a["memoizedState"] + +b#86 = (a["alternate"] | Vb(a)) + +b#88 = $b(a) + +b#9 = arguments[1] + +b#90 = ???*0* +- *0* b + ⚠️ pattern without value + +b#93 = (arguments[1] | a["entangledLanes"]) + +b#94 = arguments[1] + +b#95 = arguments[1] + +b#98 = [] + +b#99 = (arguments[1] | ???*0*) +- *0* unsupported expression + +ba = ("onCompositionStart" | "onCompositionEnd" | "onCompositionUpdate" | ???*0* | ???*1*) +- *0* unsupported expression +- *1* unknown new expression + +bb = (...) => FreeVar(undefined) + +bc = ca["unstable_cancelCallback"] + +bd = (...) => FreeVar(undefined) + +be = (null | FreeVar(document)["documentMode"]) + +bf = Ze("animationstart") + +bg = (...) => (c | A({}, c, d)) + +bh = (...) => FreeVar(undefined) + +bi = (...) => a + +bj = (...) => ???*0* +- *0* unsupported expression + +bk = (...) => FreeVar(undefined) + +bl = (...) => FreeVar(undefined) + +c#100 = ???*0* +- *0* unsupported expression + +c#101 = ???*0* +- *0* unsupported expression + +c#104 = arguments[2] + +c#105 = arguments[2] + +c#106 = Vb(b) + +c#107 = ( + | Yc(a["domEventName"], a["eventSystemFlags"], b[0], a["nativeEvent"]) + | a["nativeEvent"] +) + +c#108 = arguments[2] + +c#110 = (1 | 0 | Qc[0]) + +c#112 = arguments[2] + +c#113 = arguments[2] + +c#114 = arguments[2] + +c#115 = (arguments[2] | b["tag"]) + +c#117 = b["length"] + +c#120 = ???*0* +- *0* c + ⚠️ pattern without value + +c#140 = (arguments[2] | ???*0*) +- *0* unknown new expression + +c#145 = arguments[2] + +c#150 = FreeVar(Object)["keys"](a) + +c#152 = (Je(a) | c["nextSibling"] | c["parentNode"] | ???*0* | Je(c)) +- *0* unsupported expression + +c#154 = ???*0* +- *0* unsupported expression + +c#157 = (a["focusedElem"] | 0) + +c#158 = arguments[2] + +c#159 = {} + +c#160 = ???*0* +- *0* c + ⚠️ pattern without value + +c#162 = arguments[2] + +c#163 = 0 + +c#164 = (b[of] | ???*0*) +- *0* unsupported expression + +c#165 = arguments[2] + +c#168 = (arguments[2] | e["bind"](null, b, c, a)) + +c#169 = arguments[2] + +c#171 = arguments[2] + +c#172 = `${b}Capture` + +c#174 = (arguments[2] | c["return"]) + +c#176 = arguments[2] + +c#180 = (b | e["data"] | e) + +c#182 = a["data"] + +c#183 = (a["parentNode"] | b["alternate"] | a[Of]) + +c#190 = a["type"]["contextTypes"] + +c#192 = arguments[2] + +c#193 = arguments[2] + +c#195 = arguments[2] + +c#198 = eg + +c#201 = arguments[2] + +c#204 = Bg(5, null, null, 0) + +c#205 = (a["type"] | {"id": rg, "overflow": sg} | null | Bg(18, null, null, 0)) + +c#207 = b + +c#209 = a["data"] + +c#212 = ???*0* +- *0* c + ⚠️ pattern without value + +c#214 = arguments[2] + +c#218 = arguments[2] + +c#219 = (a["alternate"] | a) + +c#223 = arguments[2] + +c#224 = arguments[2] + +c#225 = ( + | a["updateQueue"] + | c["firstBaseUpdate"] + | c["next"] + | { + "baseState": d["baseState"], + "firstBaseUpdate": e, + "lastBaseUpdate": f, + "shared": d["shared"], + "effects": d["effects"] + } +) + +c#226 = arguments[2] + +c#227 = arguments[2] + +c#228 = (arguments[2] | c(d, b) | b | A({}, b, c)) + +c#230 = arguments[2] + +c#231 = arguments[2] + +c#232 = L() + +c#233 = arguments[2] + +c#234 = arguments[2] + +c#235 = arguments[2] + +c#236 = arguments[2] + +c#237 = (arguments[2] | c["_owner"]) + +c#241 = (...) => null + +c#242 = arguments[1] + +c#243 = arguments[0] + +c#246 = arguments[1] + +c#248 = arguments[2] + +c#249 = arguments[2] + +c#25 = (arguments[2] | null | "" | `${c}`) + +c#250 = arguments[2] + +c#251 = arguments[2] + +c#252 = ( + | arguments[2] + | yh(b["type"], b["key"], b["props"], null, a["mode"], c) +) + +c#253 = arguments[2] + +c#254 = arguments[2] + +c#262 = lb(b, a["type"]) + +c#264 = (b["memoizedState"] | c["dehydrated"]) + +c#266 = 0 + +c#267 = arguments[2] + +c#272 = b["queue"] + +c#273 = b["queue"] + +c#274 = N + +c#275 = (arguments[2] | b["stores"]) + +c#276 = arguments[2] + +c#277 = arguments[2] + +c#278 = b() + +c#28 = ???*0* +- *0* c + ⚠️ pattern without value + +c#282 = (arguments[2] | b["lastEffect"]) + +c#283 = arguments[2] + +c#284 = arguments[2] + +c#29 = FreeVar(Error)["prepareStackTrace"] + +c#290 = (arguments[2] | c["concat"]([a]) | null) + +c#291 = di() + +c#292 = di() + +c#293 = (arguments[2] | yc()) + +c#294 = C + +c#295 = ( + | arguments[2] + | {"lane": d, "action": c, "hasEagerState": ???*0*, "eagerState": null, "next": null} + | Yg(a, b, c, d) +) +- *0* unsupported expression + +c#296 = (arguments[2] | Yg(a, b, e, d)) + +c#299 = a["pending"] + +c#3 = 1 + +c#300 = arguments[2] + +c#302 = (arguments[2] | c["concat"]([a]) | null) + +c#305 = ci() + +c#306 = arguments[2] + +c#310 = (arguments[2] | c() | b()) + +c#311 = (sg | (???*0*["toString"](32) + c) | ???*1*) +- *0* unsupported expression +- *1* unsupported expression + +c#316 = "" + +c#318 = arguments[2] + +c#320 = ???*0* +- *0* c + ⚠️ pattern without value + +c#321 = (arguments[2] | ch(???*0*, c)) +- *0* unsupported expression + +c#322 = (arguments[2] | ch(???*0*, c)) +- *0* unsupported expression + +c#323 = b["stack"] + +c#324 = arguments[2] + +c#326 = arguments[2] + +c#327 = arguments[2] + +c#328 = (arguments[2] | c["render"] | bi()) + +c#329 = (arguments[2] | c["compare"] | c | Ie) + +c#330 = arguments[2] + +c#331 = arguments[2] + +c#332 = b["ref"] + +c#333 = (arguments[2] | Xh(a, b, c, d, f, e)) + +c#334 = arguments[2] + +c#335 = arguments[2] + +c#337 = arguments[2] + +c#339 = (arguments[2] | b["deletions"]) + +c#341 = arguments[2] + +c#342 = arguments[2] + +c#343 = arguments[2] + +c#344 = arguments[2] + +c#345 = (arguments[2] | b["child"] | c["sibling"] | e | null) + +c#347 = (arguments[2] | wh(a, a["pendingProps"]) | ???*0*) +- *0* unsupported expression + +c#348 = arguments[2] + +c#349 = (b["child"] | c["child"] | c["return"] | c["sibling"]) + +c#350 = (arguments[2] | null | {} | k) + +c#351 = arguments[2] + +c#352 = (null | b | a["tail"] | c["sibling"]) + +c#353 = 0 + +c#354 = ( + | arguments[2] + | b["type"] + | Hh(Gh["current"]) + | b["memoizedProps"] + | b["child"] + | c["sibling"] + | a["updateQueue"] + | f["last"] + | M["current"] +) + +c#356 = a["ref"] + +c#358 = arguments[2] + +c#36 = ???*0* +- *0* c + ⚠️ pattern without value + +c#360 = ( + | {"start": a["selectionStart"], "end": a["selectionEnd"]} + | ???*0* + | FreeVar(window) + | a["ownerDocument"] + | d["anchorNode"] + | null + | {"start": h, "end": k} + | c + | {"start": 0, "end": 0} +) +- *0* unsupported expression + +c#363 = arguments[2] + +c#364 = (???*0* | c["next"]) +- *0* unsupported expression + +c#365 = a["stateNode"] + +c#369 = (arguments[2] | c["_reactRootContainer"]) + +c#370 = arguments[2] + +c#371 = (arguments[2] | c["child"] | c["sibling"]) + +c#372 = (arguments[2] | c["stateNode"]) + +c#375 = (a["stateNode"] | ???*0*) +- *0* unsupported expression + +c#377 = b["deletions"] + +c#379 = (a["alternate"] | r["return"]) + +c#389 = (a["return"] | c["return"]) + +c#391 = arguments[2] + +c#392 = arguments[2] + +c#393 = (b["alternate"] | null | b["child"]["stateNode"] | h | b["sibling"]) + +c#395 = b["sibling"] + +c#396 = b["return"] + +c#40 = FreeVar(Object)["getOwnPropertyDescriptor"](a["constructor"]["prototype"], b) + +c#403 = arguments[2] + +c#404 = (a["callbackNode"] | null | fc | gc | hc | jc | Gk(c, Hk["bind"](null, a))) + +c#405 = (a["callbackNode"] | qk) + +c#407 = tk + +c#409 = (b["updateQueue"] | c["stores"] | b["child"]) + +c#411 = ???*0* +- *0* unsupported expression + +c#412 = (Jk(a, b) | Ok(a, d) | qk) + +c#413 = K + +c#414 = pk["transition"] + +c#415 = (a["timeoutHandle"] | Y["return"] | c["return"] | Wg[b]) + +c#416 = (Y | c["return"]) + +c#419 = K + +c#422 = (b["alternate"] | Fj(c, b, gj) | Jj(c, b)) + +c#423 = arguments[2] + +c#424 = (arguments[2] | a["finishedWork"] | 0) + +c#425 = C + +c#428 = arguments[2] + +c#429 = arguments[2] + +c#430 = arguments[2] + +c#431 = L() + +c#432 = (0 | b["retryLane"]) + +c#433 = (0 | e["retryLane"]) + +c#434 = (arguments[2] | Ch(b, null, d, c) | c["sibling"]) + +c#436 = arguments[2] + +c#437 = arguments[2] + +c#44 = b["getValue"]() + +c#440 = (a["alternate"] | Bg(a["tag"], b, a["key"], a["mode"])) + +c#441 = arguments[2] + +c#442 = arguments[2] + +c#443 = arguments[2] + +c#444 = arguments[2] + +c#445 = arguments[2] + +c#446 = arguments[2] + +c#447 = arguments[2] + +c#448 = arguments[2] + +c#449 = a["type"] + +c#450 = (arguments[2] | a["current"]) + +c#451 = (arguments[2] | el(c)) + +c#453 = a["retryLane"] + +c#460 = 0 + +c#463 = arguments[2] + +c#466 = arguments[2] + +c#468 = tc(b["pendingLanes"]) + +c#469 = L() + +c#47 = b["checked"] + +c#470 = L() + +c#471 = Zg(a, b) + +c#472 = C + +c#473 = ( + | arguments[2] + | a + | c["parentNode"] + | c["querySelectorAll"]( + `input[name=${FreeVar(JSON)["stringify"](`${b}`)}][type="radio"]` + ) +) + +c#476 = (FreeVar(arguments)[2] | null) + +c#477 = ???*0* +- *0* unsupported expression + +c#48 = ("" | b["defaultValue"] | Sa((b["value"] | c))) + +c#480 = arguments[2] + +c#481 = (arguments[2] | d[a]) + +c#482 = arguments[2] + +c#484 = arguments[2] + +c#50 = Sa(b["value"]) + +c#51 = (arguments[2] | a["name"]) + +c#52 = arguments[2] + +c#53 = (arguments[2] | 0 | `${Sa(c)}`) + +c#55 = (b["value"] | b["children"] | c[0] | b) + +c#56 = (Sa(b["value"]) | `${c}`) + +c#61 = arguments[1] + +c#63 = a["firstChild"] + +c#66 = arguments[2] + +c#67 = (???*0* | "cssFloat") +- *0* c + ⚠️ pattern without value + +c#7 = arguments[2] + +c#75 = arguments[2] + +c#76 = (a["stateNode"] | d[b]) + +c#78 = arguments[2] + +c#8 = arguments[2] + +c#81 = arguments[2] + +c#82 = arguments[2] + +c#83 = (a | b["return"]) + +c#86 = (a | d | e | f) + +c#9 = arguments[2] + +c#93 = (a["pendingLanes"] | ???*0*) +- *0* unsupported expression + +c#95 = a["suspendedLanes"] + +c#98 = 0 + +c#99 = arguments[2] + +ca = FreeVar(Require)("scheduler") + +cb = (...) => FreeVar(undefined) + +cc = ca["unstable_shouldYield"] + +cd = ua["ReactCurrentBatchConfig"] + +ce = ???*0* +- *0* unsupported expression + +cf = Ze("transitionend") + +cg = (...) => ???*0* +- *0* unsupported expression + +ch = (...) => {"eventTime": a, "lane": b, "tag": 0, "payload": null, "callback": null, "next": null} + +ci = (...) => P + +cj = (...) => ($i(a, b, e) | dj(a, b, c, d, e)) + +ck = (...) => FreeVar(undefined) + +cl = (...) => a + +d#100 = a["eventTimes"] + +d#101 = ???*0* +- *0* unsupported expression + +d#104 = arguments[3] + +d#105 = arguments[3] + +d#107 = ???*0* +- *0* unknown new expression + +d#110 = (Kc[c] | Qc[c]) + +d#112 = arguments[3] + +d#113 = arguments[3] + +d#114 = arguments[3] + +d#115 = arguments[3] + +d#117 = (???*0* | 1) +- *0* d + ⚠️ pattern without value + +d#120 = arguments[1] + +d#140 = arguments[3] + +d#150 = (FreeVar(Object)["keys"](b) | 0) + +d#152 = (???*0* | (a + c["textContent"]["length"])) +- *0* d + ⚠️ pattern without value + +d#155 = ???*0* +- *0* d + ⚠️ pattern without value + +d#157 = (a["selectionRange"] | f | FreeVar(Math)["min"](d["end"], e)) + +d#158 = ( + | c["document"] + | c + | c["ownerDocument"] + | Qe + | {"start": d["selectionStart"], "end": d["selectionEnd"]} + | ???*0*["getSelection"]() + | { + "anchorNode": d["anchorNode"], + "anchorOffset": d["anchorOffset"], + "focusNode": d["focusNode"], + "focusOffset": d["focusOffset"] + } + | oe(Re, "onSelect") +) +- *0* unsupported expression + +d#162 = (a["type"] | "unknown-event") + +d#163 = (a[c] | d["listeners"]) + +d#164 = `${a}__bubble` + +d#165 = 0 + +d#168 = arguments[3] + +d#169 = (arguments[3] | ???*0* | d["return"]) +- *0* unsupported expression + +d#170 = (f | oe(d, "onBeforeInput")) + +d#172 = [] + +d#174 = arguments[3] + +d#180 = 0 + +d#190 = a["stateNode"] + +d#193 = (a["stateNode"] | d["getChildContext"]()) + +d#195 = a["stateNode"] + +d#198 = (c[a] | d(???*0*)) +- *0* unsupported expression + +d#201 = rg + +d#207 = xg + +d#214 = a["alternate"] + +d#218 = arguments[3] + +d#223 = (a["updateQueue"] | d["shared"]) + +d#224 = b["lanes"] + +d#225 = (a["alternate"] | d["updateQueue"]) + +d#226 = arguments[3] + +d#227 = (a[b] | c) + +d#228 = arguments[3] + +d#230 = L() + +d#231 = L() + +d#232 = lh(a) + +d#233 = arguments[3] + +d#234 = (???*0* | b["contextTypes"]) +- *0* unsupported expression + +d#235 = arguments[3] + +d#236 = arguments[3] + +d#237 = c["stateNode"] + +d#241 = (...) => a + +d#242 = b["deletions"] + +d#243 = (arguments[1] | d["sibling"]) + +d#246 = (arguments[2] | b["alternate"] | d["index"]) + +d#248 = arguments[3] + +d#249 = ( + | arguments[3] + | e(b, c["props"]) + | yh(c["type"], c["key"], c["props"], null, a["mode"], d) +) + +d#25 = (arguments[3] | e["attributeNamespace"]) + +d#250 = arguments[3] + +d#251 = arguments[3] + +d#252 = b["_init"] + +d#253 = arguments[3] + +d#254 = arguments[3] + +d#259 = ( + | arguments[1] + | e(l, f["props"]["children"]) + | e(l, f["props"]) + | Ah(f["props"]["children"], a["mode"], h, f["key"]) + | e(d, (f["children"] | [])) + | d["sibling"] + | zh(f, a["mode"], h) + | e(d, f) + | xh(f, a["mode"], h) +) + +d#267 = arguments[3] + +d#272 = (O | d["baseState"] | l["eagerState"] | a(d, l["action"])) + +d#273 = c["dispatch"] + +d#274 = (di() | d["queue"]) + +d#276 = arguments[3] + +d#279 = ???*0* +- *0* d + ⚠️ pattern without value + +d#282 = (arguments[3] | c["next"]) + +d#283 = arguments[3] + +d#284 = (arguments[3] | null | d) + +d#29 = (l | l | l) + +d#291 = c["memoizedState"] + +d#292 = c["memoizedState"] + +d#294 = Qh["transition"] + +d#295 = lh(a) + +d#296 = lh(a) + +d#300 = b["lanes"] + +d#306 = ci() + +d#310 = N + +d#311 = rg + +d#316 = (b | d["return"]) + +d#321 = b["value"] + +d#322 = a["type"]["getDerivedStateFromError"] + +d#324 = (a["pingCache"] | ???*0*) +- *0* unsupported expression + +d#326 = arguments[3] + +d#327 = arguments[3] + +d#328 = (arguments[3] | Xh(a, b, c, d, f, e)) + +d#329 = arguments[3] + +d#330 = (arguments[3] | f) + +d#331 = (b["pendingProps"] | f["baseLanes"] | c | ???*0*) +- *0* unsupported expression + +d#333 = (arguments[3] | bi()) + +d#334 = (arguments[3] | ???*0* | h | l) +- *0* unsupported expression + +d#335 = (arguments[3] | b["stateNode"]) + +d#337 = arguments[3] + +d#339 = ( + | b["pendingProps"] + | b["mode"] + | b["child"] + | wh(e, k) + | f + | wh(f, {"mode": "visible", "children": d["children"]}) +) + +d#341 = arguments[3] + +d#342 = ( + | arguments[3] + | Li(FreeVar(Error)(p(422))) + | qj({"mode": "visible", "children": d["children"]}, e, 0, null) + | ???*0* + | h + | Li(f, d, ???*1*) + | R + | Li(FreeVar(Error)(p(421))) +) +- *0* unsupported expression +- *1* unsupported expression + +d#343 = a["alternate"] + +d#344 = arguments[3] + +d#345 = (b["pendingProps"] | M["current"] | ???*0*) +- *0* unsupported expression + +d#348 = (b["type"]["_context"] | b["memoizedState"] | ???*0*) +- *0* unsupported expression + +d#350 = (arguments[3] | Ya(a, d) | A({}, d, {"value": ???*0*}) | gb(a, d)) +- *0* unsupported expression + +d#351 = arguments[3] + +d#352 = (null | c) + +d#353 = 0 + +d#354 = ( + | b["pendingProps"] + | b["stateNode"] + | e + | ???*0* + | ???*1*["createTextNode"](d) + | b["memoizedState"] + | g["updateQueue"] + | c +) +- *0* unsupported expression +- *1* unsupported expression + +d#357 = ???*0* +- *0* d + ⚠️ pattern without value + +d#359 = ???*0* +- *0* d + ⚠️ pattern without value + +d#360 = (???*0* | d["focusOffset"]) +- *0* unsupported expression + +d#363 = (b["updateQueue"] | d["lastEffect"] | null | d["next"]) + +d#364 = c["create"] + +d#369 = a["tag"] + +d#370 = a["tag"] + +d#372 = (X | c["updateQueue"] | d["lastEffect"] | d["next"] | c["stateNode"] | U) + +d#376 = ck["bind"](null, a, b) + +d#377 = 0 + +d#379 = (a["flags"] | r) + +d#389 = c + +d#392 = ???*0* +- *0* unsupported expression + +d#393 = b["stateNode"] + +d#396 = b["stateNode"] + +d#40 = (`${a[b]}` | `${a}` | `${a}`) + +d#403 = arguments[3] + +d#404 = uc(a, (Z | 0)) + +d#405 = (uc(a, (Z | 0)) | e | f | ???*0*) +- *0* unsupported expression + +d#409 = 0 + +d#411 = ???*0* +- *0* unsupported expression + +d#412 = xc(a) + +d#414 = C + +d#415 = (c | d["type"]["childContextTypes"] | c["interleaved"]) + +d#416 = (N["memoizedState"] | d["next"]) + +d#419 = Kk() + +d#423 = C + +d#424 = (arguments[3] | a["onRecoverableError"]) + +d#425 = ???*0* +- *0* unsupported expression + +d#429 = b["stateNode"] + +d#430 = a["pingCache"] + +d#433 = a["stateNode"] + +d#434 = ( + | b["type"] + | b["elementType"] + | e(d["_payload"]) + | b["pendingProps"] + | g["element"] + | b["type"]["_context"] + | b["pendingProps"]["children"] + | d(e) +) + +d#436 = arguments[3] + +d#437 = arguments[3] + +d#44 = ("" | "true" | "false" | a["value"]) + +d#441 = (arguments[3] | a | null) + +d#442 = arguments[3] + +d#443 = arguments[3] + +d#446 = arguments[3] + +d#447 = arguments[3] + +d#448 = (FreeVar(arguments)[3] | null) + +d#450 = (arguments[3] | L()) + +d#451 = (arguments[3] | null | d) + +d#463 = (arguments[3] | *anonymous function 127055* | *anonymous function 127285*) + +d#466 = arguments[3] + +d#471 = L() + +d#473 = c[b] + +d#477 = ("" | b["identifierPrefix"]) + +d#48 = (b["checked"] | b["defaultChecked"]) + +d#481 = (???*0* | null) +- *0* unsupported expression + +d#484 = arguments[3] + +d#50 = b["type"] + +d#51 = b["type"] + +d#53 = arguments[3] + +d#56 = Sa(b["defaultValue"]) + +d#61 = arguments[2] + +d#67 = ???*0* +- *0* unsupported expression + +d#7 = arguments[3] + +d#76 = (Db(c) | ???*0*) +- *0* unsupported expression + +d#78 = arguments[3] + +d#8 = arguments[3] + +d#81 = arguments[3] + +d#82 = arguments[3] + +d#86 = (b | e["return"] | f | e) + +d#9 = arguments[3] + +d#93 = (0 | tc(h) | tc(f) | tc(g)) + +d#95 = a["pingedLanes"] + +da = ???*0* +- *0* unknown new expression + +db = (...) => FreeVar(undefined) + +dc = ca["unstable_requestPaint"] + +dd = ???*0* +- *0* unsupported expression + +de = ???*0* +- *0* unsupported expression + +df = ???*0* +- *0* unknown new expression + +dg = (...) => FreeVar(undefined) + +dh = (...) => (null | Zg(a, c)) + +di = (...) => P + +dj = (...) => ($i(a, b, e) | b["child"]) + +dk = (...) => FreeVar(undefined) + +dl = (...) => {"$$typeof": wa, "key": (null | `${d}`), "children": a, "containerInfo": b, "implementation": c} + +e#100 = ???*0* +- *0* unsupported expression + +e#101 = ???*0* +- *0* unsupported expression + +e#104 = arguments[4] + +e#105 = arguments[4] + +e#112 = C + +e#113 = C + +e#114 = (Yc(a, b, c, d) | f) + +e#117 = (kd["value"] | kd["textContent"]) + +e#120 = arguments[2] + +e#150 = c[d] + +e#157 = (c["textContent"]["length"] | d | Ke(c, f)) + +e#163 = d["event"] + +e#168 = (ed | gd | fd | ???*0*) +- *0* unsupported expression + +e#169 = arguments[4] + +e#170 = (xb(c) | ???*0*) +- *0* unknown new expression + +e#172 = (a | f) + +e#174 = arguments[4] + +e#180 = c["nextSibling"] + +e#190 = {} + +e#193 = ???*0* +- *0* e + ⚠️ pattern without value + +e#199 = ???*0* +- *0* e + ⚠️ pattern without value + +e#201 = ???*0* +- *0* unsupported expression + +e#218 = b["interleaved"] + +e#223 = (d["pending"] | d["interleaved"]) + +e#225 = (null | ???*0*) +- *0* unsupported expression + +e#226 = (a["updateQueue"] | b | e["next"]) + +e#227 = d["callback"] + +e#230 = lh(a) + +e#231 = lh(a) + +e#232 = ch(c, d) + +e#233 = arguments[4] + +e#234 = (Vf | Xf | H["current"]) + +e#236 = a["stateNode"] + +e#237 = d + +e#241 = (...) => a + +e#25 = (z[b] | null | e["type"]) + +e#253 = (b["key"] | null | c["_init"]) + +e#254 = arguments[4] + +e#255 = arguments[0] + +e#257 = arguments[0] + +e#267 = arguments[4] + +e#272 = (d["baseQueue"] | f | a | e["next"]) + +e#273 = (c["pending"] | e["next"]) + +e#274 = b() + +e#283 = ci() + +e#284 = di() + +e#29 = l["stack"]["split"]( + " +" +) + +e#295 = L() + +e#296 = ( + | {"lane": d, "action": c, "hasEagerState": ???*0*, "eagerState": null, "next": null} + | L() +) +- *0* unsupported expression + +e#310 = ci() + +e#316 = ( + | c + | ` +Error generating stack: ${f["message"]} +${f["stack"]}` +) + +e#322 = b["value"] + +e#324 = (???*0* | d["get"](b)) +- *0* unknown new expression + +e#326 = arguments[4] + +e#328 = arguments[4] + +e#329 = arguments[4] + +e#330 = arguments[4] + +e#331 = d["children"] + +e#333 = arguments[4] + +e#334 = arguments[4] + +e#335 = arguments[4] + +e#337 = arguments[4] + +e#339 = (M["current"] | a["memoizedState"] | a["child"]) + +e#342 = (arguments[4] | b["mode"] | 2 | 8 | 32 | 268435456 | 0 | e) + +e#344 = arguments[4] + +e#345 = (d["revealOrder"] | null | c | b["child"] | c["sibling"] | a) + +e#348 = (b["memoizedProps"]["value"] | b["memoizedState"]) + +e#350 = (a["memoizedProps"] | Ya(a, e) | A({}, e, {"value": ???*0*}) | gb(a, e)) +- *0* unsupported expression + +e#353 = (a["child"] | e["sibling"]) + +e#354 = ( + | Hh(Gh["current"]) + | 0 + | null + | ["children", h] + | ["children", `${h}`] + | d + | Ya(a, d) + | A({}, d, {"value": ???*0*}) + | gb(a, d) +) +- *0* unsupported expression + +e#360 = d["anchorOffset"] + +e#363 = (???*0* | e["next"]) +- *0* unsupported expression + +e#372 = (Yj | ???*0* | e["next"]) +- *0* unsupported expression + +e#377 = c[d] + +e#379 = (a["stateNode"] | a["child"] | q["stateNode"]) + +e#389 = d["stateNode"] + +e#392 = V + +e#393 = (c["memoizedProps"] | Lg(b["type"], c["memoizedProps"])) + +e#396 = b["return"] + +e#40 = c["get"] + +e#405 = (K | xc(a) | a["current"]["alternate"] | a["suspendedLanes"] | ???*0* | g) +- *0* unsupported expression + +e#409 = (c[d] | e["value"]) + +e#415 = d["next"] + +e#416 = d["queue"] + +e#420 = ???*0* +- *0* e + ⚠️ pattern without value + +e#423 = pk["transition"] + +e#424 = (a["finishedLanes"] | b[c]) + +e#425 = K + +e#433 = a["memoizedState"] + +e#434 = ( + | Yf(b, H["current"]) + | Xh(null, b, d, a, e, c) + | d["_init"] + | ???*0* + | b["pendingProps"] + | e + | Lg(d, e) + | f["element"] + | Ki(FreeVar(Error)(p(423)), b) + | Ki(FreeVar(Error)(p(424)), b) + | b["type"] + | Vg(e) + | Lg(d, b["pendingProps"]) + | Lg(d["type"], e) +) +- *0* unsupported expression + +e#441 = arguments[4] + +e#446 = arguments[4] + +e#447 = arguments[4] + +e#450 = (arguments[4] | lh(c)) + +e#451 = b["current"] + +e#463 = (arguments[4] | a["lastChild"]) + +e#466 = (arguments[4] | *anonymous function 127571*) + +e#473 = Db(d) + +e#477 = (ll | b["onRecoverableError"]) + +e#481 = (???*0* | c["_getVersion"] | e(c["_source"])) +- *0* unsupported expression + +e#53 = (0 | b["hasOwnProperty"](`$${a[c]["value"]}`)) + +e#61 = arguments[3] + +e#67 = rb(c, b[c], d) + +e#78 = arguments[4] + +e#81 = arguments[4] + +e#82 = arguments[4] + +e#86 = c["return"] + +e#9 = arguments[4] + +e#93 = (a["suspendedLanes"] | ???*0*) +- *0* unsupported expression + +e#95 = a["expirationTimes"] + +ea = {} + +eb = FreeVar(Array)["isArray"] + +ec = ca["unstable_getCurrentPriorityLevel"] + +ed = (...) => FreeVar(undefined) + +ee = FreeVar(String)["fromCharCode"](32) + +ef = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel"["split"](" ") + +eg = (null | [a] | eg["slice"]((a + 1))) + +eh = (...) => FreeVar(undefined) + +ei = (...) => (b(a) | b) + +ej = (...) => (null | b["child"]) + +ek = (...) => FreeVar(undefined) + +el = (...) => (Vf | bg(a, c, b) | b) + +f#100 = ???*0* +- *0* unsupported expression + +f#104 = arguments[5] + +f#105 = e["pointerId"] + +f#112 = cd["transition"] + +f#113 = cd["transition"] + +f#114 = (Cb(e) | Yc(a, b, c, d)) + +f#117 = e["length"] + +f#120 = arguments[3] + +f#157 = (FreeVar(Math)["min"](d["start"], e) | e) + +f#163 = (???*0* | k) +- *0* unsupported expression + +f#169 = (d | g) + +f#172 = (e["stateNode"] | Kb(a, c) | Kb(a, b)) + +f#174 = b["_reactName"] + +f#190 = ???*0* +- *0* f + ⚠️ pattern without value + +f#201 = ((???*0* + e) | ???*1*["toString"](32)) +- *0* unsupported expression +- *1* unsupported expression + +f#225 = (null | g | ???*0* | b) +- *0* unsupported expression + +f#226 = (e["firstBaseUpdate"] | l) + +f#230 = ch(d, e) + +f#231 = ch(d, e) + +f#233 = arguments[5] + +f#234 = (b["contextType"] | Vg(f) | Yf(a, e) | Vf) + +f#236 = (b["contextType"] | Xf | H["current"] | b["getDerivedStateFromProps"]) + +f#237 = `${a}` + +f#241 = (...) => (c | ???*0* | d) +- *0* unsupported expression + +f#249 = c["type"] + +f#251 = arguments[4] + +f#254 = d["_init"] + +f#259 = (arguments[2] | f["props"]["children"] | `${f}`) + +f#267 = (arguments[5] | 0) + +f#272 = (c["pending"] | e["next"] | e["lane"]) + +f#273 = (b["memoizedState"] | a(f, g["action"])) + +f#274 = ???*0* +- *0* unsupported expression + +f#284 = (???*0* | g["destroy"]) +- *0* unsupported expression + +f#29 = d["stack"]["split"]( + " +" +) + +f#296 = (a["alternate"] | b["lastRenderedReducer"]) + +f#310 = {"value": c, "getSnapshot": b} + +f#317 = ???*0* +- *0* f + ⚠️ pattern without value + +f#322 = a["stateNode"] + +f#328 = b["ref"] + +f#329 = (c["type"] | a["child"]) + +f#330 = a["memoizedProps"] + +f#331 = (a["memoizedState"] | null) + +f#333 = (Xf | H["current"] | Yf(b, f)) + +f#334 = ???*0* +- *0* unsupported expression + +f#335 = arguments[5] + +f#339 = ( + | ???*0* + | b["child"] + | qj(g, d, 0, null) + | d["fallback"] + | wh(h, f) + | Ah(f, g, c, null) + | a["child"] +) +- *0* unsupported expression + +f#342 = (arguments[5] | d["fallback"] | Ah(f, e, g, null) | FreeVar(Error)(p(419))) + +f#344 = a["memoizedState"] + +f#345 = d["tail"] + +f#350 = (null | [] | f) + +f#354 = ( + | b["memoizedProps"] + | ???*0* + | d["value"] + | ???*1* + | Gg(b) + | b["memoizedState"] + | f["dehydrated"] + | null + | c +) +- *0* f + ⚠️ pattern without value +- *1* unsupported expression + +f#360 = d["focusNode"] + +f#363 = e["destroy"] + +f#372 = (e | f["tag"]) + +f#377 = a + +f#379 = (a["memoizedProps"] | ???*0* | e["style"]) +- *0* unsupported expression + +f#389 = Vj(a) + +f#392 = (e["child"] | f["sibling"]) + +f#393 = b["updateQueue"] + +f#396 = b["return"] + +f#40 = c["set"] + +f#405 = (Kk() | xc(a) | ???*0*) +- *0* unsupported expression + +f#409 = e["getSnapshot"] + +f#415 = c["pending"] + +f#416 = (a | ???*0* | g | f["return"]) +- *0* unsupported expression + +f#424 = (???*0* | pk["transition"] | a["pendingLanes"]) +- *0* unsupported expression + +f#425 = V + +f#434 = ( + | bi() + | ???*0* + | b["memoizedState"] + | { + "element": d, + "isDehydrated": ???*1*, + "cache": g["cache"], + "pendingSuspenseBoundaries": g["pendingSuspenseBoundaries"], + "transitions": g["transitions"] + } + | a["memoizedProps"] + | null + | b["memoizedProps"] + | b["child"] + | g["sibling"] + | g +) +- *0* unsupported expression +- *1* unsupported expression + +f#441 = arguments[5] + +f#447 = (arguments[5] | Bg(3, null, null, b)) + +f#450 = (arguments[5] | ch(d, e)) + +f#451 = L() + +f#463 = d + +f#466 = c["_reactRootContainer"] + +f#481 = ("" | c["identifierPrefix"]) + +f#78 = arguments[5] + +f#81 = arguments[5] + +f#82 = arguments[5] + +f#86 = (e["alternate"] | e["child"] | f["sibling"]) + +f#9 = arguments[5] + +f#93 = (a["pingedLanes"] | ???*0*) +- *0* unsupported expression + +f#95 = a["pendingLanes"] + +fa = (...) => FreeVar(undefined) + +fb = (...) => FreeVar(undefined) + +fc = ca["unstable_ImmediatePriority"] + +fd = (...) => FreeVar(undefined) + +fe = ???*0* +- *0* unsupported expression + +ff = (...) => FreeVar(undefined) + +fg = ???*0* +- *0* unsupported expression + +fh = (...) => FreeVar(undefined) + +fi = (...) => [b["memoizedState"], c["dispatch"]] + +fj = Uf(0) + +fk = (...) => FreeVar(undefined) + +fl = (...) => a + +g#117 = ???*0* +- *0* unsupported expression + +g#120 = arguments[4] + +g#157 = Ke(c, d) + +g#163 = (???*0* | 0) +- *0* unsupported expression + +g#169 = (d["tag"] | d["return"] | g["return"] | Wc(h)) + +g#170 = [] + +g#174 = [] + +g#201 = ???*0* +- *0* unsupported expression + +g#225 = { + "eventTime": c["eventTime"], + "lane": c["lane"], + "tag": c["tag"], + "payload": c["payload"], + "callback": c["callback"], + "next": null +} + +g#226 = (e["lastBaseUpdate"] | k | 0) + +g#233 = arguments[6] + +g#241 = (...) => b + +g#255 = (arguments[1] | 0 | f(n, g, w) | f(u, g, w) | f(x, g, w)) + +g#257 = (arguments[1] | 0 | f(t, g, w) | f(n, g, w)) + +g#272 = (e["next"] | null | d) + +g#273 = (???*0* | g["next"]) +- *0* unsupported expression + +g#284 = O["memoizedState"] + +g#29 = ???*0* +- *0* unsupported expression + +g#296 = b["lastRenderedState"] + +g#329 = f["memoizedProps"] + +g#334 = b["stateNode"] + +g#335 = ???*0* +- *0* unsupported expression + +g#339 = ( + | ???*0* + | d["children"] + | {"mode": "hidden", "children": g} + | b["mode"] + | a["child"]["memoizedState"] + | oj(c) + | {"baseLanes": ???*1*, "cachePool": null, "transitions": g["transitions"]} +) +- *0* unsupported expression +- *1* unsupported expression + +g#342 = arguments[6] + +g#350 = ???*0* +- *0* g + ⚠️ pattern without value + +g#354 = (???*0* | e | e["ownerDocument"] | a | vb(c, d) | f["rendering"] | Mh(a) | f["alternate"]) +- *0* g + ⚠️ pattern without value + +g#360 = 0 + +g#372 = f["destroy"] + +g#377 = b + +g#379 = (c["memoizedProps"] | f | 0 | k["display"] | null) + +g#389 = d["stateNode"]["containerInfo"] + +g#392 = (???*0* | Kj | V) +- *0* unsupported expression + +g#393 = b["updateQueue"] + +g#396 = b["return"] + +g#405 = (???*0* | b[g]) +- *0* unsupported expression + +g#410 = ???*0* +- *0* g + ⚠️ pattern without value + +g#415 = f["next"] + +g#416 = c["return"] + +g#424 = C + +g#425 = (f["child"] | V | w) + +g#434 = ( + | b["memoizedState"] + | e["children"] + | null + | e["value"] + | f["child"] + | f["return"] + | f["sibling"] + | f + | g["return"] +) + +g#441 = (2 | 1 | 5 | 8 | 10 | 9 | 11 | 14 | 16) + +g#447 = arguments[6] + +g#450 = arguments[6] + +g#451 = lh(e) + +g#463 = fl(b, d, a, 0, null, ???*0*, ???*1*, "", ql) +- *0* unsupported expression +- *1* unsupported expression + +g#466 = (f | rl(c, b, a, e, d)) + +g#481 = (ll | c["onRecoverableError"]) + +g#78 = arguments[6] + +g#81 = arguments[6] + +g#82 = arguments[6] + +g#86 = ???*0* +- *0* unsupported expression + +g#9 = arguments[6] + +g#93 = ???*0* +- *0* unsupported expression + +g#95 = ???*0* +- *0* unsupported expression + +gb = (...) => A( + {}, + b, + { + "value": ???*0*, + "defaultValue": ???*1*, + "children": `${a["_wrapperState"]["initialValue"]}` + } +) +- *0* unsupported expression +- *1* unsupported expression + +gc = ca["unstable_UserBlockingPriority"] + +gd = (...) => FreeVar(undefined) + +ge = (...) => ???*0* +- *0* unsupported expression + +gf = 0 + +gg = ???*0* +- *0* unsupported expression + +gh = (...) => FreeVar(undefined) + +gi = (...) => [f, d] + +gj = (0 | fj["current"] | b) + +gk = (B() | 0) + +gl = (...) => g + +h#163 = (d[g] | h["listener"]) + +h#169 = (d["stateNode"]["containerInfo"] | h["parentNode"]) + +h#170 = ( + | df["get"](a) + | ???*0* + | ???*1* + | e + | h["defaultView"] + | h["parentWindow"] + | FreeVar(window) + | e["ownerDocument"] + | ue(d) +) +- *0* unknown new expression +- *1* unsupported expression + +h#174 = (c | l) + +h#226 = (e["shared"]["pending"] | m["lastBaseUpdate"] | f | h["next"] | r["next"]) + +h#241 = (...) => b + +h#255 = arguments[2] + +h#257 = (arguments[2] | l["call"](h)) + +h#259 = ( + | arguments[3] + | yh(f["type"], f["key"], f["props"], null, a["mode"], h) +) + +h#272 = ???*0* +- *0* unsupported expression + +h#29 = ???*0* +- *0* unsupported expression + +h#296 = f(g, c) + +h#334 = (b["memoizedProps"] | $g | oh(b, c, h, d, r, k, l)) + +h#335 = (null | d["render"]()) + +h#339 = (???*0* | g | ???*1* | e["dehydrated"] | e["sibling"]) +- *0* h + ⚠️ pattern without value +- *1* unsupported expression + +h#342 = (d["dgst"] | ???*0*) +- *0* unsupported expression + +h#350 = (e[l] | ???*0* | h["__html"]) +- *0* unsupported expression + +h#354 = (f[g] | e) + +h#360 = (???*0* | (g + e) | g) +- *0* unsupported expression + +h#373 = ???*0* +- *0* h + ⚠️ pattern without value + +h#374 = ???*0* +- *0* h + ⚠️ pattern without value + +h#377 = (g | h["return"]) + +h#379 = (a["type"] | q["stateNode"]) + +h#389 = Vj(a) + +h#392 = (e["alternate"] | Kj) + +h#393 = b["stateNode"] + +h#396 = b["sibling"] + +h#406 = ???*0* +- *0* h + ⚠️ pattern without value + +h#416 = (c | k) + +h#424 = K + +h#425 = (f["deletions"] | V) + +h#434 = (f["dependencies"] | g["alternate"]) + +h#447 = arguments[7] + +h#450 = arguments[7] + +h#463 = d + +h#466 = e + +h#78 = arguments[7] + +h#81 = arguments[7] + +h#82 = arguments[7] + +h#86 = (e["child"] | h["sibling"] | f["child"]) + +h#93 = ???*0* +- *0* unsupported expression + +h#95 = ???*0* +- *0* unsupported expression + +ha = (...) => FreeVar(undefined) + +hb = (...) => FreeVar(undefined) + +hc = ca["unstable_NormalPriority"] + +hd = (...) => FreeVar(undefined) + +he = (...) => (a["data"] | null) + +hf = ef[gf] + +hg = (...) => FreeVar(undefined) + +hh = 0 + +hi = (...) => FreeVar(undefined) + +hj = (...) => FreeVar(undefined) + +hk = (...) => FreeVar(undefined) + +hl = (...) => (null | a["child"]["stateNode"]) + +ia = ???*0* +- *0* unsupported expression + +ib = (...) => FreeVar(undefined) + +ic = ca["unstable_LowPriority"] + +id = (null | a) + +ie = ???*0* +- *0* unsupported expression + +ig = (...) => FreeVar(undefined) + +ih = (...) => FreeVar(undefined) + +ii = (...) => e + +ij = (...) => kj(a, b, c, d, f, e) + +ik = (...) => FreeVar(undefined) + +il = (...) => FreeVar(undefined) + +ja = FreeVar(Object)["prototype"]["hasOwnProperty"] + +jb = (...) => FreeVar(undefined) + +jc = ca["unstable_IdlePriority"] + +jd = (...) => (1 | 4 | 16 | 536870912) + +je = (...) => (he(b) | null | ee | a) + +jf = hf["toLowerCase"]() + +jg = (...) => null + +jh = ???*0*["refs"] +- *0* unsupported expression + +ji = (...) => ui(2048, 8, a, b) + +jj = (...) => FreeVar(undefined) + +jk = (...) => FreeVar(undefined) + +jl = (...) => FreeVar(undefined) + +k#163 = h["instance"] + +k#169 = (g["tag"] | g["stateNode"]["containerInfo"]) + +k#170 = (td | Rd | Fd | Bd | Dd | Vd | Hd | Xd | vd | Zd | Jd | Td | ???*0* | d | null | h["nodeName"]) +- *0* unsupported expression + +k#174 = (h["alternate"] | Kb(c, f)) + +k#226 = (h | null | q) + +k#241 = (...) => (m(a, b, c["props"]["children"], d, c["key"]) | d) + +k#255 = arguments[3] + +k#257 = arguments[3] + +k#259 = (f["key"] | f["type"]) + +k#272 = (null | ???*0* | q) +- *0* unsupported expression + +k#29 = ( + | ` +${e[g]["replace"](" at new ", " at ")}` + | k["replace"]("", a["displayName"]) +) + +k#296 = b["interleaved"] + +k#334 = (g["context"] | b["memoizedState"] | c["contextType"] | Vg(k) | Xf | H["current"] | Yf(b, k)) + +k#339 = {"mode": "hidden", "children": d["children"]} + +k#350 = (d[l] | k["__html"] | ???*0*) +- *0* unsupported expression + +k#354 = (h[f] | k["__html"] | ???*0*) +- *0* unsupported expression + +k#360 = (???*0* | (g + d) | g) +- *0* unsupported expression + +k#377 = e["alternate"] + +k#379 = (a["updateQueue"] | q["memoizedProps"]["style"]) + +k#390 = ???*0* +- *0* k + ⚠️ pattern without value + +k#392 = (???*0* | U | g["child"]) +- *0* unsupported expression + +k#393 = b["memoizedProps"] + +k#397 = ???*0* +- *0* k + ⚠️ pattern without value + +k#398 = ???*0* +- *0* k + ⚠️ pattern without value + +k#399 = ???*0* +- *0* k + ⚠️ pattern without value + +k#400 = ???*0* +- *0* k + ⚠️ pattern without value + +k#401 = ???*0* +- *0* k + ⚠️ pattern without value + +k#416 = (b | l | FreeVar(Error)(p(426)) | Ki(k, h)) + +k#425 = 0 + +k#434 = (h["firstContext"] | ch(???*0*, ???*1*) | f["alternate"] | k["next"]) +- *0* unsupported expression +- *1* unsupported expression + +k#447 = arguments[8] + +k#450 = arguments[8] + +k#463 = cl(a, 0, ???*0*, null, null, ???*1*, ???*2*, "", ql) +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression + +k#78 = arguments[8] + +k#81 = arguments[8] + +k#82 = arguments[8] + +k#95 = e[g] + +ka = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/ + +kb = (...) => ( + | "http://www.w3.org/2000/svg" + | "http://www.w3.org/1998/Math/MathML" + | "http://www.w3.org/1999/xhtml" +) + +kc = (null | wl["inject"](vl)) + +kd = (null | e) + +ke = (...) => (???*0* | null | b["char"] | FreeVar(String)["fromCharCode"](b["which"]) | b["data"]) +- *0* unsupported expression + +kf = (hf[0]["toUpperCase"]() + hf["slice"](1)) + +kg = [] + +kh = (...) => FreeVar(undefined) + +ki = (...) => c(*anonymous function 67764*) + +kj = (...) => ($i(a, b, f) | b["child"]) + +kk = (...) => FreeVar(undefined) + +kl = (...) => null + +l#163 = h["currentTarget"] + +l#174 = h["stateNode"] + +l#226 = (k["next"] | ???*0*) +- *0* unsupported expression + +l#241 = (...) => b + +l#255 = (null | n | u | x) + +l#257 = (Ka(h) | null | t | n) + +l#259 = (d | l["sibling"] | f["key"] | f["_init"]) + +l#272 = (f | l["next"]) + +l#297 = ???*0* +- *0* l + ⚠️ pattern without value + +l#30 = ???*0* +- *0* l + ⚠️ pattern without value + +l#31 = ???*0* +- *0* l + ⚠️ pattern without value + +l#32 = ???*0* +- *0* l + ⚠️ pattern without value + +l#33 = ???*0* +- *0* l + ⚠️ pattern without value + +l#334 = ( + | c["contextType"] + | Vg(l) + | Xf + | H["current"] + | Yf(b, l) + | h + | Lg(b["type"], h) + | $g + | oh(b, c, l, d, r, n, k) + | ???*0* +) +- *0* unsupported expression + +l#350 = (???*0* | f) +- *0* l + ⚠️ pattern without value + +l#360 = 0 + +l#378 = ???*0* +- *0* l + ⚠️ pattern without value + +l#379 = (vb(h, f) | U | ???*0*) +- *0* unsupported expression + +l#392 = U + +l#393 = b["alternate"] + +l#416 = k + +l#425 = h[k] + +l#434 = (f["updateQueue"] | l["shared"]) + +l#78 = FreeVar(Array)["prototype"]["slice"]["call"](FreeVar(arguments), 3) + +l#82 = Pb + +la = {} + +lb = (...) => (kb(b) | "http://www.w3.org/1999/xhtml" | a) + +lc = (null | wl) + +ld = (null | ???*0* | kd["value"] | kd["textContent"]) +- *0* unsupported expression + +le = { + "color": ???*0*, + "date": ???*1*, + "datetime": ???*2*, + "datetime-local": ???*3*, + "email": ???*4*, + "month": ???*5*, + "number": ???*6*, + "password": ???*7*, + "range": ???*8*, + "search": ???*9*, + "tel": ???*10*, + "text": ???*11*, + "time": ???*12*, + "url": ???*13*, + "week": ???*14* +} +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression +- *3* unsupported expression +- *4* unsupported expression +- *5* unsupported expression +- *6* unsupported expression +- *7* unsupported expression +- *8* unsupported expression +- *9* unsupported expression +- *10* unsupported expression +- *11* unsupported expression +- *12* unsupported expression +- *13* unsupported expression +- *14* unsupported expression + +lf = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting"["split"](" ") + +lg = 0 + +lh = (...) => (1 | ???*0* | Ck | a) +- *0* unsupported expression + +li = (...) => a + +lj = (...) => FreeVar(undefined) + +lk = (...) => FreeVar(undefined) + +ll = (FreeVar(reportError) | *anonymous function 126145*) + +m#226 = (a["alternate"] | m["updateQueue"] | ???*0* | y) +- *0* unsupported expression + +m#241 = (...) => b + +m#255 = (null | n | u | x) + +m#257 = (g | null | x | d(e, m)) + +m#272 = l["lane"] + +m#334 = (c["getDerivedStateFromProps"] | ???*0*) +- *0* unsupported expression + +m#360 = 0 + +m#379 = (k[g] | ???*0* | a["child"] | m["sibling"] | null | q) +- *0* unsupported expression + +m#393 = l["memoizedState"] + +m#416 = h + +m#425 = V + +m#434 = l["pending"] + +m#79 = ???*0* +- *0* m + ⚠️ pattern without value + +ma = {} + +mb = (???*0* | mb | FreeVar(document)["createElement"]("div")) +- *0* mb + ⚠️ pattern without value + +mc = (...) => FreeVar(undefined) + +md = (null | e["slice"](a, ???*0*) | ???*1*) +- *0* unsupported expression +- *1* unsupported expression + +me = (...) => ???*0* +- *0* unsupported expression + +mf = ???*0* +- *0* unknown new expression + +mg = (null | a | kg[???*0*]) +- *0* unsupported expression + +mh = (...) => FreeVar(undefined) + +mi = (...) => FreeVar(undefined) + +mj = (...) => b["child"] + +mk = FreeVar(Math)["ceil"] + +ml = (...) => FreeVar(undefined) + +n#170 = (a | "focus" | "blur" | c["relatedTarget"] | c["fromElement"] | c["toElement"] | Wc(n) | null | d) + +n#226 = (a | t["payload"]) + +n#241 = (...) => l + +n#255 = r(e, u, h[w], k) + +n#257 = (h["next"]() | q(e, n["value"], k) | y(m, e, w, n["value"], k)) + +n#334 = b["memoizedState"] + +n#360 = (b["alternate"] | Oj) + +n#379 = r["stateNode"] + +n#416 = b["updateQueue"] + +n#425 = f["alternate"] + +na#170 = (ve | Fe | De | Ee | na(a, d)) + +na#417 = ???*0* +- *0* na + ⚠️ pattern without value + +na#426 = ???*0* +- *0* na + ⚠️ pattern without value + +na#427 = ???*0* +- *0* na + ⚠️ pattern without value + +nb = *anonymous function 13449*(*anonymous function 13608*) + +nc = (...) => (32 | ???*0*) +- *0* unsupported expression + +nd = (...) => (md | ???*0*) +- *0* unsupported expression + +ne = (...) => FreeVar(undefined) + +nf = (...) => FreeVar(undefined) + +ng = (0 | b | kg[???*0*]) +- *0* unsupported expression + +nh = { + "isMounted": *anonymous function 55504*, + "enqueueSetState": *anonymous function 55574*, + "enqueueReplaceState": *anonymous function 55754*, + "enqueueForceUpdate": *anonymous function 55941* +} + +ni = (...) => FreeVar(undefined) + +nj = {"dehydrated": null, "treeContext": null, "retryLane": 0} + +nk = ua["ReactCurrentDispatcher"] + +nl = (...) => FreeVar(undefined) + +oa = (...) => ???*0* +- *0* unsupported expression + +ob = (...) => FreeVar(undefined) + +oc = (FreeVar(Math)["clz32"] | nc) + +od = (...) => (a | 0) + +oe = (...) => d + +of = `__reactEvents$${Nf}` + +og = [] + +oh = (...) => (a["shouldComponentUpdate"](d, f, g) | ???*0*) +- *0* unsupported expression + +oi = (...) => ???*0* +- *0* unsupported expression + +oj = (...) => {"baseLanes": a, "cachePool": null, "transitions": null} + +ok = ua["ReactCurrentOwner"] + +ol = (...) => ???*0* +- *0* unsupported expression + +p = (...) => `Minified React error #${a}; visit ${b} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.` + +pa = (...) => ???*0* +- *0* unsupported expression + +pb = { + "animationIterationCount": ???*0*, + "aspectRatio": ???*1*, + "borderImageOutset": ???*2*, + "borderImageSlice": ???*3*, + "borderImageWidth": ???*4*, + "boxFlex": ???*5*, + "boxFlexGroup": ???*6*, + "boxOrdinalGroup": ???*7*, + "columnCount": ???*8*, + "columns": ???*9*, + "flex": ???*10*, + "flexGrow": ???*11*, + "flexPositive": ???*12*, + "flexShrink": ???*13*, + "flexNegative": ???*14*, + "flexOrder": ???*15*, + "gridArea": ???*16*, + "gridRow": ???*17*, + "gridRowEnd": ???*18*, + "gridRowSpan": ???*19*, + "gridRowStart": ???*20*, + "gridColumn": ???*21*, + "gridColumnEnd": ???*22*, + "gridColumnSpan": ???*23*, + "gridColumnStart": ???*24*, + "fontWeight": ???*25*, + "lineClamp": ???*26*, + "lineHeight": ???*27*, + "opacity": ???*28*, + "order": ???*29*, + "orphans": ???*30*, + "tabSize": ???*31*, + "widows": ???*32*, + "zIndex": ???*33*, + "zoom": ???*34*, + "fillOpacity": ???*35*, + "floodOpacity": ???*36*, + "stopOpacity": ???*37*, + "strokeDasharray": ???*38*, + "strokeDashoffset": ???*39*, + "strokeMiterlimit": ???*40*, + "strokeOpacity": ???*41*, + "strokeWidth": ???*42* +} +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression +- *3* unsupported expression +- *4* unsupported expression +- *5* unsupported expression +- *6* unsupported expression +- *7* unsupported expression +- *8* unsupported expression +- *9* unsupported expression +- *10* unsupported expression +- *11* unsupported expression +- *12* unsupported expression +- *13* unsupported expression +- *14* unsupported expression +- *15* unsupported expression +- *16* unsupported expression +- *17* unsupported expression +- *18* unsupported expression +- *19* unsupported expression +- *20* unsupported expression +- *21* unsupported expression +- *22* unsupported expression +- *23* unsupported expression +- *24* unsupported expression +- *25* unsupported expression +- *26* unsupported expression +- *27* unsupported expression +- *28* unsupported expression +- *29* unsupported expression +- *30* unsupported expression +- *31* unsupported expression +- *32* unsupported expression +- *33* unsupported expression +- *34* unsupported expression +- *35* unsupported expression +- *36* unsupported expression +- *37* unsupported expression +- *38* unsupported expression +- *39* unsupported expression +- *40* unsupported expression +- *41* unsupported expression +- *42* unsupported expression + +pc = FreeVar(Math)["log"] + +pd = (...) => ???*0* +- *0* unsupported expression + +pe = (null | b) + +pf = (...) => FreeVar(undefined) + +pg = 0 + +ph = (...) => b + +pi = (...) => FreeVar(undefined) + +pj = (...) => (null | ???*0* | rj(b, g) | sj(a, b, g, d, h, e, c) | d) +- *0* unsupported expression + +pk = ua["ReactCurrentBatchConfig"] + +pl = (...) => ???*0* +- *0* unsupported expression + +q#226 = (e["baseState"] | n["call"](y, q, r) | n | A({}, q, r)) + +q#241 = (...) => (b | c | q(a, d(b["_payload"]), c) | null) + +q#272 = { + "lane": m, + "action": l["action"], + "hasEagerState": l["hasEagerState"], + "eagerState": l["eagerState"], + "next": null +} + +q#334 = (???*0* | b["pendingProps"]) +- *0* unsupported expression + +q#360 = (a | y | r) + +q#379 = (k[(g + 1)] | ???*0* | a | q["child"] | q["return"] | q["sibling"]) +- *0* unsupported expression + +q#393 = m["dehydrated"] + +q#416 = m["tag"] + +q#425 = m["child"] + +qa = (...) => (???*0* | FreeVar(isNaN)(b)) +- *0* unsupported expression + +qb = ["Webkit", "ms", "Moz", "O"] + +qc = FreeVar(Math)["LN2"] + +qd = (...) => ???*0* +- *0* unsupported expression + +qe = (null | ???*0* | c) +- *0* unsupported expression + +qf = (...) => FreeVar(undefined) + +qg = (null | a | og[???*0*] | b) +- *0* unsupported expression + +qh = (...) => FreeVar(undefined) + +qi = (...) => [b["memoizedState"], a] + +qj = (...) => a + +qk = (null | b) + +ql = (...) => FreeVar(undefined) + +r#226 = (h["lane"] | b | n["call"](y, q, r) | n | e["effects"] | h) + +r#241 = (...) => ( + | null + | h(a, b, `${c}`, d) + | k(a, b, c, d) + | l(a, b, c, d) + | r(a, b, e(c["_payload"]), d) + | m(a, b, c, d, null) +) + +r#334 = (b["memoizedState"] | g["context"]) + +r#360 = (null | q | q["parentNode"]) + +r#379 = (e["_wrapperState"]["wasMultiple"] | V) + +r#394 = ???*0* +- *0* r + ⚠️ pattern without value + +r#416 = m["alternate"] + +r#425 = m["sibling"] + +ra = /[\-:]([a-z])/g + +rb = (...) => ("" | ???*0*["trim"]() | `${b}px`) +- *0* unsupported expression + +rc = 64 + +rd = (...) => b + +re = (...) => FreeVar(undefined) + +rf = `_reactListening${FreeVar(Math)["random"]()["toString"](36)["slice"](2)}` + +rg = (1 | ???*0* | og[???*1*] | a["id"]) +- *0* unsupported expression +- *1* unsupported expression + +rh = (...) => FreeVar(undefined) + +ri = (...) => FreeVar(undefined) + +rj = (...) => ???*0* +- *0* unsupported expression + +rk = (0 | ???*0*) +- *0* unsupported expression + +rl = (...) => (g | k) + +sa = (...) => a[1]["toUpperCase"]() + +sb = (...) => FreeVar(undefined) + +sc = 4194304 + +sd = { + "eventPhase": 0, + "bubbles": 0, + "cancelable": 0, + "timeStamp": *anonymous function 28108*, + "defaultPrevented": 0, + "isTrusted": 0 +} + +se = (...) => FreeVar(undefined) + +sf = (...) => FreeVar(undefined) + +sg = ("" | (f + a) | a | og[???*0*] | a["overflow"]) +- *0* unsupported expression + +sh = (...) => (b["ref"] | b | a) + +si = (...) => di()["memoizedState"] + +sj = (...) => (tj(a, b, g, d) | null | f | tj(a, b, g, null) | b) + +sk = (0 | ???*0*) +- *0* unsupported expression + +sl = (...) => hl(g) + +t#170 = (???*0* | [] | Bd | Td | ???*1* | k | vf(t) | null) +- *0* unsupported expression +- *1* unknown new expression + +t#226 = h + +t#241 = (...) => l + +t#257 = r(e, m, n["value"], k) + +t#360 = n["memoizedProps"] + +t#380 = ???*0* +- *0* t + ⚠️ pattern without value + +t#381 = ???*0* +- *0* t + ⚠️ pattern without value + +t#382 = ???*0* +- *0* t + ⚠️ pattern without value + +t#383 = ???*0* +- *0* t + ⚠️ pattern without value + +t#384 = ???*0* +- *0* t + ⚠️ pattern without value + +t#385 = ???*0* +- *0* t + ⚠️ pattern without value + +t#386 = ???*0* +- *0* t + ⚠️ pattern without value + +t#387 = ???*0* +- *0* t + ⚠️ pattern without value + +t#388 = ???*0* +- *0* t + ⚠️ pattern without value + +t#416 = ???*0* +- *0* unknown new expression + +t#425 = (n["child"] | J) + +ta = (...) => FreeVar(undefined) + +tb = A( + {"menuitem": ???*0*}, + { + "area": ???*1*, + "base": ???*2*, + "br": ???*3*, + "col": ???*4*, + "embed": ???*5*, + "hr": ???*6*, + "img": ???*7*, + "input": ???*8*, + "keygen": ???*9*, + "link": ???*10*, + "meta": ???*11*, + "param": ???*12*, + "source": ???*13*, + "track": ???*14*, + "wbr": ???*15* + } +) +- *0* unsupported expression +- *1* unsupported expression +- *2* unsupported expression +- *3* unsupported expression +- *4* unsupported expression +- *5* unsupported expression +- *6* unsupported expression +- *7* unsupported expression +- *8* unsupported expression +- *9* unsupported expression +- *10* unsupported expression +- *11* unsupported expression +- *12* unsupported expression +- *13* unsupported expression +- *14* unsupported expression +- *15* unsupported expression + +tc = (...) => (1 | 2 | 4 | 8 | 16 | 32 | ???*0* | 134217728 | 268435456 | 536870912 | 1073741824 | a) +- *0* unsupported expression + +td = rd(sd) + +te = (...) => a + +tf = (...) => {"instance": a, "listener": b, "currentTarget": c} + +tg = (...) => FreeVar(undefined) + +th = (...) => FreeVar(undefined) + +ti = (...) => FreeVar(undefined) + +tj = (...) => a + +tk = (null | [f]) + +tl = {"usingClientEntryPoint": ???*0*, "Events": [Cb, ue, Db, Eb, Fb, Rk]} +- *0* unsupported expression + +u#170 = (???*0* | w | F | h | ue(n) | t | vf(u) | 0) +- *0* u + ⚠️ pattern without value + +u#255 = (g | null | x | q(e, h[w], k) | d(e, u)) + +u#257 = (???*0* | t | n) +- *0* unsupported expression + +u#360 = b["stateNode"]["containerInfo"] + +u#416 = f["stateNode"] + +u#425 = g["child"] + +ua = aa["__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED"] + +ub = (...) => FreeVar(undefined) + +uc = (...) => (0 | b | d) + +ud = A({}, sd, {"view": 0, "detail": 0}) + +ue = (...) => a["stateNode"] + +uf = `__reactContainer$${Nf}` + +ug = (...) => FreeVar(undefined) + +uh = (...) => b(a["_payload"]) + +ui = (...) => FreeVar(undefined) + +uj = (...) => FreeVar(undefined) + +uk = (null | c | a | ???*0*) +- *0* unsupported expression + +ul = { + "findFiberByHostInstance": Wc, + "bundleType": 0, + "version": "18.2.0", + "rendererPackageName": "react-dom" +} + +v = (...) => FreeVar(undefined) + +va = FreeVar(Symbol)["for"]("react.element") + +vb = (...) => ???*0* +- *0* unsupported expression + +vc = (...) => ((b + 250) | (b + 5000) | ???*0*) +- *0* unsupported expression + +vd = rd(ud) + +ve = (...) => b + +vf = (...) => (null | a) + +vg = (...) => FreeVar(undefined) + +vh = (...) => J + +vi = (...) => ti(8390656, 8, a, b) + +vj = (...) => FreeVar(undefined) + +vk = null + +vl = { + "bundleType": ul["bundleType"], + "version": ul["version"], + "rendererPackageName": ul["rendererPackageName"], + "rendererConfig": ul["rendererConfig"], + "overrideHookState": null, + "overrideHookStateDeletePath": null, + "overrideHookStateRenamePath": null, + "overrideProps": null, + "overridePropsDeletePath": null, + "overridePropsRenamePath": null, + "setErrorHandler": null, + "setSuspenseHandler": null, + "scheduleUpdate": null, + "currentDispatcherRef": ua["ReactCurrentDispatcher"], + "findHostInstanceByFiber": *anonymous function 129223*, + "findFiberByHostInstance": (ul["findFiberByHostInstance"] | kl), + "findHostInstancesForRefresh": null, + "scheduleRefresh": null, + "scheduleRoot": null, + "setRefreshHandler": null, + "getCurrentFiber": null, + "reconcilerVersion": "18.2.0-next-9e3b772b8-20220608" +} + +w#170 = (d | w["return"] | "mouse" | "pointer" | 0) + +w#255 = ???*0* +- *0* unsupported expression + +w#257 = ???*0* +- *0* unsupported expression + +w#360 = x["getSnapshotBeforeUpdate"]((t | Lg(b["type"], t)), J) + +w#416 = f["type"] + +w#425 = a["current"] + +wa = FreeVar(Symbol)["for"]("react.portal") + +wb = (null | d) + +wc = (...) => FreeVar(undefined) + +wd = (???*0* | ???*1* | 0) +- *0* wd + ⚠️ pattern without value +- *1* unsupported expression + +we = ???*0* +- *0* unsupported expression + +wf = (...) => FreeVar(undefined) + +wg = (...) => FreeVar(undefined) + +wh = (...) => c + +wi = (...) => ui(4, 2, a, b) + +wj = (...) => FreeVar(undefined) + +wk = ???*0* +- *0* unsupported expression + +wl = FreeVar(__REACT_DEVTOOLS_GLOBAL_HOOK__) + +x#170 = (`${h}Capture` | null | h | "onMouseEnter" | "onPointerEnter" | n | vf(x)) + +x#255 = (null | u | u["sibling"] | y(u, e, w, h[w], k)) + +x#257 = (null | m | m["sibling"]) + +x#360 = b["stateNode"] + +x#416 = Oi(f, k, b) + +x#425 = f["sibling"] + +xa = (Ce | h["_wrapperState"] | ue(d) | FreeVar(window) | oe(d, ba)) + +xb = (...) => (a["parentNode"] | a) + +xc = (...) => (a | 1073741824 | 0) + +xd = (???*0* | ???*1*) +- *0* xd + ⚠️ pattern without value +- *1* unsupported expression + +xe = (???*0* | ye | ???*1*) +- *0* xe + ⚠️ pattern without value +- *1* unsupported expression + +xf = /\r\n?/g + +xg = (null | a | a | a | b | b) + +xh = (...) => a + +xi = (...) => ui(4, 4, a, b) + +xj = (...) => FreeVar(undefined) + +xk = (null | a) + +y#226 = ( + | h["eventTime"] + | c + | { + "eventTime": y, + "lane": r, + "tag": h["tag"], + "payload": h["payload"], + "callback": h["callback"], + "next": null + } +) + +y#241 = (...) => ( + | h(b, a, `${d}`, e) + | k(b, a, d, e) + | l(b, a, d, e) + | y(a, b, c, f(d["_payload"]), e) + | m(b, a, d, e, null) + | null +) + +y#334 = c["getDerivedStateFromProps"] + +y#360 = (???*0* | q["firstChild"] | q["nextSibling"]) +- *0* y + ⚠️ pattern without value + +y#379 = (f["value"] | r["child"]) + +y#416 = Vi(g) + +y#425 = m["return"] + +ya = FreeVar(Symbol)["for"]("react.fragment") + +yb = (null | *anonymous function 128216*) + +yc = (...) => a + +yd = (???*0* | a) +- *0* yd + ⚠️ pattern without value + +ye = ???*0* +- *0* unsupported expression + +yf = /\u0000|\uFFFD/g + +yg = ( + | null + | Lf(b["firstChild"]) + | Lf(a["nextSibling"]) + | Lf(a["stateNode"]["nextSibling"]) + | ???*0* + | Lf(e["nextSibling"]) + | Lf(b["stateNode"]["containerInfo"]["firstChild"]) +) +- *0* unsupported expression + +yh = (...) => (Ah(c["children"], e, f, b) | a | qj(c, e, f, b) | b) + +yi = (...) => (*anonymous function 69020* | *anonymous function 69089*) + +yj = (...) => b["child"] + +yk = (0 | e) + +z = {} + +za = FreeVar(Symbol)["for"]("react.strict_mode") + +zb = (null | a) + +zc = (...) => b + +zd = (...) => Pd + +ze = FreeVar(document)["createElement"]("div") + +zf = (...) => ???*0*["replace"]( + xf, + " +" +)["replace"](yf, "") +- *0* unsupported expression + +zg = (null | [a]) + +zh = (...) => b + +zi = (...) => ui(4, 4, yi["bind"](null, b, a), c) + +zj = (...) => (null | pj(a, b, c) | a["sibling"] | yj(a, b, c) | ej(a, b, c) | $i(a, b, c)) + +zk = 0 diff --git a/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/input.js b/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/input.js new file mode 100644 index 0000000000000..3085ba0d924c0 --- /dev/null +++ b/crates/turbopack-ecmascript/tests/analyzer/graph/react-dom-production/input.js @@ -0,0 +1,8453 @@ +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/* + Modernizr 3.0.0pre (Custom Build) | MIT +*/ +"use strict"; +var aa = require("react"), + ca = require("scheduler"); +function p(a) { + for ( + var b = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, c = 1; + c < arguments.length; + c++ + ) + b += "&args[]=" + encodeURIComponent(arguments[c]); + return ( + "Minified React error #" + + a + + "; visit " + + b + + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings." + ); +} +var da = new Set(), + ea = {}; +function fa(a, b) { + ha(a, b); + ha(a + "Capture", b); +} +function ha(a, b) { + ea[a] = b; + for (a = 0; a < b.length; a++) da.add(b[a]); +} +var ia = !( + "undefined" === typeof window || + "undefined" === typeof window.document || + "undefined" === typeof window.document.createElement + ), + ja = Object.prototype.hasOwnProperty, + ka = + /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, + la = {}, + ma = {}; +function oa(a) { + if (ja.call(ma, a)) return !0; + if (ja.call(la, a)) return !1; + if (ka.test(a)) return (ma[a] = !0); + la[a] = !0; + return !1; +} +function pa(a, b, c, d) { + if (null !== c && 0 === c.type) return !1; + switch (typeof b) { + case "function": + case "symbol": + return !0; + case "boolean": + if (d) return !1; + if (null !== c) return !c.acceptsBooleans; + a = a.toLowerCase().slice(0, 5); + return "data-" !== a && "aria-" !== a; + default: + return !1; + } +} +function qa(a, b, c, d) { + if (null === b || "undefined" === typeof b || pa(a, b, c, d)) return !0; + if (d) return !1; + if (null !== c) + switch (c.type) { + case 3: + return !b; + case 4: + return !1 === b; + case 5: + return isNaN(b); + case 6: + return isNaN(b) || 1 > b; + } + return !1; +} +function v(a, b, c, d, e, f, g) { + this.acceptsBooleans = 2 === b || 3 === b || 4 === b; + this.attributeName = d; + this.attributeNamespace = e; + this.mustUseProperty = c; + this.propertyName = a; + this.type = b; + this.sanitizeURL = f; + this.removeEmptyString = g; +} +var z = {}; +"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style" + .split(" ") + .forEach(function (a) { + z[a] = new v(a, 0, !1, a, null, !1, !1); + }); +[ + ["acceptCharset", "accept-charset"], + ["className", "class"], + ["htmlFor", "for"], + ["httpEquiv", "http-equiv"], +].forEach(function (a) { + var b = a[0]; + z[b] = new v(b, 1, !1, a[1], null, !1, !1); +}); +["contentEditable", "draggable", "spellCheck", "value"].forEach(function (a) { + z[a] = new v(a, 2, !1, a.toLowerCase(), null, !1, !1); +}); +[ + "autoReverse", + "externalResourcesRequired", + "focusable", + "preserveAlpha", +].forEach(function (a) { + z[a] = new v(a, 2, !1, a, null, !1, !1); +}); +"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope" + .split(" ") + .forEach(function (a) { + z[a] = new v(a, 3, !1, a.toLowerCase(), null, !1, !1); + }); +["checked", "multiple", "muted", "selected"].forEach(function (a) { + z[a] = new v(a, 3, !0, a, null, !1, !1); +}); +["capture", "download"].forEach(function (a) { + z[a] = new v(a, 4, !1, a, null, !1, !1); +}); +["cols", "rows", "size", "span"].forEach(function (a) { + z[a] = new v(a, 6, !1, a, null, !1, !1); +}); +["rowSpan", "start"].forEach(function (a) { + z[a] = new v(a, 5, !1, a.toLowerCase(), null, !1, !1); +}); +var ra = /[\-:]([a-z])/g; +function sa(a) { + return a[1].toUpperCase(); +} +"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height" + .split(" ") + .forEach(function (a) { + var b = a.replace(ra, sa); + z[b] = new v(b, 1, !1, a, null, !1, !1); + }); +"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type" + .split(" ") + .forEach(function (a) { + var b = a.replace(ra, sa); + z[b] = new v(b, 1, !1, a, "http://www.w3.org/1999/xlink", !1, !1); + }); +["xml:base", "xml:lang", "xml:space"].forEach(function (a) { + var b = a.replace(ra, sa); + z[b] = new v(b, 1, !1, a, "http://www.w3.org/XML/1998/namespace", !1, !1); +}); +["tabIndex", "crossOrigin"].forEach(function (a) { + z[a] = new v(a, 1, !1, a.toLowerCase(), null, !1, !1); +}); +z.xlinkHref = new v( + "xlinkHref", + 1, + !1, + "xlink:href", + "http://www.w3.org/1999/xlink", + !0, + !1 +); +["src", "href", "action", "formAction"].forEach(function (a) { + z[a] = new v(a, 1, !1, a.toLowerCase(), null, !0, !0); +}); +function ta(a, b, c, d) { + var e = z.hasOwnProperty(b) ? z[b] : null; + if ( + null !== e + ? 0 !== e.type + : d || + !(2 < b.length) || + ("o" !== b[0] && "O" !== b[0]) || + ("n" !== b[1] && "N" !== b[1]) + ) + qa(b, c, e, d) && (c = null), + d || null === e + ? oa(b) && + (null === c ? a.removeAttribute(b) : a.setAttribute(b, "" + c)) + : e.mustUseProperty + ? (a[e.propertyName] = null === c ? (3 === e.type ? !1 : "") : c) + : ((b = e.attributeName), + (d = e.attributeNamespace), + null === c + ? a.removeAttribute(b) + : ((e = e.type), + (c = 3 === e || (4 === e && !0 === c) ? "" : "" + c), + d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))); +} +var ua = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, + va = Symbol.for("react.element"), + wa = Symbol.for("react.portal"), + ya = Symbol.for("react.fragment"), + za = Symbol.for("react.strict_mode"), + Aa = Symbol.for("react.profiler"), + Ba = Symbol.for("react.provider"), + Ca = Symbol.for("react.context"), + Da = Symbol.for("react.forward_ref"), + Ea = Symbol.for("react.suspense"), + Fa = Symbol.for("react.suspense_list"), + Ga = Symbol.for("react.memo"), + Ha = Symbol.for("react.lazy"); +Symbol.for("react.scope"); +Symbol.for("react.debug_trace_mode"); +var Ia = Symbol.for("react.offscreen"); +Symbol.for("react.legacy_hidden"); +Symbol.for("react.cache"); +Symbol.for("react.tracing_marker"); +var Ja = Symbol.iterator; +function Ka(a) { + if (null === a || "object" !== typeof a) return null; + a = (Ja && a[Ja]) || a["@@iterator"]; + return "function" === typeof a ? a : null; +} +var A = Object.assign, + La; +function Ma(a) { + if (void 0 === La) + try { + throw Error(); + } catch (c) { + var b = c.stack.trim().match(/\n( *(at )?)/); + La = (b && b[1]) || ""; + } + return "\n" + La + a; +} +var Na = !1; +function Oa(a, b) { + if (!a || Na) return ""; + Na = !0; + var c = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + try { + if (b) + if ( + ((b = function () { + throw Error(); + }), + Object.defineProperty(b.prototype, "props", { + set: function () { + throw Error(); + }, + }), + "object" === typeof Reflect && Reflect.construct) + ) { + try { + Reflect.construct(b, []); + } catch (l) { + var d = l; + } + Reflect.construct(a, [], b); + } else { + try { + b.call(); + } catch (l) { + d = l; + } + a.call(b.prototype); + } + else { + try { + throw Error(); + } catch (l) { + d = l; + } + a(); + } + } catch (l) { + if (l && d && "string" === typeof l.stack) { + for ( + var e = l.stack.split("\n"), + f = d.stack.split("\n"), + g = e.length - 1, + h = f.length - 1; + 1 <= g && 0 <= h && e[g] !== f[h]; + + ) + h--; + for (; 1 <= g && 0 <= h; g--, h--) + if (e[g] !== f[h]) { + if (1 !== g || 1 !== h) { + do + if ((g--, h--, 0 > h || e[g] !== f[h])) { + var k = "\n" + e[g].replace(" at new ", " at "); + a.displayName && + k.includes("") && + (k = k.replace("", a.displayName)); + return k; + } + while (1 <= g && 0 <= h); + } + break; + } + } + } finally { + (Na = !1), (Error.prepareStackTrace = c); + } + return (a = a ? a.displayName || a.name : "") ? Ma(a) : ""; +} +function Pa(a) { + switch (a.tag) { + case 5: + return Ma(a.type); + case 16: + return Ma("Lazy"); + case 13: + return Ma("Suspense"); + case 19: + return Ma("SuspenseList"); + case 0: + case 2: + case 15: + return (a = Oa(a.type, !1)), a; + case 11: + return (a = Oa(a.type.render, !1)), a; + case 1: + return (a = Oa(a.type, !0)), a; + default: + return ""; + } +} +function Qa(a) { + if (null == a) return null; + if ("function" === typeof a) return a.displayName || a.name || null; + if ("string" === typeof a) return a; + switch (a) { + case ya: + return "Fragment"; + case wa: + return "Portal"; + case Aa: + return "Profiler"; + case za: + return "StrictMode"; + case Ea: + return "Suspense"; + case Fa: + return "SuspenseList"; + } + if ("object" === typeof a) + switch (a.$$typeof) { + case Ca: + return (a.displayName || "Context") + ".Consumer"; + case Ba: + return (a._context.displayName || "Context") + ".Provider"; + case Da: + var b = a.render; + a = a.displayName; + a || + ((a = b.displayName || b.name || ""), + (a = "" !== a ? "ForwardRef(" + a + ")" : "ForwardRef")); + return a; + case Ga: + return ( + (b = a.displayName || null), null !== b ? b : Qa(a.type) || "Memo" + ); + case Ha: + b = a._payload; + a = a._init; + try { + return Qa(a(b)); + } catch (c) {} + } + return null; +} +function Ra(a) { + var b = a.type; + switch (a.tag) { + case 24: + return "Cache"; + case 9: + return (b.displayName || "Context") + ".Consumer"; + case 10: + return (b._context.displayName || "Context") + ".Provider"; + case 18: + return "DehydratedFragment"; + case 11: + return ( + (a = b.render), + (a = a.displayName || a.name || ""), + b.displayName || ("" !== a ? "ForwardRef(" + a + ")" : "ForwardRef") + ); + case 7: + return "Fragment"; + case 5: + return b; + case 4: + return "Portal"; + case 3: + return "Root"; + case 6: + return "Text"; + case 16: + return Qa(b); + case 8: + return b === za ? "StrictMode" : "Mode"; + case 22: + return "Offscreen"; + case 12: + return "Profiler"; + case 21: + return "Scope"; + case 13: + return "Suspense"; + case 19: + return "SuspenseList"; + case 25: + return "TracingMarker"; + case 1: + case 0: + case 17: + case 2: + case 14: + case 15: + if ("function" === typeof b) return b.displayName || b.name || null; + if ("string" === typeof b) return b; + } + return null; +} +function Sa(a) { + switch (typeof a) { + case "boolean": + case "number": + case "string": + case "undefined": + return a; + case "object": + return a; + default: + return ""; + } +} +function Ta(a) { + var b = a.type; + return ( + (a = a.nodeName) && + "input" === a.toLowerCase() && + ("checkbox" === b || "radio" === b) + ); +} +function Ua(a) { + var b = Ta(a) ? "checked" : "value", + c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b), + d = "" + a[b]; + if ( + !a.hasOwnProperty(b) && + "undefined" !== typeof c && + "function" === typeof c.get && + "function" === typeof c.set + ) { + var e = c.get, + f = c.set; + Object.defineProperty(a, b, { + configurable: !0, + get: function () { + return e.call(this); + }, + set: function (a) { + d = "" + a; + f.call(this, a); + }, + }); + Object.defineProperty(a, b, { enumerable: c.enumerable }); + return { + getValue: function () { + return d; + }, + setValue: function (a) { + d = "" + a; + }, + stopTracking: function () { + a._valueTracker = null; + delete a[b]; + }, + }; + } +} +function Va(a) { + a._valueTracker || (a._valueTracker = Ua(a)); +} +function Wa(a) { + if (!a) return !1; + var b = a._valueTracker; + if (!b) return !0; + var c = b.getValue(); + var d = ""; + a && (d = Ta(a) ? (a.checked ? "true" : "false") : a.value); + a = d; + return a !== c ? (b.setValue(a), !0) : !1; +} +function Xa(a) { + a = a || ("undefined" !== typeof document ? document : void 0); + if ("undefined" === typeof a) return null; + try { + return a.activeElement || a.body; + } catch (b) { + return a.body; + } +} +function Ya(a, b) { + var c = b.checked; + return A({}, b, { + defaultChecked: void 0, + defaultValue: void 0, + value: void 0, + checked: null != c ? c : a._wrapperState.initialChecked, + }); +} +function Za(a, b) { + var c = null == b.defaultValue ? "" : b.defaultValue, + d = null != b.checked ? b.checked : b.defaultChecked; + c = Sa(null != b.value ? b.value : c); + a._wrapperState = { + initialChecked: d, + initialValue: c, + controlled: + "checkbox" === b.type || "radio" === b.type + ? null != b.checked + : null != b.value, + }; +} +function ab(a, b) { + b = b.checked; + null != b && ta(a, "checked", b, !1); +} +function bb(a, b) { + ab(a, b); + var c = Sa(b.value), + d = b.type; + if (null != c) + if ("number" === d) { + if ((0 === c && "" === a.value) || a.value != c) a.value = "" + c; + } else a.value !== "" + c && (a.value = "" + c); + else if ("submit" === d || "reset" === d) { + a.removeAttribute("value"); + return; + } + b.hasOwnProperty("value") + ? cb(a, b.type, c) + : b.hasOwnProperty("defaultValue") && cb(a, b.type, Sa(b.defaultValue)); + null == b.checked && + null != b.defaultChecked && + (a.defaultChecked = !!b.defaultChecked); +} +function db(a, b, c) { + if (b.hasOwnProperty("value") || b.hasOwnProperty("defaultValue")) { + var d = b.type; + if ( + !( + ("submit" !== d && "reset" !== d) || + (void 0 !== b.value && null !== b.value) + ) + ) + return; + b = "" + a._wrapperState.initialValue; + c || b === a.value || (a.value = b); + a.defaultValue = b; + } + c = a.name; + "" !== c && (a.name = ""); + a.defaultChecked = !!a._wrapperState.initialChecked; + "" !== c && (a.name = c); +} +function cb(a, b, c) { + if ("number" !== b || Xa(a.ownerDocument) !== a) + null == c + ? (a.defaultValue = "" + a._wrapperState.initialValue) + : a.defaultValue !== "" + c && (a.defaultValue = "" + c); +} +var eb = Array.isArray; +function fb(a, b, c, d) { + a = a.options; + if (b) { + b = {}; + for (var e = 0; e < c.length; e++) b["$" + c[e]] = !0; + for (c = 0; c < a.length; c++) + (e = b.hasOwnProperty("$" + a[c].value)), + a[c].selected !== e && (a[c].selected = e), + e && d && (a[c].defaultSelected = !0); + } else { + c = "" + Sa(c); + b = null; + for (e = 0; e < a.length; e++) { + if (a[e].value === c) { + a[e].selected = !0; + d && (a[e].defaultSelected = !0); + return; + } + null !== b || a[e].disabled || (b = a[e]); + } + null !== b && (b.selected = !0); + } +} +function gb(a, b) { + if (null != b.dangerouslySetInnerHTML) throw Error(p(91)); + return A({}, b, { + value: void 0, + defaultValue: void 0, + children: "" + a._wrapperState.initialValue, + }); +} +function hb(a, b) { + var c = b.value; + if (null == c) { + c = b.children; + b = b.defaultValue; + if (null != c) { + if (null != b) throw Error(p(92)); + if (eb(c)) { + if (1 < c.length) throw Error(p(93)); + c = c[0]; + } + b = c; + } + null == b && (b = ""); + c = b; + } + a._wrapperState = { initialValue: Sa(c) }; +} +function ib(a, b) { + var c = Sa(b.value), + d = Sa(b.defaultValue); + null != c && + ((c = "" + c), + c !== a.value && (a.value = c), + null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c)); + null != d && (a.defaultValue = "" + d); +} +function jb(a) { + var b = a.textContent; + b === a._wrapperState.initialValue && "" !== b && null !== b && (a.value = b); +} +function kb(a) { + switch (a) { + case "svg": + return "http://www.w3.org/2000/svg"; + case "math": + return "http://www.w3.org/1998/Math/MathML"; + default: + return "http://www.w3.org/1999/xhtml"; + } +} +function lb(a, b) { + return null == a || "http://www.w3.org/1999/xhtml" === a + ? kb(b) + : "http://www.w3.org/2000/svg" === a && "foreignObject" === b + ? "http://www.w3.org/1999/xhtml" + : a; +} +var mb, + nb = (function (a) { + return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction + ? function (b, c, d, e) { + MSApp.execUnsafeLocalFunction(function () { + return a(b, c, d, e); + }); + } + : a; + })(function (a, b) { + if ("http://www.w3.org/2000/svg" !== a.namespaceURI || "innerHTML" in a) + a.innerHTML = b; + else { + mb = mb || document.createElement("div"); + mb.innerHTML = "" + b.valueOf().toString() + ""; + for (b = mb.firstChild; a.firstChild; ) a.removeChild(a.firstChild); + for (; b.firstChild; ) a.appendChild(b.firstChild); + } + }); +function ob(a, b) { + if (b) { + var c = a.firstChild; + if (c && c === a.lastChild && 3 === c.nodeType) { + c.nodeValue = b; + return; + } + } + a.textContent = b; +} +var pb = { + animationIterationCount: !0, + aspectRatio: !0, + borderImageOutset: !0, + borderImageSlice: !0, + borderImageWidth: !0, + boxFlex: !0, + boxFlexGroup: !0, + boxOrdinalGroup: !0, + columnCount: !0, + columns: !0, + flex: !0, + flexGrow: !0, + flexPositive: !0, + flexShrink: !0, + flexNegative: !0, + flexOrder: !0, + gridArea: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowSpan: !0, + gridRowStart: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnSpan: !0, + gridColumnStart: !0, + fontWeight: !0, + lineClamp: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + tabSize: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeDasharray: !0, + strokeDashoffset: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + strokeWidth: !0, + }, + qb = ["Webkit", "ms", "Moz", "O"]; +Object.keys(pb).forEach(function (a) { + qb.forEach(function (b) { + b = b + a.charAt(0).toUpperCase() + a.substring(1); + pb[b] = pb[a]; + }); +}); +function rb(a, b, c) { + return null == b || "boolean" === typeof b || "" === b + ? "" + : c || "number" !== typeof b || 0 === b || (pb.hasOwnProperty(a) && pb[a]) + ? ("" + b).trim() + : b + "px"; +} +function sb(a, b) { + a = a.style; + for (var c in b) + if (b.hasOwnProperty(c)) { + var d = 0 === c.indexOf("--"), + e = rb(c, b[c], d); + "float" === c && (c = "cssFloat"); + d ? a.setProperty(c, e) : (a[c] = e); + } +} +var tb = A( + { menuitem: !0 }, + { + area: !0, + base: !0, + br: !0, + col: !0, + embed: !0, + hr: !0, + img: !0, + input: !0, + keygen: !0, + link: !0, + meta: !0, + param: !0, + source: !0, + track: !0, + wbr: !0, + } +); +function ub(a, b) { + if (b) { + if (tb[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) + throw Error(p(137, a)); + if (null != b.dangerouslySetInnerHTML) { + if (null != b.children) throw Error(p(60)); + if ( + "object" !== typeof b.dangerouslySetInnerHTML || + !("__html" in b.dangerouslySetInnerHTML) + ) + throw Error(p(61)); + } + if (null != b.style && "object" !== typeof b.style) throw Error(p(62)); + } +} +function vb(a, b) { + if (-1 === a.indexOf("-")) return "string" === typeof b.is; + switch (a) { + case "annotation-xml": + case "color-profile": + case "font-face": + case "font-face-src": + case "font-face-uri": + case "font-face-format": + case "font-face-name": + case "missing-glyph": + return !1; + default: + return !0; + } +} +var wb = null; +function xb(a) { + a = a.target || a.srcElement || window; + a.correspondingUseElement && (a = a.correspondingUseElement); + return 3 === a.nodeType ? a.parentNode : a; +} +var yb = null, + zb = null, + Ab = null; +function Bb(a) { + if ((a = Cb(a))) { + if ("function" !== typeof yb) throw Error(p(280)); + var b = a.stateNode; + b && ((b = Db(b)), yb(a.stateNode, a.type, b)); + } +} +function Eb(a) { + zb ? (Ab ? Ab.push(a) : (Ab = [a])) : (zb = a); +} +function Fb() { + if (zb) { + var a = zb, + b = Ab; + Ab = zb = null; + Bb(a); + if (b) for (a = 0; a < b.length; a++) Bb(b[a]); + } +} +function Gb(a, b) { + return a(b); +} +function Hb() {} +var Ib = !1; +function Jb(a, b, c) { + if (Ib) return a(b, c); + Ib = !0; + try { + return Gb(a, b, c); + } finally { + if (((Ib = !1), null !== zb || null !== Ab)) Hb(), Fb(); + } +} +function Kb(a, b) { + var c = a.stateNode; + if (null === c) return null; + var d = Db(c); + if (null === d) return null; + c = d[b]; + a: switch (b) { + case "onClick": + case "onClickCapture": + case "onDoubleClick": + case "onDoubleClickCapture": + case "onMouseDown": + case "onMouseDownCapture": + case "onMouseMove": + case "onMouseMoveCapture": + case "onMouseUp": + case "onMouseUpCapture": + case "onMouseEnter": + (d = !d.disabled) || + ((a = a.type), + (d = !( + "button" === a || + "input" === a || + "select" === a || + "textarea" === a + ))); + a = !d; + break a; + default: + a = !1; + } + if (a) return null; + if (c && "function" !== typeof c) throw Error(p(231, b, typeof c)); + return c; +} +var Lb = !1; +if (ia) + try { + var Mb = {}; + Object.defineProperty(Mb, "passive", { + get: function () { + Lb = !0; + }, + }); + window.addEventListener("test", Mb, Mb); + window.removeEventListener("test", Mb, Mb); + } catch (a) { + Lb = !1; + } +function Nb(a, b, c, d, e, f, g, h, k) { + var l = Array.prototype.slice.call(arguments, 3); + try { + b.apply(c, l); + } catch (m) { + this.onError(m); + } +} +var Ob = !1, + Pb = null, + Qb = !1, + Rb = null, + Sb = { + onError: function (a) { + Ob = !0; + Pb = a; + }, + }; +function Tb(a, b, c, d, e, f, g, h, k) { + Ob = !1; + Pb = null; + Nb.apply(Sb, arguments); +} +function Ub(a, b, c, d, e, f, g, h, k) { + Tb.apply(this, arguments); + if (Ob) { + if (Ob) { + var l = Pb; + Ob = !1; + Pb = null; + } else throw Error(p(198)); + Qb || ((Qb = !0), (Rb = l)); + } +} +function Vb(a) { + var b = a, + c = a; + if (a.alternate) for (; b.return; ) b = b.return; + else { + a = b; + do (b = a), 0 !== (b.flags & 4098) && (c = b.return), (a = b.return); + while (a); + } + return 3 === b.tag ? c : null; +} +function Wb(a) { + if (13 === a.tag) { + var b = a.memoizedState; + null === b && ((a = a.alternate), null !== a && (b = a.memoizedState)); + if (null !== b) return b.dehydrated; + } + return null; +} +function Xb(a) { + if (Vb(a) !== a) throw Error(p(188)); +} +function Yb(a) { + var b = a.alternate; + if (!b) { + b = Vb(a); + if (null === b) throw Error(p(188)); + return b !== a ? null : a; + } + for (var c = a, d = b; ; ) { + var e = c.return; + if (null === e) break; + var f = e.alternate; + if (null === f) { + d = e.return; + if (null !== d) { + c = d; + continue; + } + break; + } + if (e.child === f.child) { + for (f = e.child; f; ) { + if (f === c) return Xb(e), a; + if (f === d) return Xb(e), b; + f = f.sibling; + } + throw Error(p(188)); + } + if (c.return !== d.return) (c = e), (d = f); + else { + for (var g = !1, h = e.child; h; ) { + if (h === c) { + g = !0; + c = e; + d = f; + break; + } + if (h === d) { + g = !0; + d = e; + c = f; + break; + } + h = h.sibling; + } + if (!g) { + for (h = f.child; h; ) { + if (h === c) { + g = !0; + c = f; + d = e; + break; + } + if (h === d) { + g = !0; + d = f; + c = e; + break; + } + h = h.sibling; + } + if (!g) throw Error(p(189)); + } + } + if (c.alternate !== d) throw Error(p(190)); + } + if (3 !== c.tag) throw Error(p(188)); + return c.stateNode.current === c ? a : b; +} +function Zb(a) { + a = Yb(a); + return null !== a ? $b(a) : null; +} +function $b(a) { + if (5 === a.tag || 6 === a.tag) return a; + for (a = a.child; null !== a; ) { + var b = $b(a); + if (null !== b) return b; + a = a.sibling; + } + return null; +} +var ac = ca.unstable_scheduleCallback, + bc = ca.unstable_cancelCallback, + cc = ca.unstable_shouldYield, + dc = ca.unstable_requestPaint, + B = ca.unstable_now, + ec = ca.unstable_getCurrentPriorityLevel, + fc = ca.unstable_ImmediatePriority, + gc = ca.unstable_UserBlockingPriority, + hc = ca.unstable_NormalPriority, + ic = ca.unstable_LowPriority, + jc = ca.unstable_IdlePriority, + kc = null, + lc = null; +function mc(a) { + if (lc && "function" === typeof lc.onCommitFiberRoot) + try { + lc.onCommitFiberRoot(kc, a, void 0, 128 === (a.current.flags & 128)); + } catch (b) {} +} +var oc = Math.clz32 ? Math.clz32 : nc, + pc = Math.log, + qc = Math.LN2; +function nc(a) { + a >>>= 0; + return 0 === a ? 32 : (31 - ((pc(a) / qc) | 0)) | 0; +} +var rc = 64, + sc = 4194304; +function tc(a) { + switch (a & -a) { + case 1: + return 1; + case 2: + return 2; + case 4: + return 4; + case 8: + return 8; + case 16: + return 16; + case 32: + return 32; + case 64: + case 128: + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: + case 262144: + case 524288: + case 1048576: + case 2097152: + return a & 4194240; + case 4194304: + case 8388608: + case 16777216: + case 33554432: + case 67108864: + return a & 130023424; + case 134217728: + return 134217728; + case 268435456: + return 268435456; + case 536870912: + return 536870912; + case 1073741824: + return 1073741824; + default: + return a; + } +} +function uc(a, b) { + var c = a.pendingLanes; + if (0 === c) return 0; + var d = 0, + e = a.suspendedLanes, + f = a.pingedLanes, + g = c & 268435455; + if (0 !== g) { + var h = g & ~e; + 0 !== h ? (d = tc(h)) : ((f &= g), 0 !== f && (d = tc(f))); + } else (g = c & ~e), 0 !== g ? (d = tc(g)) : 0 !== f && (d = tc(f)); + if (0 === d) return 0; + if ( + 0 !== b && + b !== d && + 0 === (b & e) && + ((e = d & -d), (f = b & -b), e >= f || (16 === e && 0 !== (f & 4194240))) + ) + return b; + 0 !== (d & 4) && (d |= c & 16); + b = a.entangledLanes; + if (0 !== b) + for (a = a.entanglements, b &= d; 0 < b; ) + (c = 31 - oc(b)), (e = 1 << c), (d |= a[c]), (b &= ~e); + return d; +} +function vc(a, b) { + switch (a) { + case 1: + case 2: + case 4: + return b + 250; + case 8: + case 16: + case 32: + case 64: + case 128: + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: + case 262144: + case 524288: + case 1048576: + case 2097152: + return b + 5e3; + case 4194304: + case 8388608: + case 16777216: + case 33554432: + case 67108864: + return -1; + case 134217728: + case 268435456: + case 536870912: + case 1073741824: + return -1; + default: + return -1; + } +} +function wc(a, b) { + for ( + var c = a.suspendedLanes, + d = a.pingedLanes, + e = a.expirationTimes, + f = a.pendingLanes; + 0 < f; + + ) { + var g = 31 - oc(f), + h = 1 << g, + k = e[g]; + if (-1 === k) { + if (0 === (h & c) || 0 !== (h & d)) e[g] = vc(h, b); + } else k <= b && (a.expiredLanes |= h); + f &= ~h; + } +} +function xc(a) { + a = a.pendingLanes & -1073741825; + return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0; +} +function yc() { + var a = rc; + rc <<= 1; + 0 === (rc & 4194240) && (rc = 64); + return a; +} +function zc(a) { + for (var b = [], c = 0; 31 > c; c++) b.push(a); + return b; +} +function Ac(a, b, c) { + a.pendingLanes |= b; + 536870912 !== b && ((a.suspendedLanes = 0), (a.pingedLanes = 0)); + a = a.eventTimes; + b = 31 - oc(b); + a[b] = c; +} +function Bc(a, b) { + var c = a.pendingLanes & ~b; + a.pendingLanes = b; + a.suspendedLanes = 0; + a.pingedLanes = 0; + a.expiredLanes &= b; + a.mutableReadLanes &= b; + a.entangledLanes &= b; + b = a.entanglements; + var d = a.eventTimes; + for (a = a.expirationTimes; 0 < c; ) { + var e = 31 - oc(c), + f = 1 << e; + b[e] = 0; + d[e] = -1; + a[e] = -1; + c &= ~f; + } +} +function Cc(a, b) { + var c = (a.entangledLanes |= b); + for (a = a.entanglements; c; ) { + var d = 31 - oc(c), + e = 1 << d; + (e & b) | (a[d] & b) && (a[d] |= b); + c &= ~e; + } +} +var C = 0; +function Dc(a) { + a &= -a; + return 1 < a ? (4 < a ? (0 !== (a & 268435455) ? 16 : 536870912) : 4) : 1; +} +var Ec, + Fc, + Gc, + Hc, + Ic, + Jc = !1, + Kc = [], + Lc = null, + Mc = null, + Nc = null, + Oc = new Map(), + Pc = new Map(), + Qc = [], + Rc = + "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split( + " " + ); +function Sc(a, b) { + switch (a) { + case "focusin": + case "focusout": + Lc = null; + break; + case "dragenter": + case "dragleave": + Mc = null; + break; + case "mouseover": + case "mouseout": + Nc = null; + break; + case "pointerover": + case "pointerout": + Oc.delete(b.pointerId); + break; + case "gotpointercapture": + case "lostpointercapture": + Pc.delete(b.pointerId); + } +} +function Tc(a, b, c, d, e, f) { + if (null === a || a.nativeEvent !== f) + return ( + (a = { + blockedOn: b, + domEventName: c, + eventSystemFlags: d, + nativeEvent: f, + targetContainers: [e], + }), + null !== b && ((b = Cb(b)), null !== b && Fc(b)), + a + ); + a.eventSystemFlags |= d; + b = a.targetContainers; + null !== e && -1 === b.indexOf(e) && b.push(e); + return a; +} +function Uc(a, b, c, d, e) { + switch (b) { + case "focusin": + return (Lc = Tc(Lc, a, b, c, d, e)), !0; + case "dragenter": + return (Mc = Tc(Mc, a, b, c, d, e)), !0; + case "mouseover": + return (Nc = Tc(Nc, a, b, c, d, e)), !0; + case "pointerover": + var f = e.pointerId; + Oc.set(f, Tc(Oc.get(f) || null, a, b, c, d, e)); + return !0; + case "gotpointercapture": + return ( + (f = e.pointerId), Pc.set(f, Tc(Pc.get(f) || null, a, b, c, d, e)), !0 + ); + } + return !1; +} +function Vc(a) { + var b = Wc(a.target); + if (null !== b) { + var c = Vb(b); + if (null !== c) + if (((b = c.tag), 13 === b)) { + if (((b = Wb(c)), null !== b)) { + a.blockedOn = b; + Ic(a.priority, function () { + Gc(c); + }); + return; + } + } else if (3 === b && c.stateNode.current.memoizedState.isDehydrated) { + a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null; + return; + } + } + a.blockedOn = null; +} +function Xc(a) { + if (null !== a.blockedOn) return !1; + for (var b = a.targetContainers; 0 < b.length; ) { + var c = Yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent); + if (null === c) { + c = a.nativeEvent; + var d = new c.constructor(c.type, c); + wb = d; + c.target.dispatchEvent(d); + wb = null; + } else return (b = Cb(c)), null !== b && Fc(b), (a.blockedOn = c), !1; + b.shift(); + } + return !0; +} +function Zc(a, b, c) { + Xc(a) && c.delete(b); +} +function $c() { + Jc = !1; + null !== Lc && Xc(Lc) && (Lc = null); + null !== Mc && Xc(Mc) && (Mc = null); + null !== Nc && Xc(Nc) && (Nc = null); + Oc.forEach(Zc); + Pc.forEach(Zc); +} +function ad(a, b) { + a.blockedOn === b && + ((a.blockedOn = null), + Jc || + ((Jc = !0), + ca.unstable_scheduleCallback(ca.unstable_NormalPriority, $c))); +} +function bd(a) { + function b(b) { + return ad(b, a); + } + if (0 < Kc.length) { + ad(Kc[0], a); + for (var c = 1; c < Kc.length; c++) { + var d = Kc[c]; + d.blockedOn === a && (d.blockedOn = null); + } + } + null !== Lc && ad(Lc, a); + null !== Mc && ad(Mc, a); + null !== Nc && ad(Nc, a); + Oc.forEach(b); + Pc.forEach(b); + for (c = 0; c < Qc.length; c++) + (d = Qc[c]), d.blockedOn === a && (d.blockedOn = null); + for (; 0 < Qc.length && ((c = Qc[0]), null === c.blockedOn); ) + Vc(c), null === c.blockedOn && Qc.shift(); +} +var cd = ua.ReactCurrentBatchConfig, + dd = !0; +function ed(a, b, c, d) { + var e = C, + f = cd.transition; + cd.transition = null; + try { + (C = 1), fd(a, b, c, d); + } finally { + (C = e), (cd.transition = f); + } +} +function gd(a, b, c, d) { + var e = C, + f = cd.transition; + cd.transition = null; + try { + (C = 4), fd(a, b, c, d); + } finally { + (C = e), (cd.transition = f); + } +} +function fd(a, b, c, d) { + if (dd) { + var e = Yc(a, b, c, d); + if (null === e) hd(a, b, d, id, c), Sc(a, d); + else if (Uc(e, a, b, c, d)) d.stopPropagation(); + else if ((Sc(a, d), b & 4 && -1 < Rc.indexOf(a))) { + for (; null !== e; ) { + var f = Cb(e); + null !== f && Ec(f); + f = Yc(a, b, c, d); + null === f && hd(a, b, d, id, c); + if (f === e) break; + e = f; + } + null !== e && d.stopPropagation(); + } else hd(a, b, d, null, c); + } +} +var id = null; +function Yc(a, b, c, d) { + id = null; + a = xb(d); + a = Wc(a); + if (null !== a) + if (((b = Vb(a)), null === b)) a = null; + else if (((c = b.tag), 13 === c)) { + a = Wb(b); + if (null !== a) return a; + a = null; + } else if (3 === c) { + if (b.stateNode.current.memoizedState.isDehydrated) + return 3 === b.tag ? b.stateNode.containerInfo : null; + a = null; + } else b !== a && (a = null); + id = a; + return null; +} +function jd(a) { + switch (a) { + case "cancel": + case "click": + case "close": + case "contextmenu": + case "copy": + case "cut": + case "auxclick": + case "dblclick": + case "dragend": + case "dragstart": + case "drop": + case "focusin": + case "focusout": + case "input": + case "invalid": + case "keydown": + case "keypress": + case "keyup": + case "mousedown": + case "mouseup": + case "paste": + case "pause": + case "play": + case "pointercancel": + case "pointerdown": + case "pointerup": + case "ratechange": + case "reset": + case "resize": + case "seeked": + case "submit": + case "touchcancel": + case "touchend": + case "touchstart": + case "volumechange": + case "change": + case "selectionchange": + case "textInput": + case "compositionstart": + case "compositionend": + case "compositionupdate": + case "beforeblur": + case "afterblur": + case "beforeinput": + case "blur": + case "fullscreenchange": + case "focus": + case "hashchange": + case "popstate": + case "select": + case "selectstart": + return 1; + case "drag": + case "dragenter": + case "dragexit": + case "dragleave": + case "dragover": + case "mousemove": + case "mouseout": + case "mouseover": + case "pointermove": + case "pointerout": + case "pointerover": + case "scroll": + case "toggle": + case "touchmove": + case "wheel": + case "mouseenter": + case "mouseleave": + case "pointerenter": + case "pointerleave": + return 4; + case "message": + switch (ec()) { + case fc: + return 1; + case gc: + return 4; + case hc: + case ic: + return 16; + case jc: + return 536870912; + default: + return 16; + } + default: + return 16; + } +} +var kd = null, + ld = null, + md = null; +function nd() { + if (md) return md; + var a, + b = ld, + c = b.length, + d, + e = "value" in kd ? kd.value : kd.textContent, + f = e.length; + for (a = 0; a < c && b[a] === e[a]; a++); + var g = c - a; + for (d = 1; d <= g && b[c - d] === e[f - d]; d++); + return (md = e.slice(a, 1 < d ? 1 - d : void 0)); +} +function od(a) { + var b = a.keyCode; + "charCode" in a + ? ((a = a.charCode), 0 === a && 13 === b && (a = 13)) + : (a = b); + 10 === a && (a = 13); + return 32 <= a || 13 === a ? a : 0; +} +function pd() { + return !0; +} +function qd() { + return !1; +} +function rd(a) { + function b(b, d, e, f, g) { + this._reactName = b; + this._targetInst = e; + this.type = d; + this.nativeEvent = f; + this.target = g; + this.currentTarget = null; + for (var c in a) + a.hasOwnProperty(c) && ((b = a[c]), (this[c] = b ? b(f) : f[c])); + this.isDefaultPrevented = ( + null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue + ) + ? pd + : qd; + this.isPropagationStopped = qd; + return this; + } + A(b.prototype, { + preventDefault: function () { + this.defaultPrevented = !0; + var a = this.nativeEvent; + a && + (a.preventDefault + ? a.preventDefault() + : "unknown" !== typeof a.returnValue && (a.returnValue = !1), + (this.isDefaultPrevented = pd)); + }, + stopPropagation: function () { + var a = this.nativeEvent; + a && + (a.stopPropagation + ? a.stopPropagation() + : "unknown" !== typeof a.cancelBubble && (a.cancelBubble = !0), + (this.isPropagationStopped = pd)); + }, + persist: function () {}, + isPersistent: pd, + }); + return b; +} +var sd = { + eventPhase: 0, + bubbles: 0, + cancelable: 0, + timeStamp: function (a) { + return a.timeStamp || Date.now(); + }, + defaultPrevented: 0, + isTrusted: 0, + }, + td = rd(sd), + ud = A({}, sd, { view: 0, detail: 0 }), + vd = rd(ud), + wd, + xd, + yd, + Ad = A({}, ud, { + screenX: 0, + screenY: 0, + clientX: 0, + clientY: 0, + pageX: 0, + pageY: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + getModifierState: zd, + button: 0, + buttons: 0, + relatedTarget: function (a) { + return void 0 === a.relatedTarget + ? a.fromElement === a.srcElement + ? a.toElement + : a.fromElement + : a.relatedTarget; + }, + movementX: function (a) { + if ("movementX" in a) return a.movementX; + a !== yd && + (yd && "mousemove" === a.type + ? ((wd = a.screenX - yd.screenX), (xd = a.screenY - yd.screenY)) + : (xd = wd = 0), + (yd = a)); + return wd; + }, + movementY: function (a) { + return "movementY" in a ? a.movementY : xd; + }, + }), + Bd = rd(Ad), + Cd = A({}, Ad, { dataTransfer: 0 }), + Dd = rd(Cd), + Ed = A({}, ud, { relatedTarget: 0 }), + Fd = rd(Ed), + Gd = A({}, sd, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), + Hd = rd(Gd), + Id = A({}, sd, { + clipboardData: function (a) { + return "clipboardData" in a ? a.clipboardData : window.clipboardData; + }, + }), + Jd = rd(Id), + Kd = A({}, sd, { data: 0 }), + Ld = rd(Kd), + Md = { + Esc: "Escape", + Spacebar: " ", + Left: "ArrowLeft", + Up: "ArrowUp", + Right: "ArrowRight", + Down: "ArrowDown", + Del: "Delete", + Win: "OS", + Menu: "ContextMenu", + Apps: "ContextMenu", + Scroll: "ScrollLock", + MozPrintableKey: "Unidentified", + }, + Nd = { + 8: "Backspace", + 9: "Tab", + 12: "Clear", + 13: "Enter", + 16: "Shift", + 17: "Control", + 18: "Alt", + 19: "Pause", + 20: "CapsLock", + 27: "Escape", + 32: " ", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "ArrowLeft", + 38: "ArrowUp", + 39: "ArrowRight", + 40: "ArrowDown", + 45: "Insert", + 46: "Delete", + 112: "F1", + 113: "F2", + 114: "F3", + 115: "F4", + 116: "F5", + 117: "F6", + 118: "F7", + 119: "F8", + 120: "F9", + 121: "F10", + 122: "F11", + 123: "F12", + 144: "NumLock", + 145: "ScrollLock", + 224: "Meta", + }, + Od = { + Alt: "altKey", + Control: "ctrlKey", + Meta: "metaKey", + Shift: "shiftKey", + }; +function Pd(a) { + var b = this.nativeEvent; + return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1; +} +function zd() { + return Pd; +} +var Qd = A({}, ud, { + key: function (a) { + if (a.key) { + var b = Md[a.key] || a.key; + if ("Unidentified" !== b) return b; + } + return "keypress" === a.type + ? ((a = od(a)), 13 === a ? "Enter" : String.fromCharCode(a)) + : "keydown" === a.type || "keyup" === a.type + ? Nd[a.keyCode] || "Unidentified" + : ""; + }, + code: 0, + location: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + repeat: 0, + locale: 0, + getModifierState: zd, + charCode: function (a) { + return "keypress" === a.type ? od(a) : 0; + }, + keyCode: function (a) { + return "keydown" === a.type || "keyup" === a.type ? a.keyCode : 0; + }, + which: function (a) { + return "keypress" === a.type + ? od(a) + : "keydown" === a.type || "keyup" === a.type + ? a.keyCode + : 0; + }, + }), + Rd = rd(Qd), + Sd = A({}, Ad, { + pointerId: 0, + width: 0, + height: 0, + pressure: 0, + tangentialPressure: 0, + tiltX: 0, + tiltY: 0, + twist: 0, + pointerType: 0, + isPrimary: 0, + }), + Td = rd(Sd), + Ud = A({}, ud, { + touches: 0, + targetTouches: 0, + changedTouches: 0, + altKey: 0, + metaKey: 0, + ctrlKey: 0, + shiftKey: 0, + getModifierState: zd, + }), + Vd = rd(Ud), + Wd = A({}, sd, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), + Xd = rd(Wd), + Yd = A({}, Ad, { + deltaX: function (a) { + return "deltaX" in a ? a.deltaX : "wheelDeltaX" in a ? -a.wheelDeltaX : 0; + }, + deltaY: function (a) { + return "deltaY" in a + ? a.deltaY + : "wheelDeltaY" in a + ? -a.wheelDeltaY + : "wheelDelta" in a + ? -a.wheelDelta + : 0; + }, + deltaZ: 0, + deltaMode: 0, + }), + Zd = rd(Yd), + $d = [9, 13, 27, 32], + ae = ia && "CompositionEvent" in window, + be = null; +ia && "documentMode" in document && (be = document.documentMode); +var ce = ia && "TextEvent" in window && !be, + de = ia && (!ae || (be && 8 < be && 11 >= be)), + ee = String.fromCharCode(32), + fe = !1; +function ge(a, b) { + switch (a) { + case "keyup": + return -1 !== $d.indexOf(b.keyCode); + case "keydown": + return 229 !== b.keyCode; + case "keypress": + case "mousedown": + case "focusout": + return !0; + default: + return !1; + } +} +function he(a) { + a = a.detail; + return "object" === typeof a && "data" in a ? a.data : null; +} +var ie = !1; +function je(a, b) { + switch (a) { + case "compositionend": + return he(b); + case "keypress": + if (32 !== b.which) return null; + fe = !0; + return ee; + case "textInput": + return (a = b.data), a === ee && fe ? null : a; + default: + return null; + } +} +function ke(a, b) { + if (ie) + return "compositionend" === a || (!ae && ge(a, b)) + ? ((a = nd()), (md = ld = kd = null), (ie = !1), a) + : null; + switch (a) { + case "paste": + return null; + case "keypress": + if (!(b.ctrlKey || b.altKey || b.metaKey) || (b.ctrlKey && b.altKey)) { + if (b.char && 1 < b.char.length) return b.char; + if (b.which) return String.fromCharCode(b.which); + } + return null; + case "compositionend": + return de && "ko" !== b.locale ? null : b.data; + default: + return null; + } +} +var le = { + color: !0, + date: !0, + datetime: !0, + "datetime-local": !0, + email: !0, + month: !0, + number: !0, + password: !0, + range: !0, + search: !0, + tel: !0, + text: !0, + time: !0, + url: !0, + week: !0, +}; +function me(a) { + var b = a && a.nodeName && a.nodeName.toLowerCase(); + return "input" === b ? !!le[a.type] : "textarea" === b ? !0 : !1; +} +function ne(a, b, c, d) { + Eb(d); + b = oe(b, "onChange"); + 0 < b.length && + ((c = new td("onChange", "change", null, c, d)), + a.push({ event: c, listeners: b })); +} +var pe = null, + qe = null; +function re(a) { + se(a, 0); +} +function te(a) { + var b = ue(a); + if (Wa(b)) return a; +} +function ve(a, b) { + if ("change" === a) return b; +} +var we = !1; +if (ia) { + var xe; + if (ia) { + var ye = "oninput" in document; + if (!ye) { + var ze = document.createElement("div"); + ze.setAttribute("oninput", "return;"); + ye = "function" === typeof ze.oninput; + } + xe = ye; + } else xe = !1; + we = xe && (!document.documentMode || 9 < document.documentMode); +} +function Ae() { + pe && (pe.detachEvent("onpropertychange", Be), (qe = pe = null)); +} +function Be(a) { + if ("value" === a.propertyName && te(qe)) { + var b = []; + ne(b, qe, a, xb(a)); + Jb(re, b); + } +} +function Ce(a, b, c) { + "focusin" === a + ? (Ae(), (pe = b), (qe = c), pe.attachEvent("onpropertychange", Be)) + : "focusout" === a && Ae(); +} +function De(a) { + if ("selectionchange" === a || "keyup" === a || "keydown" === a) + return te(qe); +} +function Ee(a, b) { + if ("click" === a) return te(b); +} +function Fe(a, b) { + if ("input" === a || "change" === a) return te(b); +} +function Ge(a, b) { + return (a === b && (0 !== a || 1 / a === 1 / b)) || (a !== a && b !== b); +} +var He = "function" === typeof Object.is ? Object.is : Ge; +function Ie(a, b) { + if (He(a, b)) return !0; + if ( + "object" !== typeof a || + null === a || + "object" !== typeof b || + null === b + ) + return !1; + var c = Object.keys(a), + d = Object.keys(b); + if (c.length !== d.length) return !1; + for (d = 0; d < c.length; d++) { + var e = c[d]; + if (!ja.call(b, e) || !He(a[e], b[e])) return !1; + } + return !0; +} +function Je(a) { + for (; a && a.firstChild; ) a = a.firstChild; + return a; +} +function Ke(a, b) { + var c = Je(a); + a = 0; + for (var d; c; ) { + if (3 === c.nodeType) { + d = a + c.textContent.length; + if (a <= b && d >= b) return { node: c, offset: b - a }; + a = d; + } + a: { + for (; c; ) { + if (c.nextSibling) { + c = c.nextSibling; + break a; + } + c = c.parentNode; + } + c = void 0; + } + c = Je(c); + } +} +function Le(a, b) { + return a && b + ? a === b + ? !0 + : a && 3 === a.nodeType + ? !1 + : b && 3 === b.nodeType + ? Le(a, b.parentNode) + : "contains" in a + ? a.contains(b) + : a.compareDocumentPosition + ? !!(a.compareDocumentPosition(b) & 16) + : !1 + : !1; +} +function Me() { + for (var a = window, b = Xa(); b instanceof a.HTMLIFrameElement; ) { + try { + var c = "string" === typeof b.contentWindow.location.href; + } catch (d) { + c = !1; + } + if (c) a = b.contentWindow; + else break; + b = Xa(a.document); + } + return b; +} +function Ne(a) { + var b = a && a.nodeName && a.nodeName.toLowerCase(); + return ( + b && + (("input" === b && + ("text" === a.type || + "search" === a.type || + "tel" === a.type || + "url" === a.type || + "password" === a.type)) || + "textarea" === b || + "true" === a.contentEditable) + ); +} +function Oe(a) { + var b = Me(), + c = a.focusedElem, + d = a.selectionRange; + if ( + b !== c && + c && + c.ownerDocument && + Le(c.ownerDocument.documentElement, c) + ) { + if (null !== d && Ne(c)) + if ( + ((b = d.start), + (a = d.end), + void 0 === a && (a = b), + "selectionStart" in c) + ) + (c.selectionStart = b), (c.selectionEnd = Math.min(a, c.value.length)); + else if ( + ((a = ((b = c.ownerDocument || document) && b.defaultView) || window), + a.getSelection) + ) { + a = a.getSelection(); + var e = c.textContent.length, + f = Math.min(d.start, e); + d = void 0 === d.end ? f : Math.min(d.end, e); + !a.extend && f > d && ((e = d), (d = f), (f = e)); + e = Ke(c, f); + var g = Ke(c, d); + e && + g && + (1 !== a.rangeCount || + a.anchorNode !== e.node || + a.anchorOffset !== e.offset || + a.focusNode !== g.node || + a.focusOffset !== g.offset) && + ((b = b.createRange()), + b.setStart(e.node, e.offset), + a.removeAllRanges(), + f > d + ? (a.addRange(b), a.extend(g.node, g.offset)) + : (b.setEnd(g.node, g.offset), a.addRange(b))); + } + b = []; + for (a = c; (a = a.parentNode); ) + 1 === a.nodeType && + b.push({ element: a, left: a.scrollLeft, top: a.scrollTop }); + "function" === typeof c.focus && c.focus(); + for (c = 0; c < b.length; c++) + (a = b[c]), + (a.element.scrollLeft = a.left), + (a.element.scrollTop = a.top); + } +} +var Pe = ia && "documentMode" in document && 11 >= document.documentMode, + Qe = null, + Re = null, + Se = null, + Te = !1; +function Ue(a, b, c) { + var d = c.window === c ? c.document : 9 === c.nodeType ? c : c.ownerDocument; + Te || + null == Qe || + Qe !== Xa(d) || + ((d = Qe), + "selectionStart" in d && Ne(d) + ? (d = { start: d.selectionStart, end: d.selectionEnd }) + : ((d = ( + (d.ownerDocument && d.ownerDocument.defaultView) || + window + ).getSelection()), + (d = { + anchorNode: d.anchorNode, + anchorOffset: d.anchorOffset, + focusNode: d.focusNode, + focusOffset: d.focusOffset, + })), + (Se && Ie(Se, d)) || + ((Se = d), + (d = oe(Re, "onSelect")), + 0 < d.length && + ((b = new td("onSelect", "select", null, b, c)), + a.push({ event: b, listeners: d }), + (b.target = Qe)))); +} +function Ve(a, b) { + var c = {}; + c[a.toLowerCase()] = b.toLowerCase(); + c["Webkit" + a] = "webkit" + b; + c["Moz" + a] = "moz" + b; + return c; +} +var We = { + animationend: Ve("Animation", "AnimationEnd"), + animationiteration: Ve("Animation", "AnimationIteration"), + animationstart: Ve("Animation", "AnimationStart"), + transitionend: Ve("Transition", "TransitionEnd"), + }, + Xe = {}, + Ye = {}; +ia && + ((Ye = document.createElement("div").style), + "AnimationEvent" in window || + (delete We.animationend.animation, + delete We.animationiteration.animation, + delete We.animationstart.animation), + "TransitionEvent" in window || delete We.transitionend.transition); +function Ze(a) { + if (Xe[a]) return Xe[a]; + if (!We[a]) return a; + var b = We[a], + c; + for (c in b) if (b.hasOwnProperty(c) && c in Ye) return (Xe[a] = b[c]); + return a; +} +var $e = Ze("animationend"), + af = Ze("animationiteration"), + bf = Ze("animationstart"), + cf = Ze("transitionend"), + df = new Map(), + ef = + "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split( + " " + ); +function ff(a, b) { + df.set(a, b); + fa(b, [a]); +} +for (var gf = 0; gf < ef.length; gf++) { + var hf = ef[gf], + jf = hf.toLowerCase(), + kf = hf[0].toUpperCase() + hf.slice(1); + ff(jf, "on" + kf); +} +ff($e, "onAnimationEnd"); +ff(af, "onAnimationIteration"); +ff(bf, "onAnimationStart"); +ff("dblclick", "onDoubleClick"); +ff("focusin", "onFocus"); +ff("focusout", "onBlur"); +ff(cf, "onTransitionEnd"); +ha("onMouseEnter", ["mouseout", "mouseover"]); +ha("onMouseLeave", ["mouseout", "mouseover"]); +ha("onPointerEnter", ["pointerout", "pointerover"]); +ha("onPointerLeave", ["pointerout", "pointerover"]); +fa( + "onChange", + "change click focusin focusout input keydown keyup selectionchange".split(" ") +); +fa( + "onSelect", + "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split( + " " + ) +); +fa("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); +fa( + "onCompositionEnd", + "compositionend focusout keydown keypress keyup mousedown".split(" ") +); +fa( + "onCompositionStart", + "compositionstart focusout keydown keypress keyup mousedown".split(" ") +); +fa( + "onCompositionUpdate", + "compositionupdate focusout keydown keypress keyup mousedown".split(" ") +); +var lf = + "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split( + " " + ), + mf = new Set("cancel close invalid load scroll toggle".split(" ").concat(lf)); +function nf(a, b, c) { + var d = a.type || "unknown-event"; + a.currentTarget = c; + Ub(d, b, void 0, a); + a.currentTarget = null; +} +function se(a, b) { + b = 0 !== (b & 4); + for (var c = 0; c < a.length; c++) { + var d = a[c], + e = d.event; + d = d.listeners; + a: { + var f = void 0; + if (b) + for (var g = d.length - 1; 0 <= g; g--) { + var h = d[g], + k = h.instance, + l = h.currentTarget; + h = h.listener; + if (k !== f && e.isPropagationStopped()) break a; + nf(e, h, l); + f = k; + } + else + for (g = 0; g < d.length; g++) { + h = d[g]; + k = h.instance; + l = h.currentTarget; + h = h.listener; + if (k !== f && e.isPropagationStopped()) break a; + nf(e, h, l); + f = k; + } + } + } + if (Qb) throw ((a = Rb), (Qb = !1), (Rb = null), a); +} +function D(a, b) { + var c = b[of]; + void 0 === c && (c = b[of] = new Set()); + var d = a + "__bubble"; + c.has(d) || (pf(b, a, 2, !1), c.add(d)); +} +function qf(a, b, c) { + var d = 0; + b && (d |= 4); + pf(c, a, d, b); +} +var rf = "_reactListening" + Math.random().toString(36).slice(2); +function sf(a) { + if (!a[rf]) { + a[rf] = !0; + da.forEach(function (b) { + "selectionchange" !== b && (mf.has(b) || qf(b, !1, a), qf(b, !0, a)); + }); + var b = 9 === a.nodeType ? a : a.ownerDocument; + null === b || b[rf] || ((b[rf] = !0), qf("selectionchange", !1, b)); + } +} +function pf(a, b, c, d) { + switch (jd(b)) { + case 1: + var e = ed; + break; + case 4: + e = gd; + break; + default: + e = fd; + } + c = e.bind(null, b, c, a); + e = void 0; + !Lb || ("touchstart" !== b && "touchmove" !== b && "wheel" !== b) || (e = !0); + d + ? void 0 !== e + ? a.addEventListener(b, c, { capture: !0, passive: e }) + : a.addEventListener(b, c, !0) + : void 0 !== e + ? a.addEventListener(b, c, { passive: e }) + : a.addEventListener(b, c, !1); +} +function hd(a, b, c, d, e) { + var f = d; + if (0 === (b & 1) && 0 === (b & 2) && null !== d) + a: for (;;) { + if (null === d) return; + var g = d.tag; + if (3 === g || 4 === g) { + var h = d.stateNode.containerInfo; + if (h === e || (8 === h.nodeType && h.parentNode === e)) break; + if (4 === g) + for (g = d.return; null !== g; ) { + var k = g.tag; + if (3 === k || 4 === k) + if ( + ((k = g.stateNode.containerInfo), + k === e || (8 === k.nodeType && k.parentNode === e)) + ) + return; + g = g.return; + } + for (; null !== h; ) { + g = Wc(h); + if (null === g) return; + k = g.tag; + if (5 === k || 6 === k) { + d = f = g; + continue a; + } + h = h.parentNode; + } + } + d = d.return; + } + Jb(function () { + var d = f, + e = xb(c), + g = []; + a: { + var h = df.get(a); + if (void 0 !== h) { + var k = td, + n = a; + switch (a) { + case "keypress": + if (0 === od(c)) break a; + case "keydown": + case "keyup": + k = Rd; + break; + case "focusin": + n = "focus"; + k = Fd; + break; + case "focusout": + n = "blur"; + k = Fd; + break; + case "beforeblur": + case "afterblur": + k = Fd; + break; + case "click": + if (2 === c.button) break a; + case "auxclick": + case "dblclick": + case "mousedown": + case "mousemove": + case "mouseup": + case "mouseout": + case "mouseover": + case "contextmenu": + k = Bd; + break; + case "drag": + case "dragend": + case "dragenter": + case "dragexit": + case "dragleave": + case "dragover": + case "dragstart": + case "drop": + k = Dd; + break; + case "touchcancel": + case "touchend": + case "touchmove": + case "touchstart": + k = Vd; + break; + case $e: + case af: + case bf: + k = Hd; + break; + case cf: + k = Xd; + break; + case "scroll": + k = vd; + break; + case "wheel": + k = Zd; + break; + case "copy": + case "cut": + case "paste": + k = Jd; + break; + case "gotpointercapture": + case "lostpointercapture": + case "pointercancel": + case "pointerdown": + case "pointermove": + case "pointerout": + case "pointerover": + case "pointerup": + k = Td; + } + var t = 0 !== (b & 4), + J = !t && "scroll" === a, + x = t ? (null !== h ? h + "Capture" : null) : h; + t = []; + for (var w = d, u; null !== w; ) { + u = w; + var F = u.stateNode; + 5 === u.tag && + null !== F && + ((u = F), + null !== x && ((F = Kb(w, x)), null != F && t.push(tf(w, F, u)))); + if (J) break; + w = w.return; + } + 0 < t.length && + ((h = new k(h, n, null, c, e)), g.push({ event: h, listeners: t })); + } + } + if (0 === (b & 7)) { + a: { + h = "mouseover" === a || "pointerover" === a; + k = "mouseout" === a || "pointerout" === a; + if ( + h && + c !== wb && + (n = c.relatedTarget || c.fromElement) && + (Wc(n) || n[uf]) + ) + break a; + if (k || h) { + h = + e.window === e + ? e + : (h = e.ownerDocument) + ? h.defaultView || h.parentWindow + : window; + if (k) { + if ( + ((n = c.relatedTarget || c.toElement), + (k = d), + (n = n ? Wc(n) : null), + null !== n && + ((J = Vb(n)), n !== J || (5 !== n.tag && 6 !== n.tag))) + ) + n = null; + } else (k = null), (n = d); + if (k !== n) { + t = Bd; + F = "onMouseLeave"; + x = "onMouseEnter"; + w = "mouse"; + if ("pointerout" === a || "pointerover" === a) + (t = Td), + (F = "onPointerLeave"), + (x = "onPointerEnter"), + (w = "pointer"); + J = null == k ? h : ue(k); + u = null == n ? h : ue(n); + h = new t(F, w + "leave", k, c, e); + h.target = J; + h.relatedTarget = u; + F = null; + Wc(e) === d && + ((t = new t(x, w + "enter", n, c, e)), + (t.target = u), + (t.relatedTarget = J), + (F = t)); + J = F; + if (k && n) + b: { + t = k; + x = n; + w = 0; + for (u = t; u; u = vf(u)) w++; + u = 0; + for (F = x; F; F = vf(F)) u++; + for (; 0 < w - u; ) (t = vf(t)), w--; + for (; 0 < u - w; ) (x = vf(x)), u--; + for (; w--; ) { + if (t === x || (null !== x && t === x.alternate)) break b; + t = vf(t); + x = vf(x); + } + t = null; + } + else t = null; + null !== k && wf(g, h, k, t, !1); + null !== n && null !== J && wf(g, J, n, t, !0); + } + } + } + a: { + h = d ? ue(d) : window; + k = h.nodeName && h.nodeName.toLowerCase(); + if ("select" === k || ("input" === k && "file" === h.type)) var na = ve; + else if (me(h)) + if (we) na = Fe; + else { + na = De; + var xa = Ce; + } + else + (k = h.nodeName) && + "input" === k.toLowerCase() && + ("checkbox" === h.type || "radio" === h.type) && + (na = Ee); + if (na && (na = na(a, d))) { + ne(g, na, c, e); + break a; + } + xa && xa(a, h, d); + "focusout" === a && + (xa = h._wrapperState) && + xa.controlled && + "number" === h.type && + cb(h, "number", h.value); + } + xa = d ? ue(d) : window; + switch (a) { + case "focusin": + if (me(xa) || "true" === xa.contentEditable) + (Qe = xa), (Re = d), (Se = null); + break; + case "focusout": + Se = Re = Qe = null; + break; + case "mousedown": + Te = !0; + break; + case "contextmenu": + case "mouseup": + case "dragend": + Te = !1; + Ue(g, c, e); + break; + case "selectionchange": + if (Pe) break; + case "keydown": + case "keyup": + Ue(g, c, e); + } + var $a; + if (ae) + b: { + switch (a) { + case "compositionstart": + var ba = "onCompositionStart"; + break b; + case "compositionend": + ba = "onCompositionEnd"; + break b; + case "compositionupdate": + ba = "onCompositionUpdate"; + break b; + } + ba = void 0; + } + else + ie + ? ge(a, c) && (ba = "onCompositionEnd") + : "keydown" === a && 229 === c.keyCode && (ba = "onCompositionStart"); + ba && + (de && + "ko" !== c.locale && + (ie || "onCompositionStart" !== ba + ? "onCompositionEnd" === ba && ie && ($a = nd()) + : ((kd = e), + (ld = "value" in kd ? kd.value : kd.textContent), + (ie = !0))), + (xa = oe(d, ba)), + 0 < xa.length && + ((ba = new Ld(ba, a, null, c, e)), + g.push({ event: ba, listeners: xa }), + $a ? (ba.data = $a) : (($a = he(c)), null !== $a && (ba.data = $a)))); + if (($a = ce ? je(a, c) : ke(a, c))) + (d = oe(d, "onBeforeInput")), + 0 < d.length && + ((e = new Ld("onBeforeInput", "beforeinput", null, c, e)), + g.push({ event: e, listeners: d }), + (e.data = $a)); + } + se(g, b); + }); +} +function tf(a, b, c) { + return { instance: a, listener: b, currentTarget: c }; +} +function oe(a, b) { + for (var c = b + "Capture", d = []; null !== a; ) { + var e = a, + f = e.stateNode; + 5 === e.tag && + null !== f && + ((e = f), + (f = Kb(a, c)), + null != f && d.unshift(tf(a, f, e)), + (f = Kb(a, b)), + null != f && d.push(tf(a, f, e))); + a = a.return; + } + return d; +} +function vf(a) { + if (null === a) return null; + do a = a.return; + while (a && 5 !== a.tag); + return a ? a : null; +} +function wf(a, b, c, d, e) { + for (var f = b._reactName, g = []; null !== c && c !== d; ) { + var h = c, + k = h.alternate, + l = h.stateNode; + if (null !== k && k === d) break; + 5 === h.tag && + null !== l && + ((h = l), + e + ? ((k = Kb(c, f)), null != k && g.unshift(tf(c, k, h))) + : e || ((k = Kb(c, f)), null != k && g.push(tf(c, k, h)))); + c = c.return; + } + 0 !== g.length && a.push({ event: b, listeners: g }); +} +var xf = /\r\n?/g, + yf = /\u0000|\uFFFD/g; +function zf(a) { + return ("string" === typeof a ? a : "" + a).replace(xf, "\n").replace(yf, ""); +} +function Af(a, b, c) { + b = zf(b); + if (zf(a) !== b && c) throw Error(p(425)); +} +function Bf() {} +var Cf = null, + Df = null; +function Ef(a, b) { + return ( + "textarea" === a || + "noscript" === a || + "string" === typeof b.children || + "number" === typeof b.children || + ("object" === typeof b.dangerouslySetInnerHTML && + null !== b.dangerouslySetInnerHTML && + null != b.dangerouslySetInnerHTML.__html) + ); +} +var Ff = "function" === typeof setTimeout ? setTimeout : void 0, + Gf = "function" === typeof clearTimeout ? clearTimeout : void 0, + Hf = "function" === typeof Promise ? Promise : void 0, + Jf = + "function" === typeof queueMicrotask + ? queueMicrotask + : "undefined" !== typeof Hf + ? function (a) { + return Hf.resolve(null).then(a).catch(If); + } + : Ff; +function If(a) { + setTimeout(function () { + throw a; + }); +} +function Kf(a, b) { + var c = b, + d = 0; + do { + var e = c.nextSibling; + a.removeChild(c); + if (e && 8 === e.nodeType) + if (((c = e.data), "/$" === c)) { + if (0 === d) { + a.removeChild(e); + bd(b); + return; + } + d--; + } else ("$" !== c && "$?" !== c && "$!" !== c) || d++; + c = e; + } while (c); + bd(b); +} +function Lf(a) { + for (; null != a; a = a.nextSibling) { + var b = a.nodeType; + if (1 === b || 3 === b) break; + if (8 === b) { + b = a.data; + if ("$" === b || "$!" === b || "$?" === b) break; + if ("/$" === b) return null; + } + } + return a; +} +function Mf(a) { + a = a.previousSibling; + for (var b = 0; a; ) { + if (8 === a.nodeType) { + var c = a.data; + if ("$" === c || "$!" === c || "$?" === c) { + if (0 === b) return a; + b--; + } else "/$" === c && b++; + } + a = a.previousSibling; + } + return null; +} +var Nf = Math.random().toString(36).slice(2), + Of = "__reactFiber$" + Nf, + Pf = "__reactProps$" + Nf, + uf = "__reactContainer$" + Nf, + of = "__reactEvents$" + Nf, + Qf = "__reactListeners$" + Nf, + Rf = "__reactHandles$" + Nf; +function Wc(a) { + var b = a[Of]; + if (b) return b; + for (var c = a.parentNode; c; ) { + if ((b = c[uf] || c[Of])) { + c = b.alternate; + if (null !== b.child || (null !== c && null !== c.child)) + for (a = Mf(a); null !== a; ) { + if ((c = a[Of])) return c; + a = Mf(a); + } + return b; + } + a = c; + c = a.parentNode; + } + return null; +} +function Cb(a) { + a = a[Of] || a[uf]; + return !a || (5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag) + ? null + : a; +} +function ue(a) { + if (5 === a.tag || 6 === a.tag) return a.stateNode; + throw Error(p(33)); +} +function Db(a) { + return a[Pf] || null; +} +var Sf = [], + Tf = -1; +function Uf(a) { + return { current: a }; +} +function E(a) { + 0 > Tf || ((a.current = Sf[Tf]), (Sf[Tf] = null), Tf--); +} +function G(a, b) { + Tf++; + Sf[Tf] = a.current; + a.current = b; +} +var Vf = {}, + H = Uf(Vf), + Wf = Uf(!1), + Xf = Vf; +function Yf(a, b) { + var c = a.type.contextTypes; + if (!c) return Vf; + var d = a.stateNode; + if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) + return d.__reactInternalMemoizedMaskedChildContext; + var e = {}, + f; + for (f in c) e[f] = b[f]; + d && + ((a = a.stateNode), + (a.__reactInternalMemoizedUnmaskedChildContext = b), + (a.__reactInternalMemoizedMaskedChildContext = e)); + return e; +} +function Zf(a) { + a = a.childContextTypes; + return null !== a && void 0 !== a; +} +function $f() { + E(Wf); + E(H); +} +function ag(a, b, c) { + if (H.current !== Vf) throw Error(p(168)); + G(H, b); + G(Wf, c); +} +function bg(a, b, c) { + var d = a.stateNode; + b = b.childContextTypes; + if ("function" !== typeof d.getChildContext) return c; + d = d.getChildContext(); + for (var e in d) if (!(e in b)) throw Error(p(108, Ra(a) || "Unknown", e)); + return A({}, c, d); +} +function cg(a) { + a = ((a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext) || Vf; + Xf = H.current; + G(H, a); + G(Wf, Wf.current); + return !0; +} +function dg(a, b, c) { + var d = a.stateNode; + if (!d) throw Error(p(169)); + c + ? ((a = bg(a, b, Xf)), + (d.__reactInternalMemoizedMergedChildContext = a), + E(Wf), + E(H), + G(H, a)) + : E(Wf); + G(Wf, c); +} +var eg = null, + fg = !1, + gg = !1; +function hg(a) { + null === eg ? (eg = [a]) : eg.push(a); +} +function ig(a) { + fg = !0; + hg(a); +} +function jg() { + if (!gg && null !== eg) { + gg = !0; + var a = 0, + b = C; + try { + var c = eg; + for (C = 1; a < c.length; a++) { + var d = c[a]; + do d = d(!0); + while (null !== d); + } + eg = null; + fg = !1; + } catch (e) { + throw (null !== eg && (eg = eg.slice(a + 1)), ac(fc, jg), e); + } finally { + (C = b), (gg = !1); + } + } + return null; +} +var kg = [], + lg = 0, + mg = null, + ng = 0, + og = [], + pg = 0, + qg = null, + rg = 1, + sg = ""; +function tg(a, b) { + kg[lg++] = ng; + kg[lg++] = mg; + mg = a; + ng = b; +} +function ug(a, b, c) { + og[pg++] = rg; + og[pg++] = sg; + og[pg++] = qg; + qg = a; + var d = rg; + a = sg; + var e = 32 - oc(d) - 1; + d &= ~(1 << e); + c += 1; + var f = 32 - oc(b) + e; + if (30 < f) { + var g = e - (e % 5); + f = (d & ((1 << g) - 1)).toString(32); + d >>= g; + e -= g; + rg = (1 << (32 - oc(b) + e)) | (c << e) | d; + sg = f + a; + } else (rg = (1 << f) | (c << e) | d), (sg = a); +} +function vg(a) { + null !== a.return && (tg(a, 1), ug(a, 1, 0)); +} +function wg(a) { + for (; a === mg; ) + (mg = kg[--lg]), (kg[lg] = null), (ng = kg[--lg]), (kg[lg] = null); + for (; a === qg; ) + (qg = og[--pg]), + (og[pg] = null), + (sg = og[--pg]), + (og[pg] = null), + (rg = og[--pg]), + (og[pg] = null); +} +var xg = null, + yg = null, + I = !1, + zg = null; +function Ag(a, b) { + var c = Bg(5, null, null, 0); + c.elementType = "DELETED"; + c.stateNode = b; + c.return = a; + b = a.deletions; + null === b ? ((a.deletions = [c]), (a.flags |= 16)) : b.push(c); +} +function Cg(a, b) { + switch (a.tag) { + case 5: + var c = a.type; + b = + 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() + ? null + : b; + return null !== b + ? ((a.stateNode = b), (xg = a), (yg = Lf(b.firstChild)), !0) + : !1; + case 6: + return ( + (b = "" === a.pendingProps || 3 !== b.nodeType ? null : b), + null !== b ? ((a.stateNode = b), (xg = a), (yg = null), !0) : !1 + ); + case 13: + return ( + (b = 8 !== b.nodeType ? null : b), + null !== b + ? ((c = null !== qg ? { id: rg, overflow: sg } : null), + (a.memoizedState = { + dehydrated: b, + treeContext: c, + retryLane: 1073741824, + }), + (c = Bg(18, null, null, 0)), + (c.stateNode = b), + (c.return = a), + (a.child = c), + (xg = a), + (yg = null), + !0) + : !1 + ); + default: + return !1; + } +} +function Dg(a) { + return 0 !== (a.mode & 1) && 0 === (a.flags & 128); +} +function Eg(a) { + if (I) { + var b = yg; + if (b) { + var c = b; + if (!Cg(a, b)) { + if (Dg(a)) throw Error(p(418)); + b = Lf(c.nextSibling); + var d = xg; + b && Cg(a, b) + ? Ag(d, c) + : ((a.flags = (a.flags & -4097) | 2), (I = !1), (xg = a)); + } + } else { + if (Dg(a)) throw Error(p(418)); + a.flags = (a.flags & -4097) | 2; + I = !1; + xg = a; + } + } +} +function Fg(a) { + for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag; ) + a = a.return; + xg = a; +} +function Gg(a) { + if (a !== xg) return !1; + if (!I) return Fg(a), (I = !0), !1; + var b; + (b = 3 !== a.tag) && + !(b = 5 !== a.tag) && + ((b = a.type), + (b = "head" !== b && "body" !== b && !Ef(a.type, a.memoizedProps))); + if (b && (b = yg)) { + if (Dg(a)) throw (Hg(), Error(p(418))); + for (; b; ) Ag(a, b), (b = Lf(b.nextSibling)); + } + Fg(a); + if (13 === a.tag) { + a = a.memoizedState; + a = null !== a ? a.dehydrated : null; + if (!a) throw Error(p(317)); + a: { + a = a.nextSibling; + for (b = 0; a; ) { + if (8 === a.nodeType) { + var c = a.data; + if ("/$" === c) { + if (0 === b) { + yg = Lf(a.nextSibling); + break a; + } + b--; + } else ("$" !== c && "$!" !== c && "$?" !== c) || b++; + } + a = a.nextSibling; + } + yg = null; + } + } else yg = xg ? Lf(a.stateNode.nextSibling) : null; + return !0; +} +function Hg() { + for (var a = yg; a; ) a = Lf(a.nextSibling); +} +function Ig() { + yg = xg = null; + I = !1; +} +function Jg(a) { + null === zg ? (zg = [a]) : zg.push(a); +} +var Kg = ua.ReactCurrentBatchConfig; +function Lg(a, b) { + if (a && a.defaultProps) { + b = A({}, b); + a = a.defaultProps; + for (var c in a) void 0 === b[c] && (b[c] = a[c]); + return b; + } + return b; +} +var Mg = Uf(null), + Ng = null, + Og = null, + Pg = null; +function Qg() { + Pg = Og = Ng = null; +} +function Rg(a) { + var b = Mg.current; + E(Mg); + a._currentValue = b; +} +function Sg(a, b, c) { + for (; null !== a; ) { + var d = a.alternate; + (a.childLanes & b) !== b + ? ((a.childLanes |= b), null !== d && (d.childLanes |= b)) + : null !== d && (d.childLanes & b) !== b && (d.childLanes |= b); + if (a === c) break; + a = a.return; + } +} +function Tg(a, b) { + Ng = a; + Pg = Og = null; + a = a.dependencies; + null !== a && + null !== a.firstContext && + (0 !== (a.lanes & b) && (Ug = !0), (a.firstContext = null)); +} +function Vg(a) { + var b = a._currentValue; + if (Pg !== a) + if (((a = { context: a, memoizedValue: b, next: null }), null === Og)) { + if (null === Ng) throw Error(p(308)); + Og = a; + Ng.dependencies = { lanes: 0, firstContext: a }; + } else Og = Og.next = a; + return b; +} +var Wg = null; +function Xg(a) { + null === Wg ? (Wg = [a]) : Wg.push(a); +} +function Yg(a, b, c, d) { + var e = b.interleaved; + null === e ? ((c.next = c), Xg(b)) : ((c.next = e.next), (e.next = c)); + b.interleaved = c; + return Zg(a, d); +} +function Zg(a, b) { + a.lanes |= b; + var c = a.alternate; + null !== c && (c.lanes |= b); + c = a; + for (a = a.return; null !== a; ) + (a.childLanes |= b), + (c = a.alternate), + null !== c && (c.childLanes |= b), + (c = a), + (a = a.return); + return 3 === c.tag ? c.stateNode : null; +} +var $g = !1; +function ah(a) { + a.updateQueue = { + baseState: a.memoizedState, + firstBaseUpdate: null, + lastBaseUpdate: null, + shared: { pending: null, interleaved: null, lanes: 0 }, + effects: null, + }; +} +function bh(a, b) { + a = a.updateQueue; + b.updateQueue === a && + (b.updateQueue = { + baseState: a.baseState, + firstBaseUpdate: a.firstBaseUpdate, + lastBaseUpdate: a.lastBaseUpdate, + shared: a.shared, + effects: a.effects, + }); +} +function ch(a, b) { + return { + eventTime: a, + lane: b, + tag: 0, + payload: null, + callback: null, + next: null, + }; +} +function dh(a, b, c) { + var d = a.updateQueue; + if (null === d) return null; + d = d.shared; + if (0 !== (K & 2)) { + var e = d.pending; + null === e ? (b.next = b) : ((b.next = e.next), (e.next = b)); + d.pending = b; + return Zg(a, c); + } + e = d.interleaved; + null === e ? ((b.next = b), Xg(d)) : ((b.next = e.next), (e.next = b)); + d.interleaved = b; + return Zg(a, c); +} +function eh(a, b, c) { + b = b.updateQueue; + if (null !== b && ((b = b.shared), 0 !== (c & 4194240))) { + var d = b.lanes; + d &= a.pendingLanes; + c |= d; + b.lanes = c; + Cc(a, c); + } +} +function fh(a, b) { + var c = a.updateQueue, + d = a.alternate; + if (null !== d && ((d = d.updateQueue), c === d)) { + var e = null, + f = null; + c = c.firstBaseUpdate; + if (null !== c) { + do { + var g = { + eventTime: c.eventTime, + lane: c.lane, + tag: c.tag, + payload: c.payload, + callback: c.callback, + next: null, + }; + null === f ? (e = f = g) : (f = f.next = g); + c = c.next; + } while (null !== c); + null === f ? (e = f = b) : (f = f.next = b); + } else e = f = b; + c = { + baseState: d.baseState, + firstBaseUpdate: e, + lastBaseUpdate: f, + shared: d.shared, + effects: d.effects, + }; + a.updateQueue = c; + return; + } + a = c.lastBaseUpdate; + null === a ? (c.firstBaseUpdate = b) : (a.next = b); + c.lastBaseUpdate = b; +} +function gh(a, b, c, d) { + var e = a.updateQueue; + $g = !1; + var f = e.firstBaseUpdate, + g = e.lastBaseUpdate, + h = e.shared.pending; + if (null !== h) { + e.shared.pending = null; + var k = h, + l = k.next; + k.next = null; + null === g ? (f = l) : (g.next = l); + g = k; + var m = a.alternate; + null !== m && + ((m = m.updateQueue), + (h = m.lastBaseUpdate), + h !== g && + (null === h ? (m.firstBaseUpdate = l) : (h.next = l), + (m.lastBaseUpdate = k))); + } + if (null !== f) { + var q = e.baseState; + g = 0; + m = l = k = null; + h = f; + do { + var r = h.lane, + y = h.eventTime; + if ((d & r) === r) { + null !== m && + (m = m.next = + { + eventTime: y, + lane: 0, + tag: h.tag, + payload: h.payload, + callback: h.callback, + next: null, + }); + a: { + var n = a, + t = h; + r = b; + y = c; + switch (t.tag) { + case 1: + n = t.payload; + if ("function" === typeof n) { + q = n.call(y, q, r); + break a; + } + q = n; + break a; + case 3: + n.flags = (n.flags & -65537) | 128; + case 0: + n = t.payload; + r = "function" === typeof n ? n.call(y, q, r) : n; + if (null === r || void 0 === r) break a; + q = A({}, q, r); + break a; + case 2: + $g = !0; + } + } + null !== h.callback && + 0 !== h.lane && + ((a.flags |= 64), + (r = e.effects), + null === r ? (e.effects = [h]) : r.push(h)); + } else + (y = { + eventTime: y, + lane: r, + tag: h.tag, + payload: h.payload, + callback: h.callback, + next: null, + }), + null === m ? ((l = m = y), (k = q)) : (m = m.next = y), + (g |= r); + h = h.next; + if (null === h) + if (((h = e.shared.pending), null === h)) break; + else + (r = h), + (h = r.next), + (r.next = null), + (e.lastBaseUpdate = r), + (e.shared.pending = null); + } while (1); + null === m && (k = q); + e.baseState = k; + e.firstBaseUpdate = l; + e.lastBaseUpdate = m; + b = e.shared.interleaved; + if (null !== b) { + e = b; + do (g |= e.lane), (e = e.next); + while (e !== b); + } else null === f && (e.shared.lanes = 0); + hh |= g; + a.lanes = g; + a.memoizedState = q; + } +} +function ih(a, b, c) { + a = b.effects; + b.effects = null; + if (null !== a) + for (b = 0; b < a.length; b++) { + var d = a[b], + e = d.callback; + if (null !== e) { + d.callback = null; + d = c; + if ("function" !== typeof e) throw Error(p(191, e)); + e.call(d); + } + } +} +var jh = new aa.Component().refs; +function kh(a, b, c, d) { + b = a.memoizedState; + c = c(d, b); + c = null === c || void 0 === c ? b : A({}, b, c); + a.memoizedState = c; + 0 === a.lanes && (a.updateQueue.baseState = c); +} +var nh = { + isMounted: function (a) { + return (a = a._reactInternals) ? Vb(a) === a : !1; + }, + enqueueSetState: function (a, b, c) { + a = a._reactInternals; + var d = L(), + e = lh(a), + f = ch(d, e); + f.payload = b; + void 0 !== c && null !== c && (f.callback = c); + b = dh(a, f, e); + null !== b && (mh(b, a, e, d), eh(b, a, e)); + }, + enqueueReplaceState: function (a, b, c) { + a = a._reactInternals; + var d = L(), + e = lh(a), + f = ch(d, e); + f.tag = 1; + f.payload = b; + void 0 !== c && null !== c && (f.callback = c); + b = dh(a, f, e); + null !== b && (mh(b, a, e, d), eh(b, a, e)); + }, + enqueueForceUpdate: function (a, b) { + a = a._reactInternals; + var c = L(), + d = lh(a), + e = ch(c, d); + e.tag = 2; + void 0 !== b && null !== b && (e.callback = b); + b = dh(a, e, d); + null !== b && (mh(b, a, d, c), eh(b, a, d)); + }, +}; +function oh(a, b, c, d, e, f, g) { + a = a.stateNode; + return "function" === typeof a.shouldComponentUpdate + ? a.shouldComponentUpdate(d, f, g) + : b.prototype && b.prototype.isPureReactComponent + ? !Ie(c, d) || !Ie(e, f) + : !0; +} +function ph(a, b, c) { + var d = !1, + e = Vf; + var f = b.contextType; + "object" === typeof f && null !== f + ? (f = Vg(f)) + : ((e = Zf(b) ? Xf : H.current), + (d = b.contextTypes), + (f = (d = null !== d && void 0 !== d) ? Yf(a, e) : Vf)); + b = new b(c, f); + a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null; + b.updater = nh; + a.stateNode = b; + b._reactInternals = a; + d && + ((a = a.stateNode), + (a.__reactInternalMemoizedUnmaskedChildContext = e), + (a.__reactInternalMemoizedMaskedChildContext = f)); + return b; +} +function qh(a, b, c, d) { + a = b.state; + "function" === typeof b.componentWillReceiveProps && + b.componentWillReceiveProps(c, d); + "function" === typeof b.UNSAFE_componentWillReceiveProps && + b.UNSAFE_componentWillReceiveProps(c, d); + b.state !== a && nh.enqueueReplaceState(b, b.state, null); +} +function rh(a, b, c, d) { + var e = a.stateNode; + e.props = c; + e.state = a.memoizedState; + e.refs = jh; + ah(a); + var f = b.contextType; + "object" === typeof f && null !== f + ? (e.context = Vg(f)) + : ((f = Zf(b) ? Xf : H.current), (e.context = Yf(a, f))); + e.state = a.memoizedState; + f = b.getDerivedStateFromProps; + "function" === typeof f && (kh(a, b, f, c), (e.state = a.memoizedState)); + "function" === typeof b.getDerivedStateFromProps || + "function" === typeof e.getSnapshotBeforeUpdate || + ("function" !== typeof e.UNSAFE_componentWillMount && + "function" !== typeof e.componentWillMount) || + ((b = e.state), + "function" === typeof e.componentWillMount && e.componentWillMount(), + "function" === typeof e.UNSAFE_componentWillMount && + e.UNSAFE_componentWillMount(), + b !== e.state && nh.enqueueReplaceState(e, e.state, null), + gh(a, c, e, d), + (e.state = a.memoizedState)); + "function" === typeof e.componentDidMount && (a.flags |= 4194308); +} +function sh(a, b, c) { + a = c.ref; + if (null !== a && "function" !== typeof a && "object" !== typeof a) { + if (c._owner) { + c = c._owner; + if (c) { + if (1 !== c.tag) throw Error(p(309)); + var d = c.stateNode; + } + if (!d) throw Error(p(147, a)); + var e = d, + f = "" + a; + if ( + null !== b && + null !== b.ref && + "function" === typeof b.ref && + b.ref._stringRef === f + ) + return b.ref; + b = function (a) { + var b = e.refs; + b === jh && (b = e.refs = {}); + null === a ? delete b[f] : (b[f] = a); + }; + b._stringRef = f; + return b; + } + if ("string" !== typeof a) throw Error(p(284)); + if (!c._owner) throw Error(p(290, a)); + } + return a; +} +function th(a, b) { + a = Object.prototype.toString.call(b); + throw Error( + p( + 31, + "[object Object]" === a + ? "object with keys {" + Object.keys(b).join(", ") + "}" + : a + ) + ); +} +function uh(a) { + var b = a._init; + return b(a._payload); +} +function vh(a) { + function b(b, c) { + if (a) { + var d = b.deletions; + null === d ? ((b.deletions = [c]), (b.flags |= 16)) : d.push(c); + } + } + function c(c, d) { + if (!a) return null; + for (; null !== d; ) b(c, d), (d = d.sibling); + return null; + } + function d(a, b) { + for (a = new Map(); null !== b; ) + null !== b.key ? a.set(b.key, b) : a.set(b.index, b), (b = b.sibling); + return a; + } + function e(a, b) { + a = wh(a, b); + a.index = 0; + a.sibling = null; + return a; + } + function f(b, c, d) { + b.index = d; + if (!a) return (b.flags |= 1048576), c; + d = b.alternate; + if (null !== d) return (d = d.index), d < c ? ((b.flags |= 2), c) : d; + b.flags |= 2; + return c; + } + function g(b) { + a && null === b.alternate && (b.flags |= 2); + return b; + } + function h(a, b, c, d) { + if (null === b || 6 !== b.tag) + return (b = xh(c, a.mode, d)), (b.return = a), b; + b = e(b, c); + b.return = a; + return b; + } + function k(a, b, c, d) { + var f = c.type; + if (f === ya) return m(a, b, c.props.children, d, c.key); + if ( + null !== b && + (b.elementType === f || + ("object" === typeof f && + null !== f && + f.$$typeof === Ha && + uh(f) === b.type)) + ) + return (d = e(b, c.props)), (d.ref = sh(a, b, c)), (d.return = a), d; + d = yh(c.type, c.key, c.props, null, a.mode, d); + d.ref = sh(a, b, c); + d.return = a; + return d; + } + function l(a, b, c, d) { + if ( + null === b || + 4 !== b.tag || + b.stateNode.containerInfo !== c.containerInfo || + b.stateNode.implementation !== c.implementation + ) + return (b = zh(c, a.mode, d)), (b.return = a), b; + b = e(b, c.children || []); + b.return = a; + return b; + } + function m(a, b, c, d, f) { + if (null === b || 7 !== b.tag) + return (b = Ah(c, a.mode, d, f)), (b.return = a), b; + b = e(b, c); + b.return = a; + return b; + } + function q(a, b, c) { + if (("string" === typeof b && "" !== b) || "number" === typeof b) + return (b = xh("" + b, a.mode, c)), (b.return = a), b; + if ("object" === typeof b && null !== b) { + switch (b.$$typeof) { + case va: + return ( + (c = yh(b.type, b.key, b.props, null, a.mode, c)), + (c.ref = sh(a, null, b)), + (c.return = a), + c + ); + case wa: + return (b = zh(b, a.mode, c)), (b.return = a), b; + case Ha: + var d = b._init; + return q(a, d(b._payload), c); + } + if (eb(b) || Ka(b)) + return (b = Ah(b, a.mode, c, null)), (b.return = a), b; + th(a, b); + } + return null; + } + function r(a, b, c, d) { + var e = null !== b ? b.key : null; + if (("string" === typeof c && "" !== c) || "number" === typeof c) + return null !== e ? null : h(a, b, "" + c, d); + if ("object" === typeof c && null !== c) { + switch (c.$$typeof) { + case va: + return c.key === e ? k(a, b, c, d) : null; + case wa: + return c.key === e ? l(a, b, c, d) : null; + case Ha: + return (e = c._init), r(a, b, e(c._payload), d); + } + if (eb(c) || Ka(c)) return null !== e ? null : m(a, b, c, d, null); + th(a, c); + } + return null; + } + function y(a, b, c, d, e) { + if (("string" === typeof d && "" !== d) || "number" === typeof d) + return (a = a.get(c) || null), h(b, a, "" + d, e); + if ("object" === typeof d && null !== d) { + switch (d.$$typeof) { + case va: + return (a = a.get(null === d.key ? c : d.key) || null), k(b, a, d, e); + case wa: + return (a = a.get(null === d.key ? c : d.key) || null), l(b, a, d, e); + case Ha: + var f = d._init; + return y(a, b, c, f(d._payload), e); + } + if (eb(d) || Ka(d)) return (a = a.get(c) || null), m(b, a, d, e, null); + th(b, d); + } + return null; + } + function n(e, g, h, k) { + for ( + var l = null, m = null, u = g, w = (g = 0), x = null; + null !== u && w < h.length; + w++ + ) { + u.index > w ? ((x = u), (u = null)) : (x = u.sibling); + var n = r(e, u, h[w], k); + if (null === n) { + null === u && (u = x); + break; + } + a && u && null === n.alternate && b(e, u); + g = f(n, g, w); + null === m ? (l = n) : (m.sibling = n); + m = n; + u = x; + } + if (w === h.length) return c(e, u), I && tg(e, w), l; + if (null === u) { + for (; w < h.length; w++) + (u = q(e, h[w], k)), + null !== u && + ((g = f(u, g, w)), null === m ? (l = u) : (m.sibling = u), (m = u)); + I && tg(e, w); + return l; + } + for (u = d(e, u); w < h.length; w++) + (x = y(u, e, w, h[w], k)), + null !== x && + (a && null !== x.alternate && u.delete(null === x.key ? w : x.key), + (g = f(x, g, w)), + null === m ? (l = x) : (m.sibling = x), + (m = x)); + a && + u.forEach(function (a) { + return b(e, a); + }); + I && tg(e, w); + return l; + } + function t(e, g, h, k) { + var l = Ka(h); + if ("function" !== typeof l) throw Error(p(150)); + h = l.call(h); + if (null == h) throw Error(p(151)); + for ( + var u = (l = null), m = g, w = (g = 0), x = null, n = h.next(); + null !== m && !n.done; + w++, n = h.next() + ) { + m.index > w ? ((x = m), (m = null)) : (x = m.sibling); + var t = r(e, m, n.value, k); + if (null === t) { + null === m && (m = x); + break; + } + a && m && null === t.alternate && b(e, m); + g = f(t, g, w); + null === u ? (l = t) : (u.sibling = t); + u = t; + m = x; + } + if (n.done) return c(e, m), I && tg(e, w), l; + if (null === m) { + for (; !n.done; w++, n = h.next()) + (n = q(e, n.value, k)), + null !== n && + ((g = f(n, g, w)), null === u ? (l = n) : (u.sibling = n), (u = n)); + I && tg(e, w); + return l; + } + for (m = d(e, m); !n.done; w++, n = h.next()) + (n = y(m, e, w, n.value, k)), + null !== n && + (a && null !== n.alternate && m.delete(null === n.key ? w : n.key), + (g = f(n, g, w)), + null === u ? (l = n) : (u.sibling = n), + (u = n)); + a && + m.forEach(function (a) { + return b(e, a); + }); + I && tg(e, w); + return l; + } + function J(a, d, f, h) { + "object" === typeof f && + null !== f && + f.type === ya && + null === f.key && + (f = f.props.children); + if ("object" === typeof f && null !== f) { + switch (f.$$typeof) { + case va: + a: { + for (var k = f.key, l = d; null !== l; ) { + if (l.key === k) { + k = f.type; + if (k === ya) { + if (7 === l.tag) { + c(a, l.sibling); + d = e(l, f.props.children); + d.return = a; + a = d; + break a; + } + } else if ( + l.elementType === k || + ("object" === typeof k && + null !== k && + k.$$typeof === Ha && + uh(k) === l.type) + ) { + c(a, l.sibling); + d = e(l, f.props); + d.ref = sh(a, l, f); + d.return = a; + a = d; + break a; + } + c(a, l); + break; + } else b(a, l); + l = l.sibling; + } + f.type === ya + ? ((d = Ah(f.props.children, a.mode, h, f.key)), + (d.return = a), + (a = d)) + : ((h = yh(f.type, f.key, f.props, null, a.mode, h)), + (h.ref = sh(a, d, f)), + (h.return = a), + (a = h)); + } + return g(a); + case wa: + a: { + for (l = f.key; null !== d; ) { + if (d.key === l) + if ( + 4 === d.tag && + d.stateNode.containerInfo === f.containerInfo && + d.stateNode.implementation === f.implementation + ) { + c(a, d.sibling); + d = e(d, f.children || []); + d.return = a; + a = d; + break a; + } else { + c(a, d); + break; + } + else b(a, d); + d = d.sibling; + } + d = zh(f, a.mode, h); + d.return = a; + a = d; + } + return g(a); + case Ha: + return (l = f._init), J(a, d, l(f._payload), h); + } + if (eb(f)) return n(a, d, f, h); + if (Ka(f)) return t(a, d, f, h); + th(a, f); + } + return ("string" === typeof f && "" !== f) || "number" === typeof f + ? ((f = "" + f), + null !== d && 6 === d.tag + ? (c(a, d.sibling), (d = e(d, f)), (d.return = a), (a = d)) + : (c(a, d), (d = xh(f, a.mode, h)), (d.return = a), (a = d)), + g(a)) + : c(a, d); + } + return J; +} +var Bh = vh(!0), + Ch = vh(!1), + Dh = {}, + Eh = Uf(Dh), + Fh = Uf(Dh), + Gh = Uf(Dh); +function Hh(a) { + if (a === Dh) throw Error(p(174)); + return a; +} +function Ih(a, b) { + G(Gh, b); + G(Fh, a); + G(Eh, Dh); + a = b.nodeType; + switch (a) { + case 9: + case 11: + b = (b = b.documentElement) ? b.namespaceURI : lb(null, ""); + break; + default: + (a = 8 === a ? b.parentNode : b), + (b = a.namespaceURI || null), + (a = a.tagName), + (b = lb(b, a)); + } + E(Eh); + G(Eh, b); +} +function Jh() { + E(Eh); + E(Fh); + E(Gh); +} +function Kh(a) { + Hh(Gh.current); + var b = Hh(Eh.current); + var c = lb(b, a.type); + b !== c && (G(Fh, a), G(Eh, c)); +} +function Lh(a) { + Fh.current === a && (E(Eh), E(Fh)); +} +var M = Uf(0); +function Mh(a) { + for (var b = a; null !== b; ) { + if (13 === b.tag) { + var c = b.memoizedState; + if ( + null !== c && + ((c = c.dehydrated), null === c || "$?" === c.data || "$!" === c.data) + ) + return b; + } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) { + if (0 !== (b.flags & 128)) return b; + } else if (null !== b.child) { + b.child.return = b; + b = b.child; + continue; + } + if (b === a) break; + for (; null === b.sibling; ) { + if (null === b.return || b.return === a) return null; + b = b.return; + } + b.sibling.return = b.return; + b = b.sibling; + } + return null; +} +var Nh = []; +function Oh() { + for (var a = 0; a < Nh.length; a++) + Nh[a]._workInProgressVersionPrimary = null; + Nh.length = 0; +} +var Ph = ua.ReactCurrentDispatcher, + Qh = ua.ReactCurrentBatchConfig, + Rh = 0, + N = null, + O = null, + P = null, + Sh = !1, + Th = !1, + Uh = 0, + Vh = 0; +function Q() { + throw Error(p(321)); +} +function Wh(a, b) { + if (null === b) return !1; + for (var c = 0; c < b.length && c < a.length; c++) + if (!He(a[c], b[c])) return !1; + return !0; +} +function Xh(a, b, c, d, e, f) { + Rh = f; + N = b; + b.memoizedState = null; + b.updateQueue = null; + b.lanes = 0; + Ph.current = null === a || null === a.memoizedState ? Yh : Zh; + a = c(d, e); + if (Th) { + f = 0; + do { + Th = !1; + Uh = 0; + if (25 <= f) throw Error(p(301)); + f += 1; + P = O = null; + b.updateQueue = null; + Ph.current = $h; + a = c(d, e); + } while (Th); + } + Ph.current = ai; + b = null !== O && null !== O.next; + Rh = 0; + P = O = N = null; + Sh = !1; + if (b) throw Error(p(300)); + return a; +} +function bi() { + var a = 0 !== Uh; + Uh = 0; + return a; +} +function ci() { + var a = { + memoizedState: null, + baseState: null, + baseQueue: null, + queue: null, + next: null, + }; + null === P ? (N.memoizedState = P = a) : (P = P.next = a); + return P; +} +function di() { + if (null === O) { + var a = N.alternate; + a = null !== a ? a.memoizedState : null; + } else a = O.next; + var b = null === P ? N.memoizedState : P.next; + if (null !== b) (P = b), (O = a); + else { + if (null === a) throw Error(p(310)); + O = a; + a = { + memoizedState: O.memoizedState, + baseState: O.baseState, + baseQueue: O.baseQueue, + queue: O.queue, + next: null, + }; + null === P ? (N.memoizedState = P = a) : (P = P.next = a); + } + return P; +} +function ei(a, b) { + return "function" === typeof b ? b(a) : b; +} +function fi(a) { + var b = di(), + c = b.queue; + if (null === c) throw Error(p(311)); + c.lastRenderedReducer = a; + var d = O, + e = d.baseQueue, + f = c.pending; + if (null !== f) { + if (null !== e) { + var g = e.next; + e.next = f.next; + f.next = g; + } + d.baseQueue = e = f; + c.pending = null; + } + if (null !== e) { + f = e.next; + d = d.baseState; + var h = (g = null), + k = null, + l = f; + do { + var m = l.lane; + if ((Rh & m) === m) + null !== k && + (k = k.next = + { + lane: 0, + action: l.action, + hasEagerState: l.hasEagerState, + eagerState: l.eagerState, + next: null, + }), + (d = l.hasEagerState ? l.eagerState : a(d, l.action)); + else { + var q = { + lane: m, + action: l.action, + hasEagerState: l.hasEagerState, + eagerState: l.eagerState, + next: null, + }; + null === k ? ((h = k = q), (g = d)) : (k = k.next = q); + N.lanes |= m; + hh |= m; + } + l = l.next; + } while (null !== l && l !== f); + null === k ? (g = d) : (k.next = h); + He(d, b.memoizedState) || (Ug = !0); + b.memoizedState = d; + b.baseState = g; + b.baseQueue = k; + c.lastRenderedState = d; + } + a = c.interleaved; + if (null !== a) { + e = a; + do (f = e.lane), (N.lanes |= f), (hh |= f), (e = e.next); + while (e !== a); + } else null === e && (c.lanes = 0); + return [b.memoizedState, c.dispatch]; +} +function gi(a) { + var b = di(), + c = b.queue; + if (null === c) throw Error(p(311)); + c.lastRenderedReducer = a; + var d = c.dispatch, + e = c.pending, + f = b.memoizedState; + if (null !== e) { + c.pending = null; + var g = (e = e.next); + do (f = a(f, g.action)), (g = g.next); + while (g !== e); + He(f, b.memoizedState) || (Ug = !0); + b.memoizedState = f; + null === b.baseQueue && (b.baseState = f); + c.lastRenderedState = f; + } + return [f, d]; +} +function hi() {} +function ii(a, b) { + var c = N, + d = di(), + e = b(), + f = !He(d.memoizedState, e); + f && ((d.memoizedState = e), (Ug = !0)); + d = d.queue; + ji(ki.bind(null, c, d, a), [a]); + if (d.getSnapshot !== b || f || (null !== P && P.memoizedState.tag & 1)) { + c.flags |= 2048; + li(9, mi.bind(null, c, d, e, b), void 0, null); + if (null === R) throw Error(p(349)); + 0 !== (Rh & 30) || ni(c, b, e); + } + return e; +} +function ni(a, b, c) { + a.flags |= 16384; + a = { getSnapshot: b, value: c }; + b = N.updateQueue; + null === b + ? ((b = { lastEffect: null, stores: null }), + (N.updateQueue = b), + (b.stores = [a])) + : ((c = b.stores), null === c ? (b.stores = [a]) : c.push(a)); +} +function mi(a, b, c, d) { + b.value = c; + b.getSnapshot = d; + oi(b) && pi(a); +} +function ki(a, b, c) { + return c(function () { + oi(b) && pi(a); + }); +} +function oi(a) { + var b = a.getSnapshot; + a = a.value; + try { + var c = b(); + return !He(a, c); + } catch (d) { + return !0; + } +} +function pi(a) { + var b = Zg(a, 1); + null !== b && mh(b, a, 1, -1); +} +function qi(a) { + var b = ci(); + "function" === typeof a && (a = a()); + b.memoizedState = b.baseState = a; + a = { + pending: null, + interleaved: null, + lanes: 0, + dispatch: null, + lastRenderedReducer: ei, + lastRenderedState: a, + }; + b.queue = a; + a = a.dispatch = ri.bind(null, N, a); + return [b.memoizedState, a]; +} +function li(a, b, c, d) { + a = { tag: a, create: b, destroy: c, deps: d, next: null }; + b = N.updateQueue; + null === b + ? ((b = { lastEffect: null, stores: null }), + (N.updateQueue = b), + (b.lastEffect = a.next = a)) + : ((c = b.lastEffect), + null === c + ? (b.lastEffect = a.next = a) + : ((d = c.next), (c.next = a), (a.next = d), (b.lastEffect = a))); + return a; +} +function si() { + return di().memoizedState; +} +function ti(a, b, c, d) { + var e = ci(); + N.flags |= a; + e.memoizedState = li(1 | b, c, void 0, void 0 === d ? null : d); +} +function ui(a, b, c, d) { + var e = di(); + d = void 0 === d ? null : d; + var f = void 0; + if (null !== O) { + var g = O.memoizedState; + f = g.destroy; + if (null !== d && Wh(d, g.deps)) { + e.memoizedState = li(b, c, f, d); + return; + } + } + N.flags |= a; + e.memoizedState = li(1 | b, c, f, d); +} +function vi(a, b) { + return ti(8390656, 8, a, b); +} +function ji(a, b) { + return ui(2048, 8, a, b); +} +function wi(a, b) { + return ui(4, 2, a, b); +} +function xi(a, b) { + return ui(4, 4, a, b); +} +function yi(a, b) { + if ("function" === typeof b) + return ( + (a = a()), + b(a), + function () { + b(null); + } + ); + if (null !== b && void 0 !== b) + return ( + (a = a()), + (b.current = a), + function () { + b.current = null; + } + ); +} +function zi(a, b, c) { + c = null !== c && void 0 !== c ? c.concat([a]) : null; + return ui(4, 4, yi.bind(null, b, a), c); +} +function Ai() {} +function Bi(a, b) { + var c = di(); + b = void 0 === b ? null : b; + var d = c.memoizedState; + if (null !== d && null !== b && Wh(b, d[1])) return d[0]; + c.memoizedState = [a, b]; + return a; +} +function Ci(a, b) { + var c = di(); + b = void 0 === b ? null : b; + var d = c.memoizedState; + if (null !== d && null !== b && Wh(b, d[1])) return d[0]; + a = a(); + c.memoizedState = [a, b]; + return a; +} +function Di(a, b, c) { + if (0 === (Rh & 21)) + return ( + a.baseState && ((a.baseState = !1), (Ug = !0)), (a.memoizedState = c) + ); + He(c, b) || ((c = yc()), (N.lanes |= c), (hh |= c), (a.baseState = !0)); + return b; +} +function Ei(a, b) { + var c = C; + C = 0 !== c && 4 > c ? c : 4; + a(!0); + var d = Qh.transition; + Qh.transition = {}; + try { + a(!1), b(); + } finally { + (C = c), (Qh.transition = d); + } +} +function Fi() { + return di().memoizedState; +} +function Gi(a, b, c) { + var d = lh(a); + c = { lane: d, action: c, hasEagerState: !1, eagerState: null, next: null }; + if (Hi(a)) Ii(b, c); + else if (((c = Yg(a, b, c, d)), null !== c)) { + var e = L(); + mh(c, a, d, e); + Ji(c, b, d); + } +} +function ri(a, b, c) { + var d = lh(a), + e = { lane: d, action: c, hasEagerState: !1, eagerState: null, next: null }; + if (Hi(a)) Ii(b, e); + else { + var f = a.alternate; + if ( + 0 === a.lanes && + (null === f || 0 === f.lanes) && + ((f = b.lastRenderedReducer), null !== f) + ) + try { + var g = b.lastRenderedState, + h = f(g, c); + e.hasEagerState = !0; + e.eagerState = h; + if (He(h, g)) { + var k = b.interleaved; + null === k + ? ((e.next = e), Xg(b)) + : ((e.next = k.next), (k.next = e)); + b.interleaved = e; + return; + } + } catch (l) { + } finally { + } + c = Yg(a, b, e, d); + null !== c && ((e = L()), mh(c, a, d, e), Ji(c, b, d)); + } +} +function Hi(a) { + var b = a.alternate; + return a === N || (null !== b && b === N); +} +function Ii(a, b) { + Th = Sh = !0; + var c = a.pending; + null === c ? (b.next = b) : ((b.next = c.next), (c.next = b)); + a.pending = b; +} +function Ji(a, b, c) { + if (0 !== (c & 4194240)) { + var d = b.lanes; + d &= a.pendingLanes; + c |= d; + b.lanes = c; + Cc(a, c); + } +} +var ai = { + readContext: Vg, + useCallback: Q, + useContext: Q, + useEffect: Q, + useImperativeHandle: Q, + useInsertionEffect: Q, + useLayoutEffect: Q, + useMemo: Q, + useReducer: Q, + useRef: Q, + useState: Q, + useDebugValue: Q, + useDeferredValue: Q, + useTransition: Q, + useMutableSource: Q, + useSyncExternalStore: Q, + useId: Q, + unstable_isNewReconciler: !1, + }, + Yh = { + readContext: Vg, + useCallback: function (a, b) { + ci().memoizedState = [a, void 0 === b ? null : b]; + return a; + }, + useContext: Vg, + useEffect: vi, + useImperativeHandle: function (a, b, c) { + c = null !== c && void 0 !== c ? c.concat([a]) : null; + return ti(4194308, 4, yi.bind(null, b, a), c); + }, + useLayoutEffect: function (a, b) { + return ti(4194308, 4, a, b); + }, + useInsertionEffect: function (a, b) { + return ti(4, 2, a, b); + }, + useMemo: function (a, b) { + var c = ci(); + b = void 0 === b ? null : b; + a = a(); + c.memoizedState = [a, b]; + return a; + }, + useReducer: function (a, b, c) { + var d = ci(); + b = void 0 !== c ? c(b) : b; + d.memoizedState = d.baseState = b; + a = { + pending: null, + interleaved: null, + lanes: 0, + dispatch: null, + lastRenderedReducer: a, + lastRenderedState: b, + }; + d.queue = a; + a = a.dispatch = Gi.bind(null, N, a); + return [d.memoizedState, a]; + }, + useRef: function (a) { + var b = ci(); + a = { current: a }; + return (b.memoizedState = a); + }, + useState: qi, + useDebugValue: Ai, + useDeferredValue: function (a) { + return (ci().memoizedState = a); + }, + useTransition: function () { + var a = qi(!1), + b = a[0]; + a = Ei.bind(null, a[1]); + ci().memoizedState = a; + return [b, a]; + }, + useMutableSource: function () {}, + useSyncExternalStore: function (a, b, c) { + var d = N, + e = ci(); + if (I) { + if (void 0 === c) throw Error(p(407)); + c = c(); + } else { + c = b(); + if (null === R) throw Error(p(349)); + 0 !== (Rh & 30) || ni(d, b, c); + } + e.memoizedState = c; + var f = { value: c, getSnapshot: b }; + e.queue = f; + vi(ki.bind(null, d, f, a), [a]); + d.flags |= 2048; + li(9, mi.bind(null, d, f, c, b), void 0, null); + return c; + }, + useId: function () { + var a = ci(), + b = R.identifierPrefix; + if (I) { + var c = sg; + var d = rg; + c = (d & ~(1 << (32 - oc(d) - 1))).toString(32) + c; + b = ":" + b + "R" + c; + c = Uh++; + 0 < c && (b += "H" + c.toString(32)); + b += ":"; + } else (c = Vh++), (b = ":" + b + "r" + c.toString(32) + ":"); + return (a.memoizedState = b); + }, + unstable_isNewReconciler: !1, + }, + Zh = { + readContext: Vg, + useCallback: Bi, + useContext: Vg, + useEffect: ji, + useImperativeHandle: zi, + useInsertionEffect: wi, + useLayoutEffect: xi, + useMemo: Ci, + useReducer: fi, + useRef: si, + useState: function () { + return fi(ei); + }, + useDebugValue: Ai, + useDeferredValue: function (a) { + var b = di(); + return Di(b, O.memoizedState, a); + }, + useTransition: function () { + var a = fi(ei)[0], + b = di().memoizedState; + return [a, b]; + }, + useMutableSource: hi, + useSyncExternalStore: ii, + useId: Fi, + unstable_isNewReconciler: !1, + }, + $h = { + readContext: Vg, + useCallback: Bi, + useContext: Vg, + useEffect: ji, + useImperativeHandle: zi, + useInsertionEffect: wi, + useLayoutEffect: xi, + useMemo: Ci, + useReducer: gi, + useRef: si, + useState: function () { + return gi(ei); + }, + useDebugValue: Ai, + useDeferredValue: function (a) { + var b = di(); + return null === O ? (b.memoizedState = a) : Di(b, O.memoizedState, a); + }, + useTransition: function () { + var a = gi(ei)[0], + b = di().memoizedState; + return [a, b]; + }, + useMutableSource: hi, + useSyncExternalStore: ii, + useId: Fi, + unstable_isNewReconciler: !1, + }; +function Ki(a, b) { + try { + var c = "", + d = b; + do (c += Pa(d)), (d = d.return); + while (d); + var e = c; + } catch (f) { + e = "\nError generating stack: " + f.message + "\n" + f.stack; + } + return { value: a, source: b, stack: e, digest: null }; +} +function Li(a, b, c) { + return { + value: a, + source: null, + stack: null != c ? c : null, + digest: null != b ? b : null, + }; +} +function Mi(a, b) { + try { + console.error(b.value); + } catch (c) { + setTimeout(function () { + throw c; + }); + } +} +var Ni = "function" === typeof WeakMap ? WeakMap : Map; +function Oi(a, b, c) { + c = ch(-1, c); + c.tag = 3; + c.payload = { element: null }; + var d = b.value; + c.callback = function () { + Pi || ((Pi = !0), (Qi = d)); + Mi(a, b); + }; + return c; +} +function Ri(a, b, c) { + c = ch(-1, c); + c.tag = 3; + var d = a.type.getDerivedStateFromError; + if ("function" === typeof d) { + var e = b.value; + c.payload = function () { + return d(e); + }; + c.callback = function () { + Mi(a, b); + }; + } + var f = a.stateNode; + null !== f && + "function" === typeof f.componentDidCatch && + (c.callback = function () { + Mi(a, b); + "function" !== typeof d && + (null === Si ? (Si = new Set([this])) : Si.add(this)); + var c = b.stack; + this.componentDidCatch(b.value, { componentStack: null !== c ? c : "" }); + }); + return c; +} +function Ti(a, b, c) { + var d = a.pingCache; + if (null === d) { + d = a.pingCache = new Ni(); + var e = new Set(); + d.set(b, e); + } else (e = d.get(b)), void 0 === e && ((e = new Set()), d.set(b, e)); + e.has(c) || (e.add(c), (a = Ui.bind(null, a, b, c)), b.then(a, a)); +} +function Vi(a) { + do { + var b; + if ((b = 13 === a.tag)) + (b = a.memoizedState), + (b = null !== b ? (null !== b.dehydrated ? !0 : !1) : !0); + if (b) return a; + a = a.return; + } while (null !== a); + return null; +} +function Wi(a, b, c, d, e) { + if (0 === (a.mode & 1)) + return ( + a === b + ? (a.flags |= 65536) + : ((a.flags |= 128), + (c.flags |= 131072), + (c.flags &= -52805), + 1 === c.tag && + (null === c.alternate + ? (c.tag = 17) + : ((b = ch(-1, 1)), (b.tag = 2), dh(c, b, 1))), + (c.lanes |= 1)), + a + ); + a.flags |= 65536; + a.lanes = e; + return a; +} +var Xi = ua.ReactCurrentOwner, + Ug = !1; +function Yi(a, b, c, d) { + b.child = null === a ? Ch(b, null, c, d) : Bh(b, a.child, c, d); +} +function Zi(a, b, c, d, e) { + c = c.render; + var f = b.ref; + Tg(b, e); + d = Xh(a, b, c, d, f, e); + c = bi(); + if (null !== a && !Ug) + return ( + (b.updateQueue = a.updateQueue), + (b.flags &= -2053), + (a.lanes &= ~e), + $i(a, b, e) + ); + I && c && vg(b); + b.flags |= 1; + Yi(a, b, d, e); + return b.child; +} +function aj(a, b, c, d, e) { + if (null === a) { + var f = c.type; + if ( + "function" === typeof f && + !bj(f) && + void 0 === f.defaultProps && + null === c.compare && + void 0 === c.defaultProps + ) + return (b.tag = 15), (b.type = f), cj(a, b, f, d, e); + a = yh(c.type, null, d, b, b.mode, e); + a.ref = b.ref; + a.return = b; + return (b.child = a); + } + f = a.child; + if (0 === (a.lanes & e)) { + var g = f.memoizedProps; + c = c.compare; + c = null !== c ? c : Ie; + if (c(g, d) && a.ref === b.ref) return $i(a, b, e); + } + b.flags |= 1; + a = wh(f, d); + a.ref = b.ref; + a.return = b; + return (b.child = a); +} +function cj(a, b, c, d, e) { + if (null !== a) { + var f = a.memoizedProps; + if (Ie(f, d) && a.ref === b.ref) + if (((Ug = !1), (b.pendingProps = d = f), 0 !== (a.lanes & e))) + 0 !== (a.flags & 131072) && (Ug = !0); + else return (b.lanes = a.lanes), $i(a, b, e); + } + return dj(a, b, c, d, e); +} +function ej(a, b, c) { + var d = b.pendingProps, + e = d.children, + f = null !== a ? a.memoizedState : null; + if ("hidden" === d.mode) + if (0 === (b.mode & 1)) + (b.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }), + G(fj, gj), + (gj |= c); + else { + if (0 === (c & 1073741824)) + return ( + (a = null !== f ? f.baseLanes | c : c), + (b.lanes = b.childLanes = 1073741824), + (b.memoizedState = { + baseLanes: a, + cachePool: null, + transitions: null, + }), + (b.updateQueue = null), + G(fj, gj), + (gj |= a), + null + ); + b.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }; + d = null !== f ? f.baseLanes : c; + G(fj, gj); + gj |= d; + } + else + null !== f ? ((d = f.baseLanes | c), (b.memoizedState = null)) : (d = c), + G(fj, gj), + (gj |= d); + Yi(a, b, e, c); + return b.child; +} +function hj(a, b) { + var c = b.ref; + if ((null === a && null !== c) || (null !== a && a.ref !== c)) + (b.flags |= 512), (b.flags |= 2097152); +} +function dj(a, b, c, d, e) { + var f = Zf(c) ? Xf : H.current; + f = Yf(b, f); + Tg(b, e); + c = Xh(a, b, c, d, f, e); + d = bi(); + if (null !== a && !Ug) + return ( + (b.updateQueue = a.updateQueue), + (b.flags &= -2053), + (a.lanes &= ~e), + $i(a, b, e) + ); + I && d && vg(b); + b.flags |= 1; + Yi(a, b, c, e); + return b.child; +} +function ij(a, b, c, d, e) { + if (Zf(c)) { + var f = !0; + cg(b); + } else f = !1; + Tg(b, e); + if (null === b.stateNode) jj(a, b), ph(b, c, d), rh(b, c, d, e), (d = !0); + else if (null === a) { + var g = b.stateNode, + h = b.memoizedProps; + g.props = h; + var k = g.context, + l = c.contextType; + "object" === typeof l && null !== l + ? (l = Vg(l)) + : ((l = Zf(c) ? Xf : H.current), (l = Yf(b, l))); + var m = c.getDerivedStateFromProps, + q = + "function" === typeof m || + "function" === typeof g.getSnapshotBeforeUpdate; + q || + ("function" !== typeof g.UNSAFE_componentWillReceiveProps && + "function" !== typeof g.componentWillReceiveProps) || + ((h !== d || k !== l) && qh(b, g, d, l)); + $g = !1; + var r = b.memoizedState; + g.state = r; + gh(b, d, g, e); + k = b.memoizedState; + h !== d || r !== k || Wf.current || $g + ? ("function" === typeof m && (kh(b, c, m, d), (k = b.memoizedState)), + (h = $g || oh(b, c, h, d, r, k, l)) + ? (q || + ("function" !== typeof g.UNSAFE_componentWillMount && + "function" !== typeof g.componentWillMount) || + ("function" === typeof g.componentWillMount && + g.componentWillMount(), + "function" === typeof g.UNSAFE_componentWillMount && + g.UNSAFE_componentWillMount()), + "function" === typeof g.componentDidMount && (b.flags |= 4194308)) + : ("function" === typeof g.componentDidMount && (b.flags |= 4194308), + (b.memoizedProps = d), + (b.memoizedState = k)), + (g.props = d), + (g.state = k), + (g.context = l), + (d = h)) + : ("function" === typeof g.componentDidMount && (b.flags |= 4194308), + (d = !1)); + } else { + g = b.stateNode; + bh(a, b); + h = b.memoizedProps; + l = b.type === b.elementType ? h : Lg(b.type, h); + g.props = l; + q = b.pendingProps; + r = g.context; + k = c.contextType; + "object" === typeof k && null !== k + ? (k = Vg(k)) + : ((k = Zf(c) ? Xf : H.current), (k = Yf(b, k))); + var y = c.getDerivedStateFromProps; + (m = + "function" === typeof y || + "function" === typeof g.getSnapshotBeforeUpdate) || + ("function" !== typeof g.UNSAFE_componentWillReceiveProps && + "function" !== typeof g.componentWillReceiveProps) || + ((h !== q || r !== k) && qh(b, g, d, k)); + $g = !1; + r = b.memoizedState; + g.state = r; + gh(b, d, g, e); + var n = b.memoizedState; + h !== q || r !== n || Wf.current || $g + ? ("function" === typeof y && (kh(b, c, y, d), (n = b.memoizedState)), + (l = $g || oh(b, c, l, d, r, n, k) || !1) + ? (m || + ("function" !== typeof g.UNSAFE_componentWillUpdate && + "function" !== typeof g.componentWillUpdate) || + ("function" === typeof g.componentWillUpdate && + g.componentWillUpdate(d, n, k), + "function" === typeof g.UNSAFE_componentWillUpdate && + g.UNSAFE_componentWillUpdate(d, n, k)), + "function" === typeof g.componentDidUpdate && (b.flags |= 4), + "function" === typeof g.getSnapshotBeforeUpdate && + (b.flags |= 1024)) + : ("function" !== typeof g.componentDidUpdate || + (h === a.memoizedProps && r === a.memoizedState) || + (b.flags |= 4), + "function" !== typeof g.getSnapshotBeforeUpdate || + (h === a.memoizedProps && r === a.memoizedState) || + (b.flags |= 1024), + (b.memoizedProps = d), + (b.memoizedState = n)), + (g.props = d), + (g.state = n), + (g.context = k), + (d = l)) + : ("function" !== typeof g.componentDidUpdate || + (h === a.memoizedProps && r === a.memoizedState) || + (b.flags |= 4), + "function" !== typeof g.getSnapshotBeforeUpdate || + (h === a.memoizedProps && r === a.memoizedState) || + (b.flags |= 1024), + (d = !1)); + } + return kj(a, b, c, d, f, e); +} +function kj(a, b, c, d, e, f) { + hj(a, b); + var g = 0 !== (b.flags & 128); + if (!d && !g) return e && dg(b, c, !1), $i(a, b, f); + d = b.stateNode; + Xi.current = b; + var h = + g && "function" !== typeof c.getDerivedStateFromError ? null : d.render(); + b.flags |= 1; + null !== a && g + ? ((b.child = Bh(b, a.child, null, f)), (b.child = Bh(b, null, h, f))) + : Yi(a, b, h, f); + b.memoizedState = d.state; + e && dg(b, c, !0); + return b.child; +} +function lj(a) { + var b = a.stateNode; + b.pendingContext + ? ag(a, b.pendingContext, b.pendingContext !== b.context) + : b.context && ag(a, b.context, !1); + Ih(a, b.containerInfo); +} +function mj(a, b, c, d, e) { + Ig(); + Jg(e); + b.flags |= 256; + Yi(a, b, c, d); + return b.child; +} +var nj = { dehydrated: null, treeContext: null, retryLane: 0 }; +function oj(a) { + return { baseLanes: a, cachePool: null, transitions: null }; +} +function pj(a, b, c) { + var d = b.pendingProps, + e = M.current, + f = !1, + g = 0 !== (b.flags & 128), + h; + (h = g) || (h = null !== a && null === a.memoizedState ? !1 : 0 !== (e & 2)); + if (h) (f = !0), (b.flags &= -129); + else if (null === a || null !== a.memoizedState) e |= 1; + G(M, e & 1); + if (null === a) { + Eg(b); + a = b.memoizedState; + if (null !== a && ((a = a.dehydrated), null !== a)) + return ( + 0 === (b.mode & 1) + ? (b.lanes = 1) + : "$!" === a.data + ? (b.lanes = 8) + : (b.lanes = 1073741824), + null + ); + g = d.children; + a = d.fallback; + return f + ? ((d = b.mode), + (f = b.child), + (g = { mode: "hidden", children: g }), + 0 === (d & 1) && null !== f + ? ((f.childLanes = 0), (f.pendingProps = g)) + : (f = qj(g, d, 0, null)), + (a = Ah(a, d, c, null)), + (f.return = b), + (a.return = b), + (f.sibling = a), + (b.child = f), + (b.child.memoizedState = oj(c)), + (b.memoizedState = nj), + a) + : rj(b, g); + } + e = a.memoizedState; + if (null !== e && ((h = e.dehydrated), null !== h)) + return sj(a, b, g, d, h, e, c); + if (f) { + f = d.fallback; + g = b.mode; + e = a.child; + h = e.sibling; + var k = { mode: "hidden", children: d.children }; + 0 === (g & 1) && b.child !== e + ? ((d = b.child), + (d.childLanes = 0), + (d.pendingProps = k), + (b.deletions = null)) + : ((d = wh(e, k)), (d.subtreeFlags = e.subtreeFlags & 14680064)); + null !== h ? (f = wh(h, f)) : ((f = Ah(f, g, c, null)), (f.flags |= 2)); + f.return = b; + d.return = b; + d.sibling = f; + b.child = d; + d = f; + f = b.child; + g = a.child.memoizedState; + g = + null === g + ? oj(c) + : { + baseLanes: g.baseLanes | c, + cachePool: null, + transitions: g.transitions, + }; + f.memoizedState = g; + f.childLanes = a.childLanes & ~c; + b.memoizedState = nj; + return d; + } + f = a.child; + a = f.sibling; + d = wh(f, { mode: "visible", children: d.children }); + 0 === (b.mode & 1) && (d.lanes = c); + d.return = b; + d.sibling = null; + null !== a && + ((c = b.deletions), + null === c ? ((b.deletions = [a]), (b.flags |= 16)) : c.push(a)); + b.child = d; + b.memoizedState = null; + return d; +} +function rj(a, b) { + b = qj({ mode: "visible", children: b }, a.mode, 0, null); + b.return = a; + return (a.child = b); +} +function tj(a, b, c, d) { + null !== d && Jg(d); + Bh(b, a.child, null, c); + a = rj(b, b.pendingProps.children); + a.flags |= 2; + b.memoizedState = null; + return a; +} +function sj(a, b, c, d, e, f, g) { + if (c) { + if (b.flags & 256) + return (b.flags &= -257), (d = Li(Error(p(422)))), tj(a, b, g, d); + if (null !== b.memoizedState) + return (b.child = a.child), (b.flags |= 128), null; + f = d.fallback; + e = b.mode; + d = qj({ mode: "visible", children: d.children }, e, 0, null); + f = Ah(f, e, g, null); + f.flags |= 2; + d.return = b; + f.return = b; + d.sibling = f; + b.child = d; + 0 !== (b.mode & 1) && Bh(b, a.child, null, g); + b.child.memoizedState = oj(g); + b.memoizedState = nj; + return f; + } + if (0 === (b.mode & 1)) return tj(a, b, g, null); + if ("$!" === e.data) { + d = e.nextSibling && e.nextSibling.dataset; + if (d) var h = d.dgst; + d = h; + f = Error(p(419)); + d = Li(f, d, void 0); + return tj(a, b, g, d); + } + h = 0 !== (g & a.childLanes); + if (Ug || h) { + d = R; + if (null !== d) { + switch (g & -g) { + case 4: + e = 2; + break; + case 16: + e = 8; + break; + case 64: + case 128: + case 256: + case 512: + case 1024: + case 2048: + case 4096: + case 8192: + case 16384: + case 32768: + case 65536: + case 131072: + case 262144: + case 524288: + case 1048576: + case 2097152: + case 4194304: + case 8388608: + case 16777216: + case 33554432: + case 67108864: + e = 32; + break; + case 536870912: + e = 268435456; + break; + default: + e = 0; + } + e = 0 !== (e & (d.suspendedLanes | g)) ? 0 : e; + 0 !== e && + e !== f.retryLane && + ((f.retryLane = e), Zg(a, e), mh(d, a, e, -1)); + } + uj(); + d = Li(Error(p(421))); + return tj(a, b, g, d); + } + if ("$?" === e.data) + return ( + (b.flags |= 128), + (b.child = a.child), + (b = vj.bind(null, a)), + (e._reactRetry = b), + null + ); + a = f.treeContext; + yg = Lf(e.nextSibling); + xg = b; + I = !0; + zg = null; + null !== a && + ((og[pg++] = rg), + (og[pg++] = sg), + (og[pg++] = qg), + (rg = a.id), + (sg = a.overflow), + (qg = b)); + b = rj(b, d.children); + b.flags |= 4096; + return b; +} +function wj(a, b, c) { + a.lanes |= b; + var d = a.alternate; + null !== d && (d.lanes |= b); + Sg(a.return, b, c); +} +function xj(a, b, c, d, e) { + var f = a.memoizedState; + null === f + ? (a.memoizedState = { + isBackwards: b, + rendering: null, + renderingStartTime: 0, + last: d, + tail: c, + tailMode: e, + }) + : ((f.isBackwards = b), + (f.rendering = null), + (f.renderingStartTime = 0), + (f.last = d), + (f.tail = c), + (f.tailMode = e)); +} +function yj(a, b, c) { + var d = b.pendingProps, + e = d.revealOrder, + f = d.tail; + Yi(a, b, d.children, c); + d = M.current; + if (0 !== (d & 2)) (d = (d & 1) | 2), (b.flags |= 128); + else { + if (null !== a && 0 !== (a.flags & 128)) + a: for (a = b.child; null !== a; ) { + if (13 === a.tag) null !== a.memoizedState && wj(a, c, b); + else if (19 === a.tag) wj(a, c, b); + else if (null !== a.child) { + a.child.return = a; + a = a.child; + continue; + } + if (a === b) break a; + for (; null === a.sibling; ) { + if (null === a.return || a.return === b) break a; + a = a.return; + } + a.sibling.return = a.return; + a = a.sibling; + } + d &= 1; + } + G(M, d); + if (0 === (b.mode & 1)) b.memoizedState = null; + else + switch (e) { + case "forwards": + c = b.child; + for (e = null; null !== c; ) + (a = c.alternate), + null !== a && null === Mh(a) && (e = c), + (c = c.sibling); + c = e; + null === c + ? ((e = b.child), (b.child = null)) + : ((e = c.sibling), (c.sibling = null)); + xj(b, !1, e, c, f); + break; + case "backwards": + c = null; + e = b.child; + for (b.child = null; null !== e; ) { + a = e.alternate; + if (null !== a && null === Mh(a)) { + b.child = e; + break; + } + a = e.sibling; + e.sibling = c; + c = e; + e = a; + } + xj(b, !0, c, null, f); + break; + case "together": + xj(b, !1, null, null, void 0); + break; + default: + b.memoizedState = null; + } + return b.child; +} +function jj(a, b) { + 0 === (b.mode & 1) && + null !== a && + ((a.alternate = null), (b.alternate = null), (b.flags |= 2)); +} +function $i(a, b, c) { + null !== a && (b.dependencies = a.dependencies); + hh |= b.lanes; + if (0 === (c & b.childLanes)) return null; + if (null !== a && b.child !== a.child) throw Error(p(153)); + if (null !== b.child) { + a = b.child; + c = wh(a, a.pendingProps); + b.child = c; + for (c.return = b; null !== a.sibling; ) + (a = a.sibling), (c = c.sibling = wh(a, a.pendingProps)), (c.return = b); + c.sibling = null; + } + return b.child; +} +function zj(a, b, c) { + switch (b.tag) { + case 3: + lj(b); + Ig(); + break; + case 5: + Kh(b); + break; + case 1: + Zf(b.type) && cg(b); + break; + case 4: + Ih(b, b.stateNode.containerInfo); + break; + case 10: + var d = b.type._context, + e = b.memoizedProps.value; + G(Mg, d._currentValue); + d._currentValue = e; + break; + case 13: + d = b.memoizedState; + if (null !== d) { + if (null !== d.dehydrated) + return G(M, M.current & 1), (b.flags |= 128), null; + if (0 !== (c & b.child.childLanes)) return pj(a, b, c); + G(M, M.current & 1); + a = $i(a, b, c); + return null !== a ? a.sibling : null; + } + G(M, M.current & 1); + break; + case 19: + d = 0 !== (c & b.childLanes); + if (0 !== (a.flags & 128)) { + if (d) return yj(a, b, c); + b.flags |= 128; + } + e = b.memoizedState; + null !== e && + ((e.rendering = null), (e.tail = null), (e.lastEffect = null)); + G(M, M.current); + if (d) break; + else return null; + case 22: + case 23: + return (b.lanes = 0), ej(a, b, c); + } + return $i(a, b, c); +} +var Aj, Bj, Cj, Dj; +Aj = function (a, b) { + for (var c = b.child; null !== c; ) { + if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode); + else if (4 !== c.tag && null !== c.child) { + c.child.return = c; + c = c.child; + continue; + } + if (c === b) break; + for (; null === c.sibling; ) { + if (null === c.return || c.return === b) return; + c = c.return; + } + c.sibling.return = c.return; + c = c.sibling; + } +}; +Bj = function () {}; +Cj = function (a, b, c, d) { + var e = a.memoizedProps; + if (e !== d) { + a = b.stateNode; + Hh(Eh.current); + var f = null; + switch (c) { + case "input": + e = Ya(a, e); + d = Ya(a, d); + f = []; + break; + case "select": + e = A({}, e, { value: void 0 }); + d = A({}, d, { value: void 0 }); + f = []; + break; + case "textarea": + e = gb(a, e); + d = gb(a, d); + f = []; + break; + default: + "function" !== typeof e.onClick && + "function" === typeof d.onClick && + (a.onclick = Bf); + } + ub(c, d); + var g; + c = null; + for (l in e) + if (!d.hasOwnProperty(l) && e.hasOwnProperty(l) && null != e[l]) + if ("style" === l) { + var h = e[l]; + for (g in h) h.hasOwnProperty(g) && (c || (c = {}), (c[g] = "")); + } else + "dangerouslySetInnerHTML" !== l && + "children" !== l && + "suppressContentEditableWarning" !== l && + "suppressHydrationWarning" !== l && + "autoFocus" !== l && + (ea.hasOwnProperty(l) + ? f || (f = []) + : (f = f || []).push(l, null)); + for (l in d) { + var k = d[l]; + h = null != e ? e[l] : void 0; + if (d.hasOwnProperty(l) && k !== h && (null != k || null != h)) + if ("style" === l) + if (h) { + for (g in h) + !h.hasOwnProperty(g) || + (k && k.hasOwnProperty(g)) || + (c || (c = {}), (c[g] = "")); + for (g in k) + k.hasOwnProperty(g) && + h[g] !== k[g] && + (c || (c = {}), (c[g] = k[g])); + } else c || (f || (f = []), f.push(l, c)), (c = k); + else + "dangerouslySetInnerHTML" === l + ? ((k = k ? k.__html : void 0), + (h = h ? h.__html : void 0), + null != k && h !== k && (f = f || []).push(l, k)) + : "children" === l + ? ("string" !== typeof k && "number" !== typeof k) || + (f = f || []).push(l, "" + k) + : "suppressContentEditableWarning" !== l && + "suppressHydrationWarning" !== l && + (ea.hasOwnProperty(l) + ? (null != k && "onScroll" === l && D("scroll", a), + f || h === k || (f = [])) + : (f = f || []).push(l, k)); + } + c && (f = f || []).push("style", c); + var l = f; + if ((b.updateQueue = l)) b.flags |= 4; + } +}; +Dj = function (a, b, c, d) { + c !== d && (b.flags |= 4); +}; +function Ej(a, b) { + if (!I) + switch (a.tailMode) { + case "hidden": + b = a.tail; + for (var c = null; null !== b; ) + null !== b.alternate && (c = b), (b = b.sibling); + null === c ? (a.tail = null) : (c.sibling = null); + break; + case "collapsed": + c = a.tail; + for (var d = null; null !== c; ) + null !== c.alternate && (d = c), (c = c.sibling); + null === d + ? b || null === a.tail + ? (a.tail = null) + : (a.tail.sibling = null) + : (d.sibling = null); + } +} +function S(a) { + var b = null !== a.alternate && a.alternate.child === a.child, + c = 0, + d = 0; + if (b) + for (var e = a.child; null !== e; ) + (c |= e.lanes | e.childLanes), + (d |= e.subtreeFlags & 14680064), + (d |= e.flags & 14680064), + (e.return = a), + (e = e.sibling); + else + for (e = a.child; null !== e; ) + (c |= e.lanes | e.childLanes), + (d |= e.subtreeFlags), + (d |= e.flags), + (e.return = a), + (e = e.sibling); + a.subtreeFlags |= d; + a.childLanes = c; + return b; +} +function Fj(a, b, c) { + var d = b.pendingProps; + wg(b); + switch (b.tag) { + case 2: + case 16: + case 15: + case 0: + case 11: + case 7: + case 8: + case 12: + case 9: + case 14: + return S(b), null; + case 1: + return Zf(b.type) && $f(), S(b), null; + case 3: + d = b.stateNode; + Jh(); + E(Wf); + E(H); + Oh(); + d.pendingContext && + ((d.context = d.pendingContext), (d.pendingContext = null)); + if (null === a || null === a.child) + Gg(b) + ? (b.flags |= 4) + : null === a || + (a.memoizedState.isDehydrated && 0 === (b.flags & 256)) || + ((b.flags |= 1024), null !== zg && (Gj(zg), (zg = null))); + Bj(a, b); + S(b); + return null; + case 5: + Lh(b); + var e = Hh(Gh.current); + c = b.type; + if (null !== a && null != b.stateNode) + Cj(a, b, c, d, e), + a.ref !== b.ref && ((b.flags |= 512), (b.flags |= 2097152)); + else { + if (!d) { + if (null === b.stateNode) throw Error(p(166)); + S(b); + return null; + } + a = Hh(Eh.current); + if (Gg(b)) { + d = b.stateNode; + c = b.type; + var f = b.memoizedProps; + d[Of] = b; + d[Pf] = f; + a = 0 !== (b.mode & 1); + switch (c) { + case "dialog": + D("cancel", d); + D("close", d); + break; + case "iframe": + case "object": + case "embed": + D("load", d); + break; + case "video": + case "audio": + for (e = 0; e < lf.length; e++) D(lf[e], d); + break; + case "source": + D("error", d); + break; + case "img": + case "image": + case "link": + D("error", d); + D("load", d); + break; + case "details": + D("toggle", d); + break; + case "input": + Za(d, f); + D("invalid", d); + break; + case "select": + d._wrapperState = { wasMultiple: !!f.multiple }; + D("invalid", d); + break; + case "textarea": + hb(d, f), D("invalid", d); + } + ub(c, f); + e = null; + for (var g in f) + if (f.hasOwnProperty(g)) { + var h = f[g]; + "children" === g + ? "string" === typeof h + ? d.textContent !== h && + (!0 !== f.suppressHydrationWarning && + Af(d.textContent, h, a), + (e = ["children", h])) + : "number" === typeof h && + d.textContent !== "" + h && + (!0 !== f.suppressHydrationWarning && + Af(d.textContent, h, a), + (e = ["children", "" + h])) + : ea.hasOwnProperty(g) && + null != h && + "onScroll" === g && + D("scroll", d); + } + switch (c) { + case "input": + Va(d); + db(d, f, !0); + break; + case "textarea": + Va(d); + jb(d); + break; + case "select": + case "option": + break; + default: + "function" === typeof f.onClick && (d.onclick = Bf); + } + d = e; + b.updateQueue = d; + null !== d && (b.flags |= 4); + } else { + g = 9 === e.nodeType ? e : e.ownerDocument; + "http://www.w3.org/1999/xhtml" === a && (a = kb(c)); + "http://www.w3.org/1999/xhtml" === a + ? "script" === c + ? ((a = g.createElement("div")), + (a.innerHTML = "