I think that’s a good plan.

Here’s what (I think) should solve the problem:

1. The compiler goes through the require chain once and build a list of all 
inheritance chains.
2. It also builds a list of requires that either have no inheritance, or are at 
the end of an inheritance chain.
3. It removes all requires with the exception of inherited ones, and places the 
entire list of requires from #2 in the main app class.
4. The order of the addDependencies should then not matter with the exception 
of inheritance chains where the bases need to be at the bottom of the list.

The only thing this does not address (unless I’m missing the boat), is static 
vars and consts. That’s a problem which is I believe is unsolvable anyway.

Harbs

> On Mar 16, 2017, at 8:58 AM, Alex Harui <aha...@adobe.com> wrote:
> 
> FWIW, I think I've reproduced it.  There is a circularity of goog.requires
> that cannot be fixed by removing circulars that I can see.
> 
> Essentially, if StandardFlowComposer extends FlowComposerBase which
> references FactoryComposer which extends StandardFlowComposer, then the
> following goog.requires are in play
> 
> --StandardFlowComposer.as--
> goog.require(FlowComposerBase);
> 
> --FlowComposerBase.as--
> Goog.require(FactoryComposer);
> 
> --FactoryComposer.as--
> goog.require(StandardFlowComposer);
> 
> This is a cycle.  AFAICT, removing the only goog.requires that isn't an
> inheritance chain dependency means that FactoryComposer will not be linked
> into the movie.
> 
> I think that instead of removing goog.requires, we need to move them to
> the main app.  I'll try that tomorrow.
> 
> Anyone have any thoughts on this topic?
> 
> Thanks,
> -Alex
> 
> 
> 
> On 3/15/17, 6:53 AM, "Harbs" <harbs.li...@gmail.com> wrote:
> 
>> Enjoy: ;-)
>> 
>> https://paste.apache.org/UK5X <https://paste.apache.org/UK5X>
>> 
>>> On Mar 15, 2017, at 3:32 PM, Alex Harui <aha...@adobe.com> wrote:
>>> 
>>> Please post all console output. Thanks
>>> 
>>> Get Outlook for Android<https://aka.ms/ghei36>
>>> 
>>> 
>>> ________________________________
>>> From: Harbs <harbs.li...@gmail.com>
>>> Sent: Tuesday, March 14, 2017 11:52:50 PM
>>> To: dev@flex.apache.org
>>> Subject: Re: Just need to vent...
>>> 
>>> I just pulled in the latests changes and the build now “completes” with
>>> a different problem:
>>> 
>>>    [java] Mar 15, 2017 8:49:42 AM
>>> com.google.javascript.jscomp.LoggerErrorManager println
>>>    [java] SEVERE:
>>> /Users/harbs/Documents/git/PrintUI/printui-flexjs/text_engine/test/HelloW
>>> orldTLF/bin/js-debug/org/apache/flex/textLayout/compose/StandardFlowCompo
>>> ser.js:12: ERROR - required
>>> "org.apache.flex.textLayout.compose.FlowComposerBase" namespace not
>>> provided yet
>>>    [java] 
>>> goog.require('org.apache.flex.textLayout.compose.FlowComposerBase');
>>>    [java] 
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>    [java]
>>>    [java] Mar 15, 2017 8:49:42 AM
>>> com.google.javascript.jscomp.LoggerErrorManager println
>>>    [java] SEVERE:
>>> /Users/harbs/Documents/git/PrintUI/printui-flexjs/text_engine/test/HelloW
>>> orldTLF/bin/js-debug/org/apache/flex/textLayout/compose/StandardFlowCompo
>>> ser.js:14: ERROR - required
>>> "org.apache.flex.textLayout.events.CompositionCompleteEvent" namespace
>>> not provided yet
>>>    [java] 
>>> goog.require('org.apache.flex.textLayout.events.CompositionCompleteEvent'
>>> );
>>>    [java] 
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> ^
>>>    [java]
>>>    [java] Mar 15, 2017 8:49:42 AM
>>> com.google.javascript.jscomp.LoggerErrorManager println
>>>    [java] SEVERE:
>>> /Users/harbs/Documents/git/PrintUI/printui-flexjs/text_engine/test/HelloW
>>> orldTLF/bin/js-debug/org/apache/flex/textLayout/compose/StandardFlowCompo
>>> ser.js:15: ERROR - required
>>> "org.apache.flex.textLayout.utils.ComposeUtils" namespace not provided
>>> yet
>>>    [java] 
>>> goog.require('org.apache.flex.textLayout.utils.ComposeUtils');
>>>    [java] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> 
>>> 
>>> I’m not sure how you’re trying to resolve the order on these files, but
>>> it’s obviously not straight-forward…
>>> 
>>>> On Mar 15, 2017, at 12:38 AM, Alex Harui <aha...@adobe.com> wrote:
>>>> 
>>>> Hmm.  I wonder what that is.  I just pushed an attempt to report on why
>>>> that is.
>>>> 
>>>> -Alex
>>>> 
>>>> 
>>>> On 3/14/17, 2:16 PM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>> 
>>>>> Got an error:
>>>>> https://paste.apache.org/KgxC <https://paste.apache.org/KgxC>
>>>>> 
>>>>>> On Mar 14, 2017, at 10:34 PM, Harbs <harbs.li...@gmail.com> wrote:
>>>>>> 
>>>>>> Pulling now. I’ll let you know how it goes.
>>>>>> 
>>>>>>> On Mar 14, 2017, at 9:44 PM, Alex Harui <aha...@adobe.com> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 3/14/17, 12:20 AM, "Harbs" <harbs.li...@gmail.com> wrote:
>>>>>>> 
>>>>>>>> That’s great! I’m anxiously waiting to see what you can do! ;-)
>>>>>>> 
>>>>>>> OK, I put in a fix for my simple case.  See if it helps on your case
>>>>>>> and
>>>>>>> if compile times really bog down.
>>>>>>> 
>>>>>>> Basically, we are trying to list the contents of a DAG, but when you
>>>>>>> run
>>>>>>> into a node a again, you not only have to shift the order of items
>>>>>>> in
>>>>>>> the
>>>>>>> list, we also have to fix up the goog.requires.  That requires a
>>>>>>> lot of
>>>>>>> revisiting.  I'm wondering if there is a better strategy, like
>>>>>>> fixing
>>>>>>> up
>>>>>>> the goog.requires at the very end once the order is otherwise
>>>>>>> determined.
>>>>>>> 
>>>>>>> That's more risky work than I'd like to do, but maybe we have to
>>>>>>> just
>>>>>>> do
>>>>>>> it.
>>>>>>> 
>>>>>>> -Alex
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to