Thanks ! Frédéric THOMAS
---------------------------------------- > Date: Sun, 28 Jun 2015 15:11:20 -0400 > Subject: Re: [Externs] jasmine-2.0.js > From: teotigraphix...@gmail.com > To: dev@flex.apache.org > > Yeah I know, sent to your hotmail. > > Mike > > On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <webdoubl...@hotmail.com> > wrote: > >>> 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 >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>> >> >>