Change bargull-20110408-0bu by bargull@Bargull02 on 2011-04-08 00:50:04
in /home/anba/src/svn/openlaszlo/trunk
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Allow reserved words in object literals and call/member
expressions
New Features: LPP-9868 (ECMAScript5: Allow ReservedWord in
ObjectLiteral, MemberExpression, CallExpression)
Technical Reviewer: ptw
QA Reviewer: (pending)
Overview:
ECMAScript5 allows reserved words in object literal and call/member
expressions, this is useful to avoid annoying quoting (e.g. `foo.class =
bar` instead of `foo["class"] = bar`).
Details:
Parser.jjt:
- ordered token entries in IdentifierOrAS3Keyword()
- added ReservedWord() production which contains all reserved words
minus "static" and "final"
- removed IdentifierOrKeyword() and replaced with IdentifierName()
production
- IdentifierName() accepts any identifier including reserved words
- changed PrimarySuffix() and PropertyNameValue() to use
IdentifierName() per ES5
ScriptCompiler.java:
- ordered keyword list
- added helper method to identify keywords
- (note: the keyword lists don't match with the parser, tracked in LPP-9866)
JavascriptGenerator.java:
- the updates for this class are necessary to make the generated code
ES3 compliant
#visitObjectLiteral()
- quote keywords in ASTObjectLiteral
#visitPropertyIdentifierReference()
- rewrite ASTPropertyIdentifierReference to ASTPropertyValueReference if
identifier is a keyword
#translateReference()
- rewrite ASTPropertyIdentifierReference to ASTPropertyValueReference if
identifier is a keyword
SWF9Generator.java:
- override isKeyword() to account for namespaces in AS3
Tests:
smokecheck (swf10,dhtml) x [IE, Firefox, Safari, Opera]
Files:
M WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
M WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptCompiler.java
M WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
Changeset:
http://svn.openlaszlo.org/openlaszlo/patches/bargull-20110408-0bu.tar