[Laszlo-dev] For Review: Change 20080208-ptw-T Summary: Unify argument initialization
André Bargull
a.bargull at intensis.de
Thu Feb 14 13:18:13 PST 2008
Just a tiny change in LzState#__LZapplyArgs(..):
you may want to change it to "var val = .." in the rename-loop, surely
it isn't needed because of the ecma scoping-rules, but most times we do
it that way.
On 2/14/2008 9:55 PM, P T Withington wrote:
> Thanks for the thorough review. I've updated the change with
> responses to your comments, if you want to refetch it and check.
>
> On 2008-02-14, at 14:09 EST, André Bargull wrote:
>
>> Current status, haven't applied your changes yet, will do it now.
>>
>> LzNode#__LZapplyArgs(..):
>> - when you call the early setters, you defined a "setr" variable, but
>> it isn't used anywhere
>
> Fixed.
>
>> - setters are now called in reversed order, I don't think we
>> guarantee anything about the setter-order, but it /may/ break any
>> fancy apps
>
> You're right, this is a gratuitous change, I will reverse the loop.
> (For is faster than pop, that's the only reason I changed it). We do
> happen to know that 'for in' iterates in the opposite order in Flash
> vs. Javascript, and since the setters list is built from a 'for in'
> iteration, we can be pretty sure order is not important here. We know
> it _is_ important for the early setters, which is why they are handled
> with the numerical ordering.
>
>> LzNode#__LZstoreRefs():
>> - missing $debug
>>
>> LzNode#__LZresolveRefs():
>> - missing $debug
>>
>> LzNode#__LZresolveReferences():
>> - missing $debug
>
> All fixed.
>
>> LzNode#applyConstraint(..):
>> - "constraintMethodName" shouldn't be a global variable
>
> Well spotted!
>
>> LzNode#applyConstraintMethod(..):
>> - Maybe you should underline that the constraint-method must already
>> exist on the node. (Yes, I do know you've wrote "method" which says
>> implicitly it's already on the node, but I'm not quite sure, whether
>> everyone knows the exact differences between methods and functions.
>> And in the javadoc there is again "function".)
>
> Fixed.
>
>> - don't you want to improve the delegate construction a bit, like:
>> var dp;
>> for (var i = 0; i < l; i += 2) {
>> dp = dependencies[i];
>> if (dp) {
>> var d = new LzDelegate(this, constraintMethodName, dp, "on" +
>> dependencies[i + 1]);
>> this.__LZdelegates.push(d);
>> }
>> }
>
> Sure.
>
>> LzCanvas#__LZcallInit():
>> - "TODO: ask Max": canvas overwrites LzView#init(), most likely only
>> a legacy of pre-4 OL, I think you should be able to remove both
>> things, so the explicit call for initializing the sprite and the
>> overwrite of LzView#init()
>
> I'm not going to mess with this in this change. If you feel strongly
> about it, please file an improvement request.
>
>> LzState#remove():
>> - missing $debug
>
> Fixed.
>
>> LzState#__LZapplyArgs(..):
>> - you iterate over the held-object and while you do that, you also
>> modify it. Questions: may performance suffer because of this? So,
>> does the runtime notice these changes, or does it discard them?
>> (Thinking of Java, where you can't simply change a Map while
>> iterating over it)
>
> Good point. I _know_ this is safe in Flash, but it is poor practice
> to modify something you are iterating over. I've re-written the loop
> to accumulate the needed changes and then make the changes in a
> separate loop.
>
>> You use a couple of times: "foo.bar instanceof LzInitExpr" and "bar"
>> can be undefined. Was it the instanceof- or the is-operator in AS3,
>> which makes problems when using it with undefined values? (for
>> example in LzReplicationManager#construct(..) you're doing this)
>
> Well you should be allowed to have undefined as the lhs of
> instanceof. If this is broken in swf9, we should fix it in the
> compiler, not in our source. I prefixed these tests with an `in`
> check anyways.
>
>> On 2/13/2008 9:43 PM, P T Withington wrote:
>>> Change 20080208-ptw-T by ptw at dueling-banjos.local on 2008-02-08
>>> 08:18:39 EST
>>> in /Users/ptw/OpenLaszlo/ringding
>>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>>
>>> Summary: Unify argument initialization
>>>
>>> Bugs Fixed:
>>> LPP-1587 'ECMA4: Compile LZX declarations as JS declarations' (partial)
>>> LPP-631 'can't override a constraint with a literal with state
>>> attributes'
>>>
>>> Technical Reviewer: a.bargull at intensis.de (pending)
>>> QA Reviewer: henry.minsky at gmail.com (pending)
>>>
>>> Details:
>>> Initial values, initial expressions ($once), and constraints
>>> ($always), now are created as a unified list in the tag compiler
>>> solving several issues with overriding/inheritance of attribute
>>> values and constraints and enabling the solution to an issue with
>>> states and constraints.
>>>
>>> TextStprite: Update test for constraint on width or height.
>>>
>>> LzNode, UserClass: Simplify attribute inheritance/override
>>> computation,
>>> maintain backward-compatible magic-merge of attribute values (for
>>> now).
>>>
>>> LzNode: Update documentation of `construct` to note that
>>> constraints are now unified in `args`. __LZapplyArgs uses new
>>> args organization to sort out initialization expressions and
>>> constraints. __LZresolveReferences uses the new information to
>>> run initialization expressions and install constraints.
>>> __LZresolveRefs no longer needed. applyConstraint deprecated, but
>>> backward-compatible. New interface: applyConstraintMethod.
>>> Private releaseConstraint did not work, removed. New interface:
>>> releaseConstraintMethod.
>>>
>>> LzDefs: Turn LzDeclaredEvent into a singleton class. Add private
>>> support classes LzInitExpr and LzConstraintExpr.
>>>
>>> LaszloView: Update test for constraints. Fix setAlign and
>>> setValign to work with constraint methods, and to correctly work
>>> if alignment is changed (to release previous constraint).
>>>
>>> LaszloCanvas: Update __LZcallInit to parallel LzNode more
>>> closely.
>>>
>>> LzState: Update capturing of held args and constraints. Use this
>>> new organization to release constraints the state will override
>>> (and re-apply them when the state is removed). Remmove unused
>>> __LZstoreRefs.
>>>
>>> LzReplicationManager: Fix xpath constraint to work with constraint
>>> methods.
>>>
>>> Function.java: Make Function#name public.
>>>
>>> NodeModel.java: Coalesce $once, $path, $always into single
>>> arglist, distinguishing 'binders' by internal type, either
>>> LzInitExpr or LzConstraintExpr.
>>>
>>> Tests:
>>> smokecheck, amazon, most-components
>>>
>>> Files:
>>> M WEB-INF/lps/lfc/kernel/swf/LzInputTextSprite.as
>>> M WEB-INF/lps/lfc/debugger/LzMessage.lzs
>>> M WEB-INF/lps/lfc/core/LzNode.lzs
>>> M WEB-INF/lps/lfc/core/UserClass.lzs
>>> M WEB-INF/lps/lfc/core/LzDefs.lzs
>>> M WEB-INF/lps/lfc/views/LaszloView.lzs
>>> M WEB-INF/lps/lfc/views/LaszloCanvas.lzs
>>> M WEB-INF/lps/lfc/helpers/LzState.lzs
>>> M WEB-INF/lps/lfc/data/LzReplicationManager.lzs
>>> M WEB-INF/lps/server/src/org/openlaszlo/sc/Function.java
>>> M WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
>>>
>>>
>>> Changeset:
>>> http://svn.openlaszlo.org/openlaszlo/patches/20080208-ptw-T.tar
>>>
>
>
More information about the Laszlo-dev
mailing list