[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