Thanks for the test cases. Am looking into it.
Looks like labelled statements are just plain broken!
On 2009-10-31, at 18:11, André Bargull wrote:
> Not approved, these methods didn't compile:
>
> <method name="returnVoid" returns="void">
> for (var s in {}) {
> if (1) return;
> }
> </method>
>
> <method name="returnFunction" returns="Function">
> for (var s in {}) {
> if (1) return (function () {});
> }
> return null;
> </method>
>
> And labels don't work, but I think that's a different issue:
>
> <!-- only works in non-debug mode -->
> <method name="labeledFor" >
> foo: for (var s in {}) {
> if (1) return 1; else break foo;
> }
> </method>
>
> <!-- only works in non-debug mode -->
> <method name="forInLabeledBlock" >
> foo: {
> for (var s in {}) if (1) return 1; else break foo;
> }
> </method>
>
> <!-- doesn't work at all -->
> <method name="forInLabeledBlock2" >
> foo: {
> if (0) {}
> for (var s in {}) if (1) return 1; else break foo;
> if (0) {}
> }
> </method>
>
> P T Withington wrote:
>> Change 20091031-ptw-3 by [email protected] on 2009-10-31 12:20:07 EDT
>> in /Users/ptw/OpenLaszlo/trunk
>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: Work around Adobe bug ASC-3852
>>
>> Bugs Fixed: LPP-8534 SWF10: return from for-in inside try/finally
>> causes verifier error
>>
>> Technical Reviewer: [email protected] (pending)
>> QA Reviewer: [email protected] (pending)
>>
>> Overview:
>>
>> Transform a return out of a for-in that is inside a try block into
>> recording the return value and a flag, breaking from the loop, and
>> a conditional return of that value when you leave the loop (as
>> described in the bug comments).
>>
>> Also, some more modularization cleanups to move some of the
>> swf8-specific code generation out of the generic/common paths.
>>
>> Details:
>>
>> JavascriptGenerator, CodeGenerator, CommonGenerator,
>> SWF9Generator, JavascriptCompressor, Translator: Use a factory
>> for making the translation context so subclasses can use custom
>> contexts.
>>
>> JavascriptGenerator: Add visitor that was missed in the
>> remodularization.
>>
>> SWF9Generator: Override visitForInStatement,
>> visitForVarInStatement, visitTryStatement, visitReturnStatement to
>> detect nested try/for-in contexts and rewrite the for-in and
>> return.
>>
>> TranslationContext, CodeGenerator: isEnumeration, HashMap, set/
>> getTarget are all
>> only used in CodeGenerator. clone is unused.
>>
>> Tests:
>> Smokecheck on all platforms.
>>
>> Files:
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/
>> JavascriptGenerator.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/CommonGenerator.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/
>> TranslationContext.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/
>> JavascriptCompressor.java
>> M WEB-INF/lps/server/src/org/openlaszlo/sc/Translator.java
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20091031-ptw-3.tar
>>
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews