I think I found  a solution for the dependency issue I mentioned.
The inclusion of "ValueChangeEvent" when not otherwise specified in the
project provided a useful clue here! (Otherwise I suspect I would not have
found this)
I need to do a bit more testing, but I expect to issue a related PR for a
change in ClassDirectiveProcessor before too long.

On Mon, Sep 5, 2016 at 10:05 PM, Greg Dove <greg.d...@gmail.com> wrote:

> Alex, I did some testing with a minimal project, I did not even have to
> try as-only, as SimpleApplication was sufficient. And yes, there is an
> issue if the dependency is not explicitly added somewhere. I will try to
> find a way to resolve this, otherwise the ASCompilationUnit code will need
> to go back.
> I had thought it might be useful to have the bindable implementation be
> more of any output variation than a manipulation of the AST. I had even
> wondered about longer term possibilities with such an approach - e.g.
> perhaps different binding implementation variations (e.g. as3 Signals
> instead of events or something like that). I realize that this is not
> something to think about seriously now. Plenty to do with things as they
> are... was just thinking of possibilities for the future.
>
> Anyhow, if I can't find a quick solution to add a specific dependency for
> output in the swf without the ASCompilationUnit AST manipulation approach,
> then that will need to go back (at least for now, anyway).
> Perhaps this was the reason you did this in the first place? Was it when
> the EventDispatcher base class for binding became non-native?
> If you think its best to try and fix the original problems with the
> original code in ASCompilationUnit , then perhaps that is the simplest
> route for now. If so, I'd be keen to leave the other stuff I added for a
> short time, but will happily remove the unnecessary parts once we can be
> sure they never get branched into as a fallback (i.e. we can be sure the
> ASCompilationUnit code catches all the 'extends' candidates). Let me know
> what you think.
>
> fyi I will be focusing on reflection work in whatever spare time I can
> find this week, following on from where you got to earlier this year with
> that. I will let you know where I get to later this week, I'm not sure if I
> will have it finished this week or not.
>
> cheers
> Greg
>
>
> On Sat, Sep 3, 2016 at 1:41 PM, Greg Dove <greg.d...@gmail.com> wrote:
>
>> Sound great. Yes, switching it back on at any point should remain a quick
>> fix option because it would simply make the other code act as a backstop.
>> I will take a quick look on Monday to see if I can find any problems in
>> small as-only projects where maybe the order of class definitions in the
>> swf could be important with the current approach.  Sounds a bit like a
>> theoretical edge case but you made me think about it.
>> Have a nice weekend.
>>
>> -Greg
>> [sent from my phone]
>>
>> On 3/09/2016 12:41 PM, "Alex Harui" <aha...@adobe.com> wrote:
>>
>>>
>>>
>>> On 9/2/16, 5:10 PM, "Greg Dove" <greg.d...@gmail.com> wrote:
>>>
>>> >Yes, that was one of the major changes. I moved it alongside the other
>>> >implementation inside ClassDirectiveProcessor and was able to get more
>>> >consistent results.
>>> >I initially commented it out so I could get everything working using the
>>> >implements IEventDispatcher approach - which is the more general
>>> approach
>>> >that would work for all cases- in javascript, then added it back for
>>> both
>>> >targets as a 2nd output variation in a later commit, and it went to
>>> >ClassDirectorProcessor for swf.
>>> >
>>> >I was seeing 2 issues from the ASCompilationUnit implementation:
>>> >1. It was not always applying where it should have been (so in cases
>>> where
>>> >it could have been 'extends EventDispatcher' it would sometimes fall
>>> >through to the implements IEventDispatcher approach in
>>> >ClassDIrectiveProcessor anyway). I suspect this was threading-related,
>>> but
>>> >I am not so familiar with threads.
>>> >
>>> >2. Less of an issue, it could also apply an EventDispatcher base class
>>> in
>>> >static-only bindable cases, which is unnecessary, this I expect could
>>> have
>>> >been more easily fixed. I tried checking with hasModifier in the
>>> original
>>> >code, but I think that might not be available yet, iirc that caused an
>>> >error.
>>> >
>>> >So I moved everything to the ClassDirectiveProcessor, which had the
>>> other
>>> >implementation of bindable support in any case. Sorry, I thought I had
>>> >been
>>> >clear about that.
>>>
>>> Well, you probably did explain it, but it probably didn't stick in my
>>> head
>>> until we hit this last issue and I went looking for the code where I had
>>> a
>>> vague memory of hacking a base class.  I still don't know the compiler
>>> code so well that it is clear in my head what work should be done where.
>>> It looks like the original attempt to deal with [Bindable] for SWF was
>>> done in ClassDirectiveProcessor, but when I wanted to fix a bug in
>>> FalconJX I decided to fix it by hacking the AST since that drives
>>> everything in FalconJX.  The right answer may have been for me to move
>>> the
>>> code from ClassDirectiveProcessor into ASCompilationUnit and use the
>>> existing tests for needsEventDispatcher, then maybe we wouldn't have had
>>> the two issues above.
>>>
>>> Anyway, I think we have recorded the possibility that AST hacking might
>>> be
>>> a solution if we hit other problems.  I'm ok with leaving the code as is
>>> until we hit another problem but feel free to keep digging if you want.
>>>
>>> Thanks,
>>> -Alex
>>>
>>>
>

Reply via email to