> You know, I went and moved everything into up to 3 folders (as, js, asjs), > then found out that FB only supports one folder path per source attachment > for a SWC. So now, when debugging you sometimes have to switch source > attachments from as to asjs. So, I’m totally up for another folder > restructuring. > > So, not sure what files need to be yanked out and shared, but seems like > we have 3 different classes of source files; > > 1) AS for Flash > 2) AS for JS > 3) AS for both Flash and JS > > I wonder if we need to plan ahead for any JS source for something we need > to hack in that can’t be described in AS. > > Anyway, do you happen to know how IJ associates source with SWCs for > debugging? FB would rather we put #1 and #3 in the same source folder, > but that makes describing what gets cross-compiled to JS more difficult. > We could make COMPJSC smarter and ignore files with some directive in it > so folks don’t need to keep adding to a list of files when adding new > files.
I would be happy to anwser but I'm not sure I understood the question. If you add a SDK, SWC or a folder with SWCs and sources, it will scan and detect swc and sources, for example, for the FlexJS folder imported as a lib, it detects AS and ASJS for each swc, you can manualy add some source folders for any of the SWCs. When it comes to debug, I guess it asks FDB for the source file, it the file is not referenced, it will show a native representation where you can still associate sources. Is that what you want to know ? Frédéric THOMAS > From: aha...@adobe.com > To: dev@flex.apache.org > Subject: Re: [FalconJX] FlexJS as to js work > Date: Tue, 2 Jun 2015 18:15:20 +0000 > > > > On 6/2/15, 10:38 AM, "Michael Schmalle" <teotigraphix...@gmail.com> wrote: > > >A couple questions; > > > >1. It doesn't look like you have private fields implemented to be emitted > >in the constructor? private fileds are going to the prototype. For > >instance; > > > >private var explicitWidth:Number = NaN; > > > >to > > > >/** > >* @private > >* @type {number} > >*/ > >this.explicitWidth_ = NaN; > > > >Is this something that needs to happen, UIBase is what I am testing. > > We’ll have to see if Erik or others with more JS and Goog experience can > answer that. IIRC, in just vanilla JS, a private member would be on the > prototype and some other thing like an annotation would try to keep people > from using it outside the class via some compile-time checking. However, > this fails in surprising ways for any members whose initial values are not > scalars. For example: > > private var children:Array = []; > > If this becomes > > /** > * @private > */ > MyClass.prototype.children = []; > > Then all instances share the one array, which is undesirable. So, > initializing fields in the constructor can avoid that problem at the cost > of running the init for scalars where it doesn’t matter. > > What I don’t know is if Google Closure Compiler or Library has other > expectations about jsdoc for private members and whether they can be on > the prototype or not. I think the Linter has busted me for trying to > declare uninitialized private members in the constructor, but I could be > wrong about that. When I hit stuff like that I just give it an initial > value and keep on going. > > > > >2. Running into problems with interfaces, if we use DOM, > >HTMLElementWrapper.element needs to be Element not Object correct? If not, > >you don't key code completion in the IDE. > > There are probably lots of places where the jsdoc annotation is Object > when it can be something more specific. A lot of the jsdoc I did was > early when I just needed to get the tools to stop complaining. So feel > free to tighten up the jsdoc and/or use a more specific type than Object. > > > > >3. flexjs_wrapper can't exist on Element, it's not dynamic, does it nee to > >be dynamic or do we just use array access? > > > >this.element['flexjs_wrapper'] = this; > > Ah yes, there are some places where we hack JS “classes”. I’m open to > ideas on what to do. Can we subclass Element and add flexjs_wrapper? > > > > >4. For DOM elements and the closure compiler, does it expect type Element, > >for instance is below correct? > > > >/** > > * @expose > > * @type {Element} > > */ > >org_apache_flex_core_UIBase.prototype.positioner; > > Not sure what you mean by “expect”, but the code snippet should work. > > > > >5. The API now needs to be yanked out of Core/as/src into another > >directory > >like Core/api/src, so the as Flash and as HTML ActionScript can share the > >same interfaces, correct? What would be the plan? > > You know, I went and moved everything into up to 3 folders (as, js, asjs), > then found out that FB only supports one folder path per source attachment > for a SWC. So now, when debugging you sometimes have to switch source > attachments from as to asjs. So, I’m totally up for another folder > restructuring. > > So, not sure what files need to be yanked out and shared, but seems like > we have 3 different classes of source files; > > 1) AS for Flash > 2) AS for JS > 3) AS for both Flash and JS > > I wonder if we need to plan ahead for any JS source for something we need > to hack in that can’t be described in AS. > > Anyway, do you happen to know how IJ associates source with SWCs for > debugging? FB would rather we put #1 and #3 in the same source folder, > but that makes describing what gets cross-compiled to JS more difficult. > We could make COMPJSC smarter and ignore files with some directive in it > so folks don’t need to keep adding to a list of files when adding new > files. > > > > > >Lots more but I thought I would start with this. > > > >So from my sketchy tests we have: > > Freakin’ cool! FWIW, I implemented a custom asdoc @ keyword that > suppresses casting functions in the JS output. Search for @flexjsignore. > Kinda hacky but saves on some output code that doesn’t matter in the JS > world. > > -Alex >