Author: Stephan <step...@stzal.com> Branch: Changeset: r307:49538e407502 Date: 2012-12-11 12:19 +0100 http://bitbucket.org/pypy/lang-js/changeset/49538e407502/
Log: do not allow this in for-in diff --git a/js/execution.py b/js/execution.py --- a/js/execution.py +++ b/js/execution.py @@ -29,8 +29,15 @@ class JsException(Exception): + message = u'Exception' + + def __init__(self, message=None): + if message is not None: + assert isinstance(message, unicode) + self.message = message + def _msg(self): - return u'Exception' + return self.message def msg(self): from js.jsobj import _w diff --git a/js/operations.py b/js/operations.py --- a/js/operations.py +++ b/js/operations.py @@ -4,7 +4,7 @@ Implements the javascript operations nodes for the interpretation tree """ -from js.execution import JsTypeError +from js.execution import JsTypeError, JsException from pypy.rlib.unroll import unrolling_iterable from pypy.rlib.objectmodel import enforceargs @@ -989,6 +989,8 @@ bytecode.emit('NEXT_ITERATOR') # store iterrator value into approperiate place + if isinstance(left_expr, This): + raise JsException(u'Invalid left-hand side in for-in') if isinstance(left_expr, Identifier): name = left_expr.name index = left_expr.index _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit