Fabulous! Approved. Please file an improvement to remove unnecessary #passthrough blocks once this is checked in.
Supposedly all 'modern' browser JS engines support getter/setter implementations. I wonder if it is feasible to implement the JS back end? Or are the browsers too different? Replacing setAttribute is a much larger project, but if we had native getter/setter in all our target runtimes, it would make that project more feasible. On 2011-01-19, at 20:00, André Bargull wrote: > 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 >
