ref: 245a6f97e6b62ebf8a0018d38c5332fae68462b8
parent: 81d5b30accd3094e8feb44126e4dccf2f6e6c9e3
author: Tor Andersson <tor.andersson@artifex.com>
date: Mon Nov 5 10:48:22 EST 2018
Fix 700090, 700094, 700095: Iterate through lists in AST analysis passes.
--- a/jscompile.c
+++ b/jscompile.c
@@ -1221,6 +1221,14 @@
static void analyze(JF, js_Ast *node)
{+ if (node->type == AST_LIST) {+ while (node) {+ analyze(J, F, node->a);
+ node = node->b;
+ }
+ return;
+ }
+
if (isfun(node->type)) {F->lightweight = 0;
return; /* don't scan inner functions */
@@ -1277,6 +1285,14 @@
static void cvardecs(JF, js_Ast *node)
{+ if (node->type == AST_LIST) {+ while (node) {+ cvardecs(J, F, node->a);
+ node = node->b;
+ }
+ return;
+ }
+
if (isfun(node->type))
return; /* stop at inner functions */
--- a/jsparse.c
+++ b/jsparse.c
@@ -942,6 +942,14 @@
double x, y;
int a, b;
+ if (node->type == AST_LIST) {+ while (node) {+ jsP_foldconst(node->a);
+ node = node->b;
+ }
+ return 0;
+ }
+
if (node->type == EXP_NUMBER)
return 1;
--
⑨