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