> What you can do is to send me your eclipse formatter property file. > I will use it in IJ.
I meant export your formatter profiles in xml Thanks, Frédéric THOMAS ---------------------------------------- > From: webdoubl...@hotmail.com > To: dev@flex.apache.org > Subject: RE: [Externs] jasmine-2.0.js > Date: Sun, 28 Jun 2015 20:06:19 +0100 > >> BTW, what should we do about code formatting, it seems my formatting is >> different then yours. I am using Eclipse right now since I don't have IJ >> setup for Falcon dev. > > I was wrong when I thought I had setup IJ correctly for Falcon, they are still > things it doesn't know how to do, for instance, share the generated classes > thru modules, therefore, it is not yet suitable for all parts of Falcon, at > the > moment, I use tricks to be able to code with. > > What you can do is to send me your eclipse formatter property file. > I will use it in IJ. > > Frédéric THOMAS > > > ---------------------------------------- >> Date: Sun, 28 Jun 2015 14:57:50 -0400 >> Subject: Re: [Externs] jasmine-2.0.js >> From: teotigraphix...@gmail.com >> To: dev@flex.apache.org >> >> BTW, what should we do about code formatting, it seems my formatting is >> different then yours. I am using Eclipse right now since I don't have IJ >> setup for Falcon dev. >> >> Mike >> >> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <teotigraphix...@gmail.com >>> wrote: >> >>> Yeah, I didn't want to go crazy with subclasses. Ideally class, function >>> and constant could share a "TopLevelReference" subclass of BaseReference >>> and you could put import logic there if you wanted to. >>> >>> Mike >>> >>> On Sun, Jun 28, 2015 at 2:51 PM, Frédéric THOMAS <webdoubl...@hotmail.com> >>> wrote: >>> >>>>> Once you find instances of imports that need to be saves, your current >>>>> context is already the ClassReference, so call classRef.addImport(). :) >>>> >>>> Btw, I will probably need to have a addImport() FunctionReference too, >>>> right ? >>>> >>>> Frédéric THOMAS >>>> >>>> >>>> ---------------------------------------- >>>>> Date: Sun, 28 Jun 2015 14:23:57 -0400 >>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>> From: teotigraphix...@gmail.com >>>>> To: dev@flex.apache.org >>>>> >>>>> Kewl. >>>>> >>>>> I am going to be busy most of the week remodeling my mother in laws >>>>> bathroom starting tomorrow. So if you want to try a new custom pass like >>>>> ResolveImportPass, go for it, I will just stay out of the way. I think >>>> it >>>>> would be good for you. :) If not, no worries, you gave me the idea. haha >>>>> >>>>> If you did, look at it like this, since all imports and logic therin are >>>>> totally dependent on what the compiler actual saves into the model, >>>> logic >>>>> says this needs to be the last or one of the last passes, from my >>>>> perspective, it needs to be the last. >>>>> >>>>> If you make it the last, then this pass is not coupled to us fixing bugs >>>>> ahead of it. Say we find out we need to add another structure of AST >>>>> parsing for a node structure I havn't implemented yet, well we are safe. >>>>> >>>>> Why safe? Because in this import pass, you are using the MODEL, so no >>>> AST. >>>>> Instead of worrying about resolving imports during AST traversal, you >>>> are >>>>> using what is already in the container after all that complex parsing is >>>>> finished. >>>>> >>>>> So this pass, you would use your skills at knowing "what" in each >>>> subclass >>>>> of BaseReference could contain a type. Then write your logic pass to >>>>> traverse Classes, then into each classes members, then loop through each >>>>> member and analyze their types and do your import testing logic there. >>>>> >>>>> Once you find instances of imports that need to be saves, your current >>>>> context is already the ClassReference, so call classRef.addImport(). :) >>>>> >>>>> Mike >>>>> >>>>> >>>>> >>>>> >>>>> On Sun, Jun 28, 2015 at 2:13 PM, Frédéric THOMAS < >>>> webdoubl...@hotmail.com> >>>>> wrote: >>>>> >>>>>>> All I meant is that 75% of the time we would just want to save things >>>> in >>>>>>> the model or a reference, such that you use addImport() during the >>>>>>> resolution. Then it keeps the emit() phase straight burn rubber and >>>> loop >>>>>>> through all existing model structures, where imports would be just a >>>> list >>>>>>> that emitImport() iterates through, no logic. >>>>>> >>>>>> Got it ! >>>>>> >>>>>>> I AM NOT saying what you did was wrong, I am just offering a look into >>>>>> how >>>>>>> I set it up. You know how I got this pattern? From my massive >>>> mistakes in >>>>>>> code generators of past. :) I realized that an emit phase needs to be >>>>>>> stupid and not dependent on any type of intelligence, just needs to >>>>>> create >>>>>>> what already exists. >>>>>> >>>>>> I'm in a phase where I'm learning compiler things and indeed I will do >>>>>> some mistakes >>>>>> or I won't be as precise as you who have experience on it. >>>>>> Therefore I can accept critics and learn from your explanations :-) >>>>>> >>>>>>> This can also solve many problems at once. So I haven't got back into >>>> the >>>>>>> code BUT my intuition says we need a universal solution for any type >>>> of >>>>>>> TYPE that is attached to a member, identifier such as a param type, >>>>>> return >>>>>>> type, filed type, superclass and interface(already taken care of using >>>>>>> addImport()). >>>>>>> >>>>>>> See where I am coming from? We know that every type is eventually >>>> going >>>>>> to >>>>>>> need to be scanned for imports and validated. >>>>>> >>>>>> Yes, actually, I was expecting to see a specific pass for that. >>>>>> >>>>>>> Dude, I just don't want to come off bossy or condescending, I love you >>>>>>> help. A lot can be added to this compiler that could be very >>>> interesting. >>>>>>> So having you understand my design intention is really important to >>>> me. >>>>>> :) >>>>>> >>>>>> Don't worry, I don't think you are bossy or condescending Mike, I'm >>>>>> reading you >>>>>> and try to put in parallel the new informations you give and what I've >>>>>> seen in the code >>>>>> for a better understanding, that's it. >>>>>> >>>>>> Cheers, >>>>>> Frédéric THOMAS >>>>>> >>>>>> >>>>>> ---------------------------------------- >>>>>>> Date: Sun, 28 Jun 2015 13:48:02 -0400 >>>>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>>>> From: teotigraphix...@gmail.com >>>>>>> To: dev@flex.apache.org >>>>>>> >>>>>>> Fred you did an awesome job. :) >>>>>>> >>>>>>> All I meant is that 75% of the time we would just want to save things >>>> in >>>>>>> the model or a reference, such that you use addImport() during the >>>>>>> resolution. Then it keeps the emit() phase straight burn rubber and >>>> loop >>>>>>> through all existing model structures, where imports would be just a >>>> list >>>>>>> that emitImport() iterates through, no logic. >>>>>>> >>>>>>> I AM NOT saying what you did was wrong, I am just offering a look into >>>>>> how >>>>>>> I set it up. You know how I got this pattern? From my massive >>>> mistakes in >>>>>>> code generators of past. :) I realized that an emit phase needs to be >>>>>>> stupid and not dependent on any type of intelligence, just needs to >>>>>> create >>>>>>> what already exists. >>>>>>> >>>>>>> This can also solve many problems at once. So I haven't got back into >>>> the >>>>>>> code BUT my intuition says we need a universal solution for any type >>>> of >>>>>>> TYPE that is attached to a member, identifier such as a param type, >>>>>> return >>>>>>> type, filed type, superclass and interface(already taken care of using >>>>>>> addImport()). >>>>>>> >>>>>>> See where I am coming from? We know that every type is eventually >>>> going >>>>>> to >>>>>>> need to be scanned for imports and validated. >>>>>>> >>>>>>> Dude, I just don't want to come off bossy or condescending, I love you >>>>>>> help. A lot can be added to this compiler that could be very >>>> interesting. >>>>>>> So having you understand my design intention is really important to >>>> me. >>>>>> :) >>>>>>> >>>>>>> Mike >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Sun, Jun 28, 2015 at 1:37 PM, Frédéric THOMAS < >>>>>> webdoubl...@hotmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>>> Fred pretty much iterated things correctly. >>>>>>>>> >>>>>>>>> The ResolvePackageNamePass I haven't to get back to. I was in the >>>>>> middle >>>>>>>> of >>>>>>>>> implementing something when I got it to work in another place. >>>>>>>>> >>>>>>>>> There is a pattern to how things are parsed so most of the time it's >>>>>>>> better >>>>>>>>> to set state as nodes/references are being added to the model. In >>>> the >>>>>>>> case >>>>>>>>> of imports, I don't see any problems right now with checking during >>>> the >>>>>>>>> emit phase but, if the model was more interactive during the >>>> session, >>>>>>>> this >>>>>>>>> type of logic should happen during the resolve phase so the model >>>> with >>>>>>>> it's >>>>>>>>> references has a correct state if there is any logic happening >>>> between >>>>>>>> two >>>>>>>>> references. >>>>>>>> >>>>>>>> Thanks for the explanation, I will take the time to do some debug >>>> spins >>>>>> to >>>>>>>> understand >>>>>>>> when the phases are called, what they do and what classes are >>>> involved. >>>>>>>> Given it is a fairly small transpiler and despite the recursive >>>> visitor >>>>>>>> pattern, I guess I can do it. >>>>>>>> >>>>>>>>> How much are you working on right now Fred? I just ask because I >>>> don't >>>>>>>> want >>>>>>>>> to create any conflicts. >>>>>>>> >>>>>>>> Go ahead Mike, I'm done with that at the moment, I did my last >>>> cleanup >>>>>>>> already. >>>>>>>> Anyway, better I work on a branch and commit the branch instead for >>>>>> review >>>>>>>> next time. >>>>>>>> >>>>>>>> Frédéric THOMAS >>>>>>>> >>>>>>>> >>>>>>>> ---------------------------------------- >>>>>>>>> Date: Sun, 28 Jun 2015 13:23:15 -0400 >>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>> To: dev@flex.apache.org >>>>>>>>> >>>>>>>>> Fred pretty much iterated things correctly. >>>>>>>>> >>>>>>>>> The ResolvePackageNamePass I haven't to get back to. I was in the >>>>>> middle >>>>>>>> of >>>>>>>>> implementing something when I got it to work in another place. >>>>>>>>> >>>>>>>>> There is a pattern to how things are parsed so most of the time it's >>>>>>>> better >>>>>>>>> to set state as nodes/references are being added to the model. In >>>> the >>>>>>>> case >>>>>>>>> of imports, I don't see any problems right now with checking during >>>> the >>>>>>>>> emit phase but, if the model was more interactive during the >>>> session, >>>>>>>> this >>>>>>>>> type of logic should happen during the resolve phase so the model >>>> with >>>>>>>> it's >>>>>>>>> references has a correct state if there is any logic happening >>>> between >>>>>>>> two >>>>>>>>> references. >>>>>>>>> >>>>>>>>> How much are you working on right now Fred? I just ask because I >>>> don't >>>>>>>> want >>>>>>>>> to create any conflicts. >>>>>>>>> >>>>>>>>> Mike >>>>>>>>> . >>>>>>>>> >>>>>>>>> On Sat, Jun 27, 2015 at 5:58 PM, Michael Schmalle < >>>>>>>> teotigraphix...@gmail.com >>>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hey Fred, I was out all day. I will have some time in the morning >>>> to >>>>>>>> look >>>>>>>>>> at what you did and comment. :) >>>>>>>>>> >>>>>>>>>> Mike >>>>>>>>>> >>>>>>>>>> On Sat, Jun 27, 2015 at 5:27 PM, Frédéric THOMAS < >>>>>>>> webdoubl...@hotmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Just to explain what I did, especially to folks who would like to >>>> get >>>>>>>>>>> their hand dirty on the compiler but like me, don't know how it >>>> works >>>>>>>> :-) >>>>>>>>>>> >>>>>>>>>>> I was adding jasmine-2.0.js [1], a file that contains only jsDoc >>>>>>>>>>> (parameters and return type descriptions) and declarations, no >>>>>>>>>>> implementations. >>>>>>>>>>> When I say "adding jasmine-2.0.js" I mean, transpile this .js >>>> file to >>>>>>>> .as >>>>>>>>>>> and then compile it to a .swc. >>>>>>>>>>> >>>>>>>>>>> The transpilation part is done by EXTERNC >>>>>>>>>>> >>>>>>>>>>> You call it like that: >>>>>>>>>>> >>>>>>>>>>> <java jar="${basedir}/compiler.jx/lib/externc.jar" fork="true" >>>>>>>>>>> failonerror="false"> >>>>>>>>>>> <arg value="+flexlib=${env.ASJS_HOME}/frameworks" /> >>>>>>>>>>> <arg value="-debug" /> >>>>>>>>>>> <arg >>>>>>>>>>> >>>>>>>> >>>>>> >>>> value="-load-config=${basedir}/externs/jasmine/jasmine-compile-config.xml" >>>>>>>>>>> /> >>>>>>>>>>> >>>>>>>>>>> In the jasmine-compile-config.xml, you can exclude classes and >>>>>> member, >>>>>>>>>>> for example, in the jasmine.Spec class, I excluded the variable >>>>>>>> $injector >>>>>>>>>>> as its type was coming from the Angular library that is not yet >>>>>>>> transpiled. >>>>>>>>>>> >>>>>>>>>>> <field-exclude> >>>>>>>>>>> <class>jasmine.Spec</class> >>>>>>>>>>> <field>$injector</field> >>>>>>>>>>> </field-exclude> >>>>>>>>>>> >>>>>>>>>>> You can also exclude classes and functions. >>>>>>>>>>> >>>>>>>>>>> The compile part is done by the falcon compc as follow: >>>>>>>>>>> >>>>>>>>>>> <java >>>>>> jar="${basedir}/compiler/generated/dist/sdk/lib/falcon-compc.jar" >>>>>>>>>>> fork="true" >>>>>>>>>>> failonerror="true"> >>>>>>>>>>> <arg value="+flexlib=${env.ASJS_HOME}/frameworks" /> >>>>>>>>>>> <arg value="-debug" /> >>>>>>>>>>> <arg >>>>>>>>>>> >>>> value="-load-config=${basedir}/externs/jasmine/compile-config.xml" /> >>>>>>>>>>> <arg >>>>>>>>>>> >>>> value="-output=${basedir}/externs/jasmine/out/bin/jasmine-2.0.swc" /> >>>>>>>>>>> </java> >>>>>>>>>>> >>>>>>>>>>> The problem was that this last part was failing with an NPE a >>>> Type of >>>>>>>>>>> something: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMemberAccess(TypeScope.java:344) >>>>>>>>>>> >>>>>>>>>>> Even looking closely at the code, I didn't get why it was failing >>>> but >>>>>>>> for >>>>>>>>>>> sure, because it was trying to compile one of the transpiled .as >>>>>> file, >>>>>>>> this >>>>>>>>>>> transpiled code was wrong. >>>>>>>>>>> Looking at those .as, it was easy to see that some import were >>>>>> missing. >>>>>>>>>>> >>>>>>>>>>> So, why the 2 others externs (js and jquery) had no issues ? >>>>>>>>>>> It is always surprising to see something working on all the things >>>>>>>> except >>>>>>>>>>> of yours, but it can help you too :-) >>>>>>>>>>> >>>>>>>>>>> So, I've been looking at those other transpiled .as files from >>>>>> existing >>>>>>>>>>> externs to see if they had imports and they were some. >>>>>>>>>>> I then created a mini jasmine.js containing only the faulty case >>>>>> only, >>>>>>>>>>> that, from what I've been able to determinate, was that the import >>>>>> was >>>>>>>> not >>>>>>>>>>> generated when a static function had a return type of a class >>>> created >>>>>>>> via a >>>>>>>>>>> function constructor, so, I filled this mini jasmine.js with the >>>>>>>> equivalent >>>>>>>>>>> of a static function like this: >>>>>>>>>>> >>>>>>>>>>> /** >>>>>>>>>>> * @return {!jasmine.Clock} >>>>>>>>>>> */ >>>>>>>>>>> jasmine.clock = function() {}; >>>>>>>>>>> >>>>>>>>>>> Which should transpile in AS3, something like: >>>>>>>>>>> >>>>>>>>>>> import jasmine.Clock; >>>>>>>>>>> public static function clock():Clock {} >>>>>>>>>>> >>>>>>>>>>> and a function constructor like this: >>>>>>>>>>> >>>>>>>>>>> /** @constructor */ >>>>>>>>>>> jasmine.Clock = function() {}; >>>>>>>>>>> >>>>>>>>>>> which transpile: >>>>>>>>>>> >>>>>>>>>>> package jasmine { >>>>>>>>>>> public class Clock {} >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Created a test class based on those Mike created for the previous >>>>>>>> externs >>>>>>>>>>> doing: >>>>>>>>>>> >>>>>>>>>>> // jasmine, the main jasmine class. >>>>>>>>>>> ClassReference jasmine = model.getClassReference("jasmine"); >>>>>>>>>>> assertNotNull(jasmine); >>>>>>>>>>> >>>>>>>>>>> assertTrue(jasmine.hasImport("jasmine.Clock")); >>>>>>>>>>> >>>>>>>>>>> The hasImport method didn't exist on ClassReference but it was a >>>>>>>>>>> addImport(), I follow to where it was called in >>>> ResolvePackagesPass >>>>>>>> hoping >>>>>>>>>>> to find a missing case but after debug spin I wasn't able to do >>>> what >>>>>> I >>>>>>>>>>> expected, I'm not sure I understood all the logic in this class >>>> but >>>>>> it >>>>>>>>>>> looked like the Node of my return type was never visited and >>>>>> therefore >>>>>>>>>>> wasn't able to add my import here. >>>>>>>>>>> >>>>>>>>>>> But wait, in the ClassReference, I have a >>>>>>>>>>> >>>>>>>>>>> public MethodReference addMethod(Node node, String functionName, >>>>>>>>>>> JSDocInfo comment, boolean isStatic) >>>>>>>>>>> >>>>>>>>>>> To me it would be enough to add the import to the list of imports >>>> to >>>>>> be >>>>>>>>>>> emitted when the MethodReference is to be added, I just had to >>>>>>>> determinate >>>>>>>>>>> if the return type given in the jsDoc was not from the current >>>>>>>> package, the >>>>>>>>>>> given method not excluded, the given return type neither ! >>>>>>>>>>> >>>>>>>>>>> My test was passing was I was able to compile with this new code >>>> the >>>>>>>> old >>>>>>>>>>> externs. >>>>>>>>>>> >>>>>>>>>>> The only thing I had to do to finish to compile the jasmine extern >>>>>> was >>>>>>>> to >>>>>>>>>>> emit the imports for the global functions too as they shown to be >>>>>>>> faulty >>>>>>>>>>> for the same reasons. >>>>>>>>>>> >>>>>>>>>>> Mike will probably tell me now where my logic was wrong now :-) >>>>>>>>>>> >>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>> From: webdoubl...@hotmail.com >>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js >>>>>>>>>>>> Date: Sat, 27 Jun 2015 20:43:43 +0100 >>>>>>>>>>>> >>>>>>>>>>>> Ok, done ! >>>>>>>>>>>> >>>>>>>>>>>> I forgot to uncomment the externc build of jasmine and print the >>>>>>>> global >>>>>>>>>>> function imports ! >>>>>>>>>>>> >>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>> From: webdoubl...@hotmail.com >>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js >>>>>>>>>>>>> Date: Sat, 27 Jun 2015 20:12:16 +0100 >>>>>>>>>>>>> >>>>>>>>>>>>>> I pushed the changes which are ready to be reviewed. >>>>>>>>>>>>> >>>>>>>>>>>>> oups, hold on, I had some things commented that hidden other >>>>>>>> problems, >>>>>>>>>>> I will continue on it. >>>>>>>>>>>>> >>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>> From: webdoubl...@hotmail.com >>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js >>>>>>>>>>>>>> Date: Sat, 27 Jun 2015 18:31:32 +0100 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Mike, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I pushed the changes which are ready to be reviewed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Note: The jasmine-2.0.js is not committed as it should be >>>>>> downloaded >>>>>>>>>>> with the unpack-externs target of the download.xml, I followed the >>>>>>>> model. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>> Date: Sat, 27 Jun 2015 05:31:50 -0400 >>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>>>>>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I just noticed you said today or tomorrow, whatever man. >>>> doesn't >>>>>>>>>>> matter. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Sat, Jun 27, 2015 at 5:17 AM, Michael Schmalle < >>>>>>>>>>> teotigraphix...@gmail.com >>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Well its the practice. I know the pattern I am using so if I >>>>>> have >>>>>>>> to >>>>>>>>>>>>>>>> adjust it to fit I will. You can tell that with AST type >>>> stuff, >>>>>> it >>>>>>>>>>> has to >>>>>>>>>>>>>>>> follow a specific pattern or everything turns to crap when >>>>>> trying >>>>>>>>>>> to add >>>>>>>>>>>>>>>> stuff down the road. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Commit it sooner than later as I have a couple hours to >>>> check it >>>>>>>>>>> out this >>>>>>>>>>>>>>>> morning. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Sat, Jun 27, 2015 at 3:15 AM, Frédéric THOMAS < >>>>>>>>>>> webdoubl...@hotmail.com> >>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Mike, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I can now compile jasmine, I'm not sure my fix is very clean >>>>>> but >>>>>>>> it >>>>>>>>>>>>>>>>> works, I've been able to compile all the externs with. >>>>>>>>>>>>>>>>> I will commit it later today or tomorrow as I need to clean >>>> a >>>>>> bit >>>>>>>>>>> before >>>>>>>>>>>>>>>>> and it would be nice if you can review it. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>> From: webdoubl...@hotmail.com >>>>>>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js >>>>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 22:43:30 +0100 >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hey Mike, it looks like "import jasmine.Clock;" is missing >>>> in >>>>>>>> the >>>>>>>>>>>>>>>>> generated jasmine.as, that's it ! >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>>> From: webdoubl...@hotmail.com >>>>>>>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js >>>>>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 22:26:32 +0100 >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> HAHA, ah that is a hard one man, thanks for the offer >>>> but I >>>>>>>>>>> think I am >>>>>>>>>>>>>>>>>>>> going to need to get this one. There are a couple places >>>> it >>>>>>>>>>> could be >>>>>>>>>>>>>>>>> though >>>>>>>>>>>>>>>>>>>> if you are curious. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> First you really need to understand the problem, I am >>>> typing >>>>>>>>>>> this >>>>>>>>>>>>>>>>> stuff in >>>>>>>>>>>>>>>>>>>> between installing a bathroom vanity and sink, so I >>>> haven't >>>>>>>>>>> looked at >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> code yet. :) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quite >>>>>> know >>>>>>>>>>> the >>>>>>>>>>>>>>>>> problem >>>>>>>>>>>>>>>>>>>> yet. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Ok, I will check your solution :-) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 16:59:58 -0400 >>>>>>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>>>>>>>>>>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Fri, Jun 26, 2015 at 4:39 PM, Frédéric THOMAS < >>>>>>>>>>>>>>>>> webdoubl...@hotmail.com> >>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Yeah, this "jasmine.Clock" >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to >>>>>>>> resolve >>>>>>>>>>> a >>>>>>>>>>>>>>>>> member >>>>>>>>>>>>>>>>>>>>>> expression and it can't resolve it. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You >>>> are >>>>>>>>>>> using the >>>>>>>>>>>>>>>>>>>>> extern >>>>>>>>>>>>>>>>>>>>>> in the GCC project correct? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Yes, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-2.0.js >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> If so, I need to take a look at it. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Everyone, I did one pass and tests on packages and >>>> class >>>>>>>>>>> creation, >>>>>>>>>>>>>>>>> so >>>>>>>>>>>>>>>>>>>>> these >>>>>>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type >>>> resolver >>>>>> is >>>>>>>>>>>>>>>>> "asked" to >>>>>>>>>>>>>>>>>>>>> do >>>>>>>>>>>>>>>>>>>>>> more work then my initial implementation. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Make sense? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Well, kind of :-) >>>>>>>>>>>>>>>>>>>>> What classes would you check for this ? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> HAHA, ah that is a hard one man, thanks for the offer >>>> but I >>>>>>>>>>> think I am >>>>>>>>>>>>>>>>>>>> going to need to get this one. There are a couple places >>>> it >>>>>>>>>>> could be >>>>>>>>>>>>>>>>> though >>>>>>>>>>>>>>>>>>>> if you are curious. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> First you really need to understand the problem, I am >>>> typing >>>>>>>>>>> this >>>>>>>>>>>>>>>>> stuff in >>>>>>>>>>>>>>>>>>>> between installing a bathroom vanity and sink, so I >>>> haven't >>>>>>>>>>> looked at >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> code yet. :) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quite >>>>>> know >>>>>>>>>>> the >>>>>>>>>>>>>>>>> problem >>>>>>>>>>>>>>>>>>>> yet. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> ---------------------------------------- >>>>>>>>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 16:32:16 -0400 >>>>>>>>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js >>>>>>>>>>>>>>>>>>>>>> From: teotigraphix...@gmail.com >>>>>>>>>>>>>>>>>>>>>> To: dev@flex.apache.org >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Yeah, this "jasmine.Clock" >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to >>>>>>>> resolve >>>>>>>>>>> a >>>>>>>>>>>>>>>>> member >>>>>>>>>>>>>>>>>>>>>> expression and it can't resolve it. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You >>>> are >>>>>>>>>>> using the >>>>>>>>>>>>>>>>>>>>> extern >>>>>>>>>>>>>>>>>>>>>> in the GCC project correct? >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> If so, I need to take a look at it. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Everyone, I did one pass and tests on packages and >>>> class >>>>>>>>>>> creation, >>>>>>>>>>>>>>>>> so >>>>>>>>>>>>>>>>>>>>> these >>>>>>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type >>>> resolver >>>>>> is >>>>>>>>>>>>>>>>> "asked" to >>>>>>>>>>>>>>>>>>>>> do >>>>>>>>>>>>>>>>>>>>>> more work then my initial implementation. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Make sense? >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Fri, Jun 26, 2015 at 3:27 PM, Frédéric THOMAS < >>>>>>>>>>>>>>>>>>>>> webdoubl...@hotmail.com> >>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi Mike, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Any idea why ? >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>> U:\sources\asf\flex\falcon\externs\jasmine\out\as\classes\ >>>>>>>>>>>>>>>>> jasmine.as:26 >>>>>>>>>>>>>>>>>>>>>>> Erreur interne : java.lang.NullPointerException >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMemberAccess(TypeScope.java:344) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.ScopeView.getPropertyForMemberAccess(ScopeView.java:81) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:879) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:841) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:760) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolveMemberRef(IdentifierNode.java:829) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolve(IdentifierNode.java:377) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.getMName(IdentifierNode.java:432) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode.getMName(MemberAccessExpressionNode.java:158) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.as.codegen.ABCGeneratingReducer.dottedName(ABCGeneratingReducer.java:840) >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>> >>>> org.apache.flex.compiler.internal.as.codegen.CmcEmitter.action_321(CmcEmitter.java:5236) >>>>>>>>>>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { return >>>>>>>> null; } >>>>>>>>>>>>>>>>>>>>>>> ^ >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> In the jasmine extern file >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @return {!jasmine.Clock} >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.clock = function() {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** @constructor */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.Clock = function() {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.install = function() {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.uninstall = function() {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** @param {number} ms */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.tick = function(ms) {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** @param {!Date} date */ >>>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.mockDate = function(date) {}; >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> In jasmine.as >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> * @returns {jasmine.Clock} >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { return >>>>>>>> null; } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> clock.as >>>>>>>>>>>>>>>>>>>>>>> ----------------------------- >>>>>>>>>>>>>>>>>>>>>>> package jasmine { >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public class Clock { >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public function Clock() { >>>>>>>>>>>>>>>>>>>>>>> super(); >>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc. >>>>>>>>>>>>>>>>>>>>>>> * >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public function install():void { } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @param ms [number] >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public function tick(ms:Number):void { } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc. >>>>>>>>>>>>>>>>>>>>>>> * >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public function uninstall():void { } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>> * @param date [Date] >>>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] >>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>> public function mockDate(date:Date):void { } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>>>>>> Frédéric THOMAS >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >>> >>> >