Change bargull-20110120-qPw by bargull@Bargull02 on 2011-01-20 00:04:21
in /home/anba/src/svn/openlaszlo/trunk
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Implement support for accessor methods in SWF10
New Features: LPP-9692 (Accept get/set functions in Parser for
ActionScript3 targets)
Technical Reviewer: ptw
QA Reviewer: (pending)
Overview:
With this change accessor methods (getter/setter) are allowed for script
classes. They will only be passed down for swf9/10 and report an error
otherwise. The accessor methods won't be translated to our internal
"$lzsc$set_property" methods.
Details:
Parser.jjt:
- add "get" and "set" to the tokens
- "get"/"set" may appear as variable names, therefore added to
IdentifierOrAS3Keyword() production
- altered MethodDeclaration() to accept accessor methods
-- getters don't allow any arguments, therefore FormalGetParameterList()
only accepts "()"
-- setters only allow one argument, therefore FormalSetParameterList()
only accept one argument, this argument must not have a default value or
rest arguments
-- getters may return any type except for "void"
-- setters may only return "void"
ASTMethodDeclaration:
- copy of the generated file amended with a new field for the
method-type (default, getter, setter)
JavascriptGenerator:
- throw compile-time error for accessor methods
- remove/comment out dead code
CodeGenerator:
- throw compile-time error for accessor methods
SWF9Generator:
- intercept JavascriptGenerator method
- remove/comment out dead code
- use class reference for static class members
ParseTreePrinter:
- add "get" resp "set" to function name, throw a compiler warning if the
function is unnamed
Tests:
see testcases
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/CodeGenerator.java
M WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java
M WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
A
WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/ASTMethodDeclaration.java
A test/compiler_errors/js2-getters-setters.lzx
A test/smoke/js2-getters-setters.lzl
M test/smoke/smokecheck.lzx
Changeset:
http://svn.openlaszlo.org/openlaszlo/patches/bargull-20110120-qPw.tar