On 9/29/16, 3:18 PM, "Greg Dove" <greg.d...@gmail.com> wrote:

>That's almost like a dependency analysis pass within the class itself
>isn't
>it? To rearrange the ordering, I mean.

I think it means determining the difference between scalar and non-scalar
initializer values.  We already do something like this for instance
properties.  Static properties can be initialized to scalar values in any
order, but any initial values as a result of function calls and other
lookups should be run in a class initializer in which case order in the
source file might always be right, or at least more right than what we
have now.  When to kick off the class initializer is an interesting
question.  Flash runs the class initializer from the verifier.  There is
essentially no such thing for JS.  Running all class initializers at
startup is an undesirable solution.

>
>If I can see a quick solution to the above I might add it today, but
>perhaps it is better to wait and try to figure out the bigger problem.

If you still have some time, I'm about to start digging into the
re-introduction of circular dependencies in the examples like
DataBindingExample.  I suspect the new code you added to the postProcess
but have no proof yet.  If you look at Strand.js, it has a goog.require
for IBead, but there is no reference to IBead in Strand.js.  The String
'Ibead' is in the reflection data, but not a reference to the class.  I'm
pretty sure Strand shouldn't require IBead.  I'm wondering what cases you
ran into that caused the new code in postProcess.

Thanks,
-Alex

Reply via email to