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

Reply via email to