[Laszlo-dev] weird warning/scoping issue
P T Withington
ptw at openlaszlo.org
Fri Jun 16 12:12:34 EDT 2006
Oh bummer. So its a player bug. That is going to be harder to track
down, and to work around...
On 2006-06-16, at 09:31 EDT, Sarah Allen wrote:
>
> Reported as bug:
> http://www.openlaszlo.org/jira/browse/LPP-2197
>
> I was using the swf7 default and saw the bug in Flash Player 7 not
> in Flash Player 8
> No change in behavior for swf6. I didn't test swf8.
>
> Sarah
>
> On Thu, Jun 15, 2006 at 8:21 PM, P T Withington wrote:
>
>> Closures are supposed to work. I believe they work in AS as of
>> swf6. But our compiler plays several tricks a) to implement
>> implicit this, b) to work around a Flash but in function
>> contexts, and c) to implement our 'implicit this' rules. It is
>> entirely possible you have unearthed a bug here. Please report.
>>
>> Could you clarify what target you are compiling for? Always swf7
>> but running on the 7 vs. 8 player? Or are you compiling for
>> different targets?
>>
>> As to the comment that you cannot close over `this`, that is a
>> canard. `this` is an implicitly defined local, defined
>> automatically in every function (just as `arguments` is). So it
>> is not that you cannot close over it, it's just that every
>> function will automatically shadow its parent's `this` and
>> `arguments`. If an inner function needs to refer to either of
>> those bindings in its parent, the parent needs to create an alias
>> that will not be shadowed.
>>
>> On 2006-06-15, at 19:57 EDT, Sarah Allen wrote:
>>
>>>
>>> So, that differed from Flash Player 7 to Flash Player 8?
>>> Is there any way we could smooth out that difference in the
>>> compiler?
>>>
>>> On Thu, Jun 15, 2006 at 4:45 PM, Adam Wolff wrote:
>>>
>>>> it's the behavior of closures. to make this compatible, you
>>>> could add
>>>> a
>>>> property to the function, and then retrive it using
>>>> arguments.callee
>>>>
>>>> this._nc.onStatus = function(info) {
>>>> _root.Debug.write('onStatus ', info.code);
>>>> _root.Debug.write('this ',
>>>> arguments.callee.originalthis
>>>> );
>>>> }
>>>>
>>>> this._nc.onStatus.originalthis = this;
>>>>
>>>>
>>>> A
>>>>
>>>> On Jun 15, Sarah Allen wrote:
>>>>
>>>>>
>>>>> You are so right. It's a Flash Player 7 vs. Flash Player 8 issue,
>>>>> consistent
>>>>> across Mac & Windows.
>>>>> I'm still puzzled though. The NetConnection object was
>>>>> introduced in
>>>>> Flash
>>>>> Player 6.
>>>>>
>>>>>
>>>>> On Thu, Jun 15, 2006 at 3:28 PM, Adam Wolff wrote:
>>>>>
>>>>>> same flash player version?
>>>>>>
>>>>>> On Jun 15, Sarah Allen wrote:
>>>>>>
>>>>>>>
>>>>>>> I have some code that I just started testing on other machines
>>>>>>> today, and
>>>>>>> unexpectedly, I started seeing different (broken) behavior on a
>>>>>>> Mac. I've
>>>>>>> isolated it down to the following test case:
>>>>>>>
>>>>>>> <canvas>
>>>>>>> <node>
>>>>>>> <!--- a reference to the Flash NetConnection object
>>>>>>> @keywords private -->
>>>>>>> <attribute name="_nc" value="null" />
>>>>>>>
>>>>>>> <method name="init">
>>>>>>> super.init();
>>>>>>> this._nc = new NetConnection();
>>>>>>>
>>>>>>> var ok = this._nc.connect('rtmp://localhost/test');
>>>>>>> var t = this;
>>>>>>> this._nc.onStatus = function(info) {
>>>>>>> _root.Debug.write('onStatus ', info.code);
>>>>>>> _root.Debug.write('this (t) ', t); // this is
>>>>>>> line
>>>>>>> 17
>>>>>>> }
>>>>>>> </method>
>>>>>>> </node>
>>>>>>> </canvas>
>>>>>>>
>>>>>>> which generates the following:
>>>>>>> WARNING: test.lzx:17: reference to undefined variable 't'
>>>>>>> this (t) undefined
>>>>>>>
>>>>>>> Confused again,
>>>>>>> Sarah
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Laszlo-dev mailing list
>>>>>>> Laszlo-dev at openlaszlo.org
>>>>>>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>>>>>>>
>>>>>
>>>>>
>>>
>>> _______________________________________________
>>> Laszlo-dev mailing list
>>> Laszlo-dev at openlaszlo.org
>>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>>
>
More information about the Laszlo-dev
mailing list