[Pkg-mozext-commits] [adblock-plus] 49/464: More jshydra fixes: for each and regex are now more discoverable.

David Prévot taffit at moszumanska.debian.org
Tue Jul 22 20:44:01 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository adblock-plus.

commit c316dd8a617751a1f611807ef49b9235bc0f772d
Author: Joshua Cranmer <Pidgeot18 at gmail.com>
Date:   Wed Aug 19 20:35:52 2009 -0400

    More jshydra fixes: for each and regex are now more discoverable.
---
 jshydra.cpp      | 34 +++++++++++++++++++++-------------
 utils/dumpast.js |  2 +-
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/jshydra.cpp b/jshydra.cpp
index 5cec7a2..e0973de 100644
--- a/jshydra.cpp
+++ b/jshydra.cpp
@@ -84,14 +84,17 @@ JSObject *makeNode(JSParseNode *node) {
 		setObjectProperty(object, "kids", array);
 		break;
 	}
-	case BINARY: {
-		jshydra_defineProperty(cx, object, "value", node->pn_val);
-		JSObject *array = JS_NewArrayObject(cx, 0, NULL);
-		setArrayElement(array, 0, makeNode(node->pn_left));
-		setArrayElement(array, 1, makeNode(node->pn_right));
-		setObjectProperty(object, "kids", array);
-		break;
-	}
+  case BINARY: {
+    jshydra_defineProperty(cx, object, "value", node->pn_val);
+    // This is how for and for each are distinguished...
+    if (node->pn_type == TOK_FOR)
+      setIntProperty(object, "iflags", node->pn_iflags);
+    JSObject *array = JS_NewArrayObject(cx, 0, NULL);
+    setArrayElement(array, 0, makeNode(node->pn_left));
+    setArrayElement(array, 1, makeNode(node->pn_right));
+    setObjectProperty(object, "kids", array);
+    break;
+  }
 	case UNARY: {
 		JSObject *array = JS_NewArrayObject(cx, 0, NULL);
 		setArrayElement(array, 0, makeNode(node->pn_kid));
@@ -121,11 +124,16 @@ JSObject *makeNode(JSParseNode *node) {
 		break;
 	}
 	//case APAIR:
-	case OBJLITERAL: {
-    setObjectProperty(object, "value", node->pn_objbox->object);
-		JSObject *array = JS_NewArrayObject(cx, 0, NULL);
-		setArrayElement(array, 0, makeNode(node->pn_expr));
-		setObjectProperty(object, "kids", array);
+  case OBJLITERAL: {
+    // The object in the parse tree is not itself sufficient to really act as a
+    // parse node, so we clone the object to get the right prototype stuff.
+    JSObject *regex = js_CloneRegExpObject(cx, node->pn_objbox->object,
+      globalObj);
+    setObjectProperty(object, "value", regex);
+    JSObject *array = JS_NewArrayObject(cx, 0, NULL);
+    setArrayElement(array, 0, makeNode(node->pn_expr));
+    setObjectProperty(object, "kids", array);
+    break;
   }
 	case DOUBLELITERAL: {
 		jsval dval;
diff --git a/utils/dumpast.js b/utils/dumpast.js
index 8548735..974ce2c 100644
--- a/utils/dumpast.js
+++ b/utils/dumpast.js
@@ -11,7 +11,7 @@ function dump_ast(ast, prefix) {
 		if (key == 'column' || key == 'line' || key == 'kids')
 			continue;
 		let val = (key == 'op' ? decode_op(ast[key]) :
-				key == 'type' ? decode_type(ast[key]) : ast[key]);
+        key == 'type' ? decode_type(ast[key]) : ast[key]);
 		str += key + ": " + val + "; ";
 	}
 	str += ast.line + ":" + ast.column;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git



More information about the Pkg-mozext-commits mailing list