Return-Path: X-Original-To: apmail-flex-dev-archive@www.apache.org Delivered-To: apmail-flex-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9AB93186E3 for ; Sun, 28 Jun 2015 19:06:48 +0000 (UTC) Received: (qmail 6910 invoked by uid 500); 28 Jun 2015 19:06:48 -0000 Delivered-To: apmail-flex-dev-archive@flex.apache.org Received: (qmail 6873 invoked by uid 500); 28 Jun 2015 19:06:48 -0000 Mailing-List: contact dev-help@flex.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flex.apache.org Delivered-To: mailing list dev@flex.apache.org Received: (qmail 6860 invoked by uid 99); 28 Jun 2015 19:06:47 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 28 Jun 2015 19:06:47 +0000 X-ASF-Spam-Status: No, hits=1.0 required=5.0 tests=FREEMAIL_REPLY,RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of webdoublefx@hotmail.com designates 157.55.2.97 as permitted sender) Received: from [157.55.2.97] (HELO DUB004-OMC4S22.hotmail.com) (157.55.2.97) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 28 Jun 2015 19:04:32 +0000 Received: from DUB118-W9 ([157.55.2.71]) by DUB004-OMC4S22.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.22751); Sun, 28 Jun 2015 12:06:20 -0700 X-TMN: [lNlFiZQdvQMEw+32KzAA6QayOw2OD70e] X-Originating-Email: [webdoublefx@hotmail.com] Message-ID: From: =?iso-8859-1?B?RnLpZOlyaWMgVEhPTUFT?= To: "dev@flex.apache.org" Subject: RE: [Externs] jasmine-2.0.js Date: Sun, 28 Jun 2015 20:06:19 +0100 Importance: Normal In-Reply-To: References: ,,,,,,,,,,,,,,,,,,,,, Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginalArrivalTime: 28 Jun 2015 19:06:20.0251 (UTC) FILETIME=[847A6AB0:01D0B1D5] X-Virus-Checked: Checked by ClamAV on apache.org > BTW=2C what should we do about code formatting=2C it seems my formatting = is=0A= > different then yours. I am using Eclipse right now since I don't have IJ= =0A= > setup for Falcon dev.=0A= =0A= I was wrong when I thought I had setup IJ correctly for Falcon=2C they are = still =0A= things it doesn't know how to do=2C for instance=2C share the generated cla= sses=0A= thru modules=2C therefore=2C it is not yet suitable for all parts of Falcon= =2C at the=0A= moment=2C I use tricks to be able to code with.=0A= =0A= What you can do is to send me your eclipse formatter property file.=0A= I will use it in IJ.=0A= =0A= Fr=E9d=E9ric THOMAS=0A= =0A= =0A= ----------------------------------------=0A= > Date: Sun=2C 28 Jun 2015 14:57:50 -0400=0A= > Subject: Re: [Externs] jasmine-2.0.js=0A= > From: teotigraphixllc@gmail.com=0A= > To: dev@flex.apache.org=0A= >=0A= > BTW=2C what should we do about code formatting=2C it seems my formatting = is=0A= > different then yours. I am using Eclipse right now since I don't have IJ= =0A= > setup for Falcon dev.=0A= >=0A= > Mike=0A= >=0A= > On Sun=2C Jun 28=2C 2015 at 2:55 PM=2C Michael Schmalle > wrote:=0A= >=0A= >> Yeah=2C I didn't want to go crazy with subclasses. Ideally class=2C func= tion=0A= >> and constant could share a "TopLevelReference" subclass of BaseReference= =0A= >> and you could put import logic there if you wanted to.=0A= >>=0A= >> Mike=0A= >>=0A= >> On Sun=2C Jun 28=2C 2015 at 2:51 PM=2C Fr=E9d=E9ric THOMAS =0A= >> wrote:=0A= >>=0A= >>>> Once you find instances of imports that need to be saves=2C your curre= nt=0A= >>>> context is already the ClassReference=2C so call classRef.addImport().= :)=0A= >>>=0A= >>> Btw=2C I will probably need to have a addImport() FunctionReference too= =2C=0A= >>> right ?=0A= >>>=0A= >>> Fr=E9d=E9ric THOMAS=0A= >>>=0A= >>>=0A= >>> ----------------------------------------=0A= >>>> Date: Sun=2C 28 Jun 2015 14:23:57 -0400=0A= >>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>> From: teotigraphixllc@gmail.com=0A= >>>> To: dev@flex.apache.org=0A= >>>>=0A= >>>> Kewl.=0A= >>>>=0A= >>>> I am going to be busy most of the week remodeling my mother in laws=0A= >>>> bathroom starting tomorrow. So if you want to try a new custom pass li= ke=0A= >>>> ResolveImportPass=2C go for it=2C I will just stay out of the way. I t= hink=0A= >>> it=0A= >>>> would be good for you. :) If not=2C no worries=2C you gave me the idea= . haha=0A= >>>>=0A= >>>> If you did=2C look at it like this=2C since all imports and logic ther= in are=0A= >>>> totally dependent on what the compiler actual saves into the model=2C= =0A= >>> logic=0A= >>>> says this needs to be the last or one of the last passes=2C from my=0A= >>>> perspective=2C it needs to be the last.=0A= >>>>=0A= >>>> If you make it the last=2C then this pass is not coupled to us fixing = bugs=0A= >>>> ahead of it. Say we find out we need to add another structure of AST= =0A= >>>> parsing for a node structure I havn't implemented yet=2C well we are s= afe.=0A= >>>>=0A= >>>> Why safe? Because in this import pass=2C you are using the MODEL=2C so= no=0A= >>> AST.=0A= >>>> Instead of worrying about resolving imports during AST traversal=2C yo= u=0A= >>> are=0A= >>>> using what is already in the container after all that complex parsing = is=0A= >>>> finished.=0A= >>>>=0A= >>>> So this pass=2C you would use your skills at knowing "what" in each=0A= >>> subclass=0A= >>>> of BaseReference could contain a type. Then write your logic pass to= =0A= >>>> traverse Classes=2C then into each classes members=2C then loop throug= h each=0A= >>>> member and analyze their types and do your import testing logic there.= =0A= >>>>=0A= >>>> Once you find instances of imports that need to be saves=2C your curre= nt=0A= >>>> context is already the ClassReference=2C so call classRef.addImport().= :)=0A= >>>>=0A= >>>> Mike=0A= >>>>=0A= >>>>=0A= >>>>=0A= >>>>=0A= >>>> On Sun=2C Jun 28=2C 2015 at 2:13 PM=2C Fr=E9d=E9ric THOMAS <=0A= >>> webdoublefx@hotmail.com>=0A= >>>> wrote:=0A= >>>>=0A= >>>>>> All I meant is that 75% of the time we would just want to save thing= s=0A= >>> in=0A= >>>>>> the model or a reference=2C such that you use addImport() during the= =0A= >>>>>> resolution. Then it keeps the emit() phase straight burn rubber and= =0A= >>> loop=0A= >>>>>> through all existing model structures=2C where imports would be just= a=0A= >>> list=0A= >>>>>> that emitImport() iterates through=2C no logic.=0A= >>>>>=0A= >>>>> Got it !=0A= >>>>>=0A= >>>>>> I AM NOT saying what you did was wrong=2C I am just offering a look = into=0A= >>>>> how=0A= >>>>>> I set it up. You know how I got this pattern? From my massive=0A= >>> mistakes in=0A= >>>>>> code generators of past. :) I realized that an emit phase needs to b= e=0A= >>>>>> stupid and not dependent on any type of intelligence=2C just needs t= o=0A= >>>>> create=0A= >>>>>> what already exists.=0A= >>>>>=0A= >>>>> I'm in a phase where I'm learning compiler things and indeed I will d= o=0A= >>>>> some mistakes=0A= >>>>> or I won't be as precise as you who have experience on it.=0A= >>>>> Therefore I can accept critics and learn from your explanations :-)= =0A= >>>>>=0A= >>>>>> This can also solve many problems at once. So I haven't got back int= o=0A= >>> the=0A= >>>>>> code BUT my intuition says we need a universal solution for any type= =0A= >>> of=0A= >>>>>> TYPE that is attached to a member=2C identifier such as a param type= =2C=0A= >>>>> return=0A= >>>>>> type=2C filed type=2C superclass and interface(already taken care of= using=0A= >>>>>> addImport()).=0A= >>>>>>=0A= >>>>>> See where I am coming from? We know that every type is eventually=0A= >>> going=0A= >>>>> to=0A= >>>>>> need to be scanned for imports and validated.=0A= >>>>>=0A= >>>>> Yes=2C actually=2C I was expecting to see a specific pass for that.= =0A= >>>>>=0A= >>>>>> Dude=2C I just don't want to come off bossy or condescending=2C I lo= ve you=0A= >>>>>> help. A lot can be added to this compiler that could be very=0A= >>> interesting.=0A= >>>>>> So having you understand my design intention is really important to= =0A= >>> me.=0A= >>>>> :)=0A= >>>>>=0A= >>>>> Don't worry=2C I don't think you are bossy or condescending Mike=2C I= 'm=0A= >>>>> reading you=0A= >>>>> and try to put in parallel the new informations you give and what I'v= e=0A= >>>>> seen in the code=0A= >>>>> for a better understanding=2C that's it.=0A= >>>>>=0A= >>>>> Cheers=2C=0A= >>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>=0A= >>>>>=0A= >>>>> ----------------------------------------=0A= >>>>>> Date: Sun=2C 28 Jun 2015 13:48:02 -0400=0A= >>>>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>>>> From: teotigraphixllc@gmail.com=0A= >>>>>> To: dev@flex.apache.org=0A= >>>>>>=0A= >>>>>> Fred you did an awesome job. :)=0A= >>>>>>=0A= >>>>>> All I meant is that 75% of the time we would just want to save thing= s=0A= >>> in=0A= >>>>>> the model or a reference=2C such that you use addImport() during the= =0A= >>>>>> resolution. Then it keeps the emit() phase straight burn rubber and= =0A= >>> loop=0A= >>>>>> through all existing model structures=2C where imports would be just= a=0A= >>> list=0A= >>>>>> that emitImport() iterates through=2C no logic.=0A= >>>>>>=0A= >>>>>> I AM NOT saying what you did was wrong=2C I am just offering a look = into=0A= >>>>> how=0A= >>>>>> I set it up. You know how I got this pattern? From my massive=0A= >>> mistakes in=0A= >>>>>> code generators of past. :) I realized that an emit phase needs to b= e=0A= >>>>>> stupid and not dependent on any type of intelligence=2C just needs t= o=0A= >>>>> create=0A= >>>>>> what already exists.=0A= >>>>>>=0A= >>>>>> This can also solve many problems at once. So I haven't got back int= o=0A= >>> the=0A= >>>>>> code BUT my intuition says we need a universal solution for any type= =0A= >>> of=0A= >>>>>> TYPE that is attached to a member=2C identifier such as a param type= =2C=0A= >>>>> return=0A= >>>>>> type=2C filed type=2C superclass and interface(already taken care of= using=0A= >>>>>> addImport()).=0A= >>>>>>=0A= >>>>>> See where I am coming from? We know that every type is eventually=0A= >>> going=0A= >>>>> to=0A= >>>>>> need to be scanned for imports and validated.=0A= >>>>>>=0A= >>>>>> Dude=2C I just don't want to come off bossy or condescending=2C I lo= ve you=0A= >>>>>> help. A lot can be added to this compiler that could be very=0A= >>> interesting.=0A= >>>>>> So having you understand my design intention is really important to= =0A= >>> me.=0A= >>>>> :)=0A= >>>>>>=0A= >>>>>> Mike=0A= >>>>>>=0A= >>>>>>=0A= >>>>>>=0A= >>>>>>=0A= >>>>>> On Sun=2C Jun 28=2C 2015 at 1:37 PM=2C Fr=E9d=E9ric THOMAS <=0A= >>>>> webdoublefx@hotmail.com>=0A= >>>>>> wrote:=0A= >>>>>>=0A= >>>>>>>> Fred pretty much iterated things correctly.=0A= >>>>>>>>=0A= >>>>>>>> The ResolvePackageNamePass I haven't to get back to. I was in the= =0A= >>>>> middle=0A= >>>>>>> of=0A= >>>>>>>> implementing something when I got it to work in another place.=0A= >>>>>>>>=0A= >>>>>>>> There is a pattern to how things are parsed so most of the time it= 's=0A= >>>>>>> better=0A= >>>>>>>> to set state as nodes/references are being added to the model. In= =0A= >>> the=0A= >>>>>>> case=0A= >>>>>>>> of imports=2C I don't see any problems right now with checking dur= ing=0A= >>> the=0A= >>>>>>>> emit phase but=2C if the model was more interactive during the=0A= >>> session=2C=0A= >>>>>>> this=0A= >>>>>>>> type of logic should happen during the resolve phase so the model= =0A= >>> with=0A= >>>>>>> it's=0A= >>>>>>>> references has a correct state if there is any logic happening=0A= >>> between=0A= >>>>>>> two=0A= >>>>>>>> references.=0A= >>>>>>>=0A= >>>>>>> Thanks for the explanation=2C I will take the time to do some debug= =0A= >>> spins=0A= >>>>> to=0A= >>>>>>> understand=0A= >>>>>>> when the phases are called=2C what they do and what classes are=0A= >>> involved.=0A= >>>>>>> Given it is a fairly small transpiler and despite the recursive=0A= >>> visitor=0A= >>>>>>> pattern=2C I guess I can do it.=0A= >>>>>>>=0A= >>>>>>>> How much are you working on right now Fred? I just ask because I= =0A= >>> don't=0A= >>>>>>> want=0A= >>>>>>>> to create any conflicts.=0A= >>>>>>>=0A= >>>>>>> Go ahead Mike=2C I'm done with that at the moment=2C I did my last= =0A= >>> cleanup=0A= >>>>>>> already.=0A= >>>>>>> Anyway=2C better I work on a branch and commit the branch instead f= or=0A= >>>>> review=0A= >>>>>>> next time.=0A= >>>>>>>=0A= >>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>=0A= >>>>>>>=0A= >>>>>>> ----------------------------------------=0A= >>>>>>>> Date: Sun=2C 28 Jun 2015 13:23:15 -0400=0A= >>>>>>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>>>>>> From: teotigraphixllc@gmail.com=0A= >>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>=0A= >>>>>>>> Fred pretty much iterated things correctly.=0A= >>>>>>>>=0A= >>>>>>>> The ResolvePackageNamePass I haven't to get back to. I was in the= =0A= >>>>> middle=0A= >>>>>>> of=0A= >>>>>>>> implementing something when I got it to work in another place.=0A= >>>>>>>>=0A= >>>>>>>> There is a pattern to how things are parsed so most of the time it= 's=0A= >>>>>>> better=0A= >>>>>>>> to set state as nodes/references are being added to the model. In= =0A= >>> the=0A= >>>>>>> case=0A= >>>>>>>> of imports=2C I don't see any problems right now with checking dur= ing=0A= >>> the=0A= >>>>>>>> emit phase but=2C if the model was more interactive during the=0A= >>> session=2C=0A= >>>>>>> this=0A= >>>>>>>> type of logic should happen during the resolve phase so the model= =0A= >>> with=0A= >>>>>>> it's=0A= >>>>>>>> references has a correct state if there is any logic happening=0A= >>> between=0A= >>>>>>> two=0A= >>>>>>>> references.=0A= >>>>>>>>=0A= >>>>>>>> How much are you working on right now Fred? I just ask because I= =0A= >>> don't=0A= >>>>>>> want=0A= >>>>>>>> to create any conflicts.=0A= >>>>>>>>=0A= >>>>>>>> Mike=0A= >>>>>>>> .=0A= >>>>>>>>=0A= >>>>>>>> On Sat=2C Jun 27=2C 2015 at 5:58 PM=2C Michael Schmalle <=0A= >>>>>>> teotigraphixllc@gmail.com=0A= >>>>>>>>> wrote:=0A= >>>>>>>>=0A= >>>>>>>>> Hey Fred=2C I was out all day. I will have some time in the morni= ng=0A= >>> to=0A= >>>>>>> look=0A= >>>>>>>>> at what you did and comment. :)=0A= >>>>>>>>>=0A= >>>>>>>>> Mike=0A= >>>>>>>>>=0A= >>>>>>>>> On Sat=2C Jun 27=2C 2015 at 5:27 PM=2C Fr=E9d=E9ric THOMAS <=0A= >>>>>>> webdoublefx@hotmail.com>=0A= >>>>>>>>> wrote:=0A= >>>>>>>>>=0A= >>>>>>>>>> Just to explain what I did=2C especially to folks who would like= to=0A= >>> get=0A= >>>>>>>>>> their hand dirty on the compiler but like me=2C don't know how i= t=0A= >>> works=0A= >>>>>>> :-)=0A= >>>>>>>>>>=0A= >>>>>>>>>> I was adding jasmine-2.0.js [1]=2C a file that contains only jsD= oc=0A= >>>>>>>>>> (parameters and return type descriptions) and declarations=2C no= =0A= >>>>>>>>>> implementations.=0A= >>>>>>>>>> When I say "adding jasmine-2.0.js" I mean=2C transpile this .js= =0A= >>> file to=0A= >>>>>>> .as=0A= >>>>>>>>>> and then compile it to a .swc.=0A= >>>>>>>>>>=0A= >>>>>>>>>> The transpilation part is done by EXTERNC=0A= >>>>>>>>>>=0A= >>>>>>>>>> You call it like that:=0A= >>>>>>>>>>=0A= >>>>>>>>>> >>>>>>>>> failonerror=3D"false">=0A= >>>>>>>>>> =0A= >>>>>>>>>> =0A= >>>>>>>>>> >>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> value=3D"-load-config=3D${basedir}/externs/jasmine/jasmine-compile-conf= ig.xml"=0A= >>>>>>>>>> />=0A= >>>>>>>>>>=0A= >>>>>>>>>> In the jasmine-compile-config.xml=2C you can exclude classes and= =0A= >>>>> member=2C=0A= >>>>>>>>>> for example=2C in the jasmine.Spec class=2C I excluded the varia= ble=0A= >>>>>>> $injector=0A= >>>>>>>>>> as its type was coming from the Angular library that is not yet= =0A= >>>>>>> transpiled.=0A= >>>>>>>>>>=0A= >>>>>>>>>> =0A= >>>>>>>>>> jasmine.Spec=0A= >>>>>>>>>> $injector=0A= >>>>>>>>>> =0A= >>>>>>>>>>=0A= >>>>>>>>>> You can also exclude classes and functions.=0A= >>>>>>>>>>=0A= >>>>>>>>>> The compile part is done by the falcon compc as follow:=0A= >>>>>>>>>>=0A= >>>>>>>>>> >>>> jar=3D"${basedir}/compiler/generated/dist/sdk/lib/falcon-compc.jar"= =0A= >>>>>>>>>> fork=3D"true"=0A= >>>>>>>>>> failonerror=3D"true">=0A= >>>>>>>>>> =0A= >>>>>>>>>> =0A= >>>>>>>>>> >>>>>>>>>=0A= >>> value=3D"-load-config=3D${basedir}/externs/jasmine/compile-config.xml" = />=0A= >>>>>>>>>> >>>>>>>>>=0A= >>> value=3D"-output=3D${basedir}/externs/jasmine/out/bin/jasmine-2.0.swc" = />=0A= >>>>>>>>>> =0A= >>>>>>>>>>=0A= >>>>>>>>>> The problem was that this last part was failing with an NPE a=0A= >>> Type of=0A= >>>>>>>>>> something:=0A= >>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMember= Access(TypeScope.java:344)=0A= >>>>>>>>>>=0A= >>>>>>>>>> Even looking closely at the code=2C I didn't get why it was fail= ing=0A= >>> but=0A= >>>>>>> for=0A= >>>>>>>>>> sure=2C because it was trying to compile one of the transpiled .= as=0A= >>>>> file=2C=0A= >>>>>>> this=0A= >>>>>>>>>> transpiled code was wrong.=0A= >>>>>>>>>> Looking at those .as=2C it was easy to see that some import were= =0A= >>>>> missing.=0A= >>>>>>>>>>=0A= >>>>>>>>>> So=2C why the 2 others externs (js and jquery) had no issues ?= =0A= >>>>>>>>>> It is always surprising to see something working on all the thin= gs=0A= >>>>>>> except=0A= >>>>>>>>>> of yours=2C but it can help you too :-)=0A= >>>>>>>>>>=0A= >>>>>>>>>> So=2C I've been looking at those other transpiled .as files from= =0A= >>>>> existing=0A= >>>>>>>>>> externs to see if they had imports and they were some.=0A= >>>>>>>>>> I then created a mini jasmine.js containing only the faulty case= =0A= >>>>> only=2C=0A= >>>>>>>>>> that=2C from what I've been able to determinate=2C was that the = import=0A= >>>>> was=0A= >>>>>>> not=0A= >>>>>>>>>> generated when a static function had a return type of a class=0A= >>> created=0A= >>>>>>> via a=0A= >>>>>>>>>> function constructor=2C so=2C I filled this mini jasmine.js with= the=0A= >>>>>>> equivalent=0A= >>>>>>>>>> of a static function like this:=0A= >>>>>>>>>>=0A= >>>>>>>>>> /**=0A= >>>>>>>>>> * @return {!jasmine.Clock}=0A= >>>>>>>>>> */=0A= >>>>>>>>>> jasmine.clock =3D function() {}=3B=0A= >>>>>>>>>>=0A= >>>>>>>>>> Which should transpile in AS3=2C something like:=0A= >>>>>>>>>>=0A= >>>>>>>>>> import jasmine.Clock=3B=0A= >>>>>>>>>> public static function clock():Clock {}=0A= >>>>>>>>>>=0A= >>>>>>>>>> and a function constructor like this:=0A= >>>>>>>>>>=0A= >>>>>>>>>> /** @constructor */=0A= >>>>>>>>>> jasmine.Clock =3D function() {}=3B=0A= >>>>>>>>>>=0A= >>>>>>>>>> which transpile:=0A= >>>>>>>>>>=0A= >>>>>>>>>> package jasmine {=0A= >>>>>>>>>> public class Clock {}=0A= >>>>>>>>>> }=0A= >>>>>>>>>>=0A= >>>>>>>>>> Created a test class based on those Mike created for the previou= s=0A= >>>>>>> externs=0A= >>>>>>>>>> doing:=0A= >>>>>>>>>>=0A= >>>>>>>>>> // jasmine=2C the main jasmine class.=0A= >>>>>>>>>> ClassReference jasmine =3D model.getClassReference("jasmine")=3B= =0A= >>>>>>>>>> assertNotNull(jasmine)=3B=0A= >>>>>>>>>>=0A= >>>>>>>>>> assertTrue(jasmine.hasImport("jasmine.Clock"))=3B=0A= >>>>>>>>>>=0A= >>>>>>>>>> The hasImport method didn't exist on ClassReference but it was a= =0A= >>>>>>>>>> addImport()=2C I follow to where it was called in=0A= >>> ResolvePackagesPass=0A= >>>>>>> hoping=0A= >>>>>>>>>> to find a missing case but after debug spin I wasn't able to do= =0A= >>> what=0A= >>>>> I=0A= >>>>>>>>>> expected=2C I'm not sure I understood all the logic in this clas= s=0A= >>> but=0A= >>>>> it=0A= >>>>>>>>>> looked like the Node of my return type was never visited and=0A= >>>>> therefore=0A= >>>>>>>>>> wasn't able to add my import here.=0A= >>>>>>>>>>=0A= >>>>>>>>>> But wait=2C in the ClassReference=2C I have a=0A= >>>>>>>>>>=0A= >>>>>>>>>> public MethodReference addMethod(Node node=2C String functionNam= e=2C=0A= >>>>>>>>>> JSDocInfo comment=2C boolean isStatic)=0A= >>>>>>>>>>=0A= >>>>>>>>>> To me it would be enough to add the import to the list of import= s=0A= >>> to=0A= >>>>> be=0A= >>>>>>>>>> emitted when the MethodReference is to be added=2C I just had to= =0A= >>>>>>> determinate=0A= >>>>>>>>>> if the return type given in the jsDoc was not from the current= =0A= >>>>>>> package=2C the=0A= >>>>>>>>>> given method not excluded=2C the given return type neither !=0A= >>>>>>>>>>=0A= >>>>>>>>>> My test was passing was I was able to compile with this new code= =0A= >>> the=0A= >>>>>>> old=0A= >>>>>>>>>> externs.=0A= >>>>>>>>>>=0A= >>>>>>>>>> The only thing I had to do to finish to compile the jasmine exte= rn=0A= >>>>> was=0A= >>>>>>> to=0A= >>>>>>>>>> emit the imports for the global functions too as they shown to b= e=0A= >>>>>>> faulty=0A= >>>>>>>>>> for the same reasons.=0A= >>>>>>>>>>=0A= >>>>>>>>>> Mike will probably tell me now where my logic was wrong now :-)= =0A= >>>>>>>>>>=0A= >>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>> From: webdoublefx@hotmail.com=0A= >>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>> Date: Sat=2C 27 Jun 2015 20:43:43 +0100=0A= >>>>>>>>>>>=0A= >>>>>>>>>>> Ok=2C done !=0A= >>>>>>>>>>>=0A= >>>>>>>>>>> I forgot to uncomment the externc build of jasmine and print th= e=0A= >>>>>>> global=0A= >>>>>>>>>> function imports !=0A= >>>>>>>>>>>=0A= >>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>=0A= >>>>>>>>>>>=0A= >>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>> From: webdoublefx@hotmail.com=0A= >>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>> Date: Sat=2C 27 Jun 2015 20:12:16 +0100=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>>> I pushed the changes which are ready to be reviewed.=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>> oups=2C hold on=2C I had some things commented that hidden oth= er=0A= >>>>>>> problems=2C=0A= >>>>>>>>>> I will continue on it.=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>> From: webdoublefx@hotmail.com=0A= >>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>> Date: Sat=2C 27 Jun 2015 18:31:32 +0100=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>> Hi Mike=2C=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>> I pushed the changes which are ready to be reviewed.=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>> Note: The jasmine-2.0.js is not committed as it should be=0A= >>>>> downloaded=0A= >>>>>>>>>> with the unpack-externs target of the download.xml=2C I followed= the=0A= >>>>>>> model.=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>> Thanks=2C=0A= >>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>>> Date: Sat=2C 27 Jun 2015 05:31:50 -0400=0A= >>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>>> From: teotigraphixllc@gmail.com=0A= >>>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>> I just noticed you said today or tomorrow=2C whatever man.= =0A= >>> doesn't=0A= >>>>>>>>>> matter.=0A= >>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>> Mike=0A= >>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>> On Sat=2C Jun 27=2C 2015 at 5:17 AM=2C Michael Schmalle <=0A= >>>>>>>>>> teotigraphixllc@gmail.com=0A= >>>>>>>>>>>>>>> wrote:=0A= >>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>> Well its the practice. I know the pattern I am using so if = I=0A= >>>>> have=0A= >>>>>>> to=0A= >>>>>>>>>>>>>>> adjust it to fit I will. You can tell that with AST type=0A= >>> stuff=2C=0A= >>>>> it=0A= >>>>>>>>>> has to=0A= >>>>>>>>>>>>>>> follow a specific pattern or everything turns to crap when= =0A= >>>>> trying=0A= >>>>>>>>>> to add=0A= >>>>>>>>>>>>>>> stuff down the road.=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>> Commit it sooner than later as I have a couple hours to=0A= >>> check it=0A= >>>>>>>>>> out this=0A= >>>>>>>>>>>>>>> morning.=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>> Mike=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>> On Sat=2C Jun 27=2C 2015 at 3:15 AM=2C Fr=E9d=E9ric THOMAS = <=0A= >>>>>>>>>> webdoublefx@hotmail.com>=0A= >>>>>>>>>>>>>>> wrote:=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>> Hi Mike=2C=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>> I can now compile jasmine=2C I'm not sure my fix is very c= lean=0A= >>>>> but=0A= >>>>>>> it=0A= >>>>>>>>>>>>>>>> works=2C I've been able to compile all the externs with.= =0A= >>>>>>>>>>>>>>>> I will commit it later today or tomorrow as I need to clea= n=0A= >>> a=0A= >>>>> bit=0A= >>>>>>>>>> before=0A= >>>>>>>>>>>>>>>> and it would be nice if you can review it.=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>> Thanks=2C=0A= >>>>>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>>>>>> From: webdoublefx@hotmail.com=0A= >>>>>>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>>>>>> Date: Fri=2C 26 Jun 2015 22:43:30 +0100=0A= >>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>> Hey Mike=2C it looks like "import jasmine.Clock=3B" is mi= ssing=0A= >>> in=0A= >>>>>>> the=0A= >>>>>>>>>>>>>>>> generated jasmine.as=2C that's it !=0A= >>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>>>>>>> From: webdoublefx@hotmail.com=0A= >>>>>>>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>>>>>>> Date: Fri=2C 26 Jun 2015 22:26:32 +0100=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> HAHA=2C ah that is a hard one man=2C thanks for the off= er=0A= >>> but I=0A= >>>>>>>>>> think I am=0A= >>>>>>>>>>>>>>>>>>> going to need to get this one. There are a couple place= s=0A= >>> it=0A= >>>>>>>>>> could be=0A= >>>>>>>>>>>>>>>> though=0A= >>>>>>>>>>>>>>>>>>> if you are curious.=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> First you really need to understand the problem=2C I am= =0A= >>> typing=0A= >>>>>>>>>> this=0A= >>>>>>>>>>>>>>>> stuff in=0A= >>>>>>>>>>>>>>>>>>> between installing a bathroom vanity and sink=2C so I= =0A= >>> haven't=0A= >>>>>>>>>> looked at=0A= >>>>>>>>>>>>>>>> the=0A= >>>>>>>>>>>>>>>>>>> code yet. :)=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quit= e=0A= >>>>> know=0A= >>>>>>>>>> the=0A= >>>>>>>>>>>>>>>> problem=0A= >>>>>>>>>>>>>>>>>>> yet.=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>> Ok=2C I will check your solution :-)=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>>>>>>>> Date: Fri=2C 26 Jun 2015 16:59:58 -0400=0A= >>>>>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>>>>>>>> From: teotigraphixllc@gmail.com=0A= >>>>>>>>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> On Fri=2C Jun 26=2C 2015 at 4:39 PM=2C Fr=E9d=E9ric THO= MAS <=0A= >>>>>>>>>>>>>>>> webdoublefx@hotmail.com>=0A= >>>>>>>>>>>>>>>>>>> wrote:=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Yeah=2C this "jasmine.Clock"=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to= =0A= >>>>>>> resolve=0A= >>>>>>>>>> a=0A= >>>>>>>>>>>>>>>> member=0A= >>>>>>>>>>>>>>>>>>>>> expression and it can't resolve it.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You= =0A= >>> are=0A= >>>>>>>>>> using the=0A= >>>>>>>>>>>>>>>>>>>> extern=0A= >>>>>>>>>>>>>>>>>>>>> in the GCC project correct?=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>> Yes=2C=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> https://raw.githubusercontent.com/google/closure-compiler/master/contri= b/externs/jasmine-2.0.js=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> If so=2C I need to take a look at it.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Everyone=2C I did one pass and tests on packages and= =0A= >>> class=0A= >>>>>>>>>> creation=2C=0A= >>>>>>>>>>>>>>>> so=0A= >>>>>>>>>>>>>>>>>>>> these=0A= >>>>>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type=0A= >>> resolver=0A= >>>>> is=0A= >>>>>>>>>>>>>>>> "asked" to=0A= >>>>>>>>>>>>>>>>>>>> do=0A= >>>>>>>>>>>>>>>>>>>>> more work then my initial implementation.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Make sense?=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>> Well=2C kind of :-)=0A= >>>>>>>>>>>>>>>>>>>> What classes would you check for this ?=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> HAHA=2C ah that is a hard one man=2C thanks for the off= er=0A= >>> but I=0A= >>>>>>>>>> think I am=0A= >>>>>>>>>>>>>>>>>>> going to need to get this one. There are a couple place= s=0A= >>> it=0A= >>>>>>>>>> could be=0A= >>>>>>>>>>>>>>>> though=0A= >>>>>>>>>>>>>>>>>>> if you are curious.=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> First you really need to understand the problem=2C I am= =0A= >>> typing=0A= >>>>>>>>>> this=0A= >>>>>>>>>>>>>>>> stuff in=0A= >>>>>>>>>>>>>>>>>>> between installing a bathroom vanity and sink=2C so I= =0A= >>> haven't=0A= >>>>>>>>>> looked at=0A= >>>>>>>>>>>>>>>> the=0A= >>>>>>>>>>>>>>>>>>> code yet. :)=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quit= e=0A= >>>>> know=0A= >>>>>>>>>> the=0A= >>>>>>>>>>>>>>>> problem=0A= >>>>>>>>>>>>>>>>>>> yet.=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>> Mike=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>> Thanks=2C=0A= >>>>>>>>>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>> ----------------------------------------=0A= >>>>>>>>>>>>>>>>>>>>> Date: Fri=2C 26 Jun 2015 16:32:16 -0400=0A= >>>>>>>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js=0A= >>>>>>>>>>>>>>>>>>>>> From: teotigraphixllc@gmail.com=0A= >>>>>>>>>>>>>>>>>>>>> To: dev@flex.apache.org=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Yeah=2C this "jasmine.Clock"=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to= =0A= >>>>>>> resolve=0A= >>>>>>>>>> a=0A= >>>>>>>>>>>>>>>> member=0A= >>>>>>>>>>>>>>>>>>>>> expression and it can't resolve it.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You= =0A= >>> are=0A= >>>>>>>>>> using the=0A= >>>>>>>>>>>>>>>>>>>> extern=0A= >>>>>>>>>>>>>>>>>>>>> in the GCC project correct?=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> If so=2C I need to take a look at it.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Everyone=2C I did one pass and tests on packages and= =0A= >>> class=0A= >>>>>>>>>> creation=2C=0A= >>>>>>>>>>>>>>>> so=0A= >>>>>>>>>>>>>>>>>>>> these=0A= >>>>>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type=0A= >>> resolver=0A= >>>>> is=0A= >>>>>>>>>>>>>>>> "asked" to=0A= >>>>>>>>>>>>>>>>>>>> do=0A= >>>>>>>>>>>>>>>>>>>>> more work then my initial implementation.=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Make sense?=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> Mike=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>> On Fri=2C Jun 26=2C 2015 at 3:27 PM=2C Fr=E9d=E9ric T= HOMAS <=0A= >>>>>>>>>>>>>>>>>>>> webdoublefx@hotmail.com>=0A= >>>>>>>>>>>>>>>>>>>>> wrote:=0A= >>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> Hi Mike=2C=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> Any idea why ?=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>> U:\sources\asf\flex\falcon\externs\jasmine\out\as\classes\=0A= >>>>>>>>>>>>>>>> jasmine.as:26=0A= >>>>>>>>>>>>>>>>>>>>>> Erreur interne : java.lang.NullPointerException=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMember= Access(TypeScope.java:344)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.ScopeView.getPropertyForMember= Access(ScopeView.java:81)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASS= cope.java:879)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASS= cope.java:841)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASS= cope.java:760)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolveMemberR= ef(IdentifierNode.java:829)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolve(Identi= fierNode.java:377)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.tree.as.IdentifierNode.getMName(Ident= ifierNode.java:432)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode.ge= tMName(MemberAccessExpressionNode.java:158)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.as.codegen.ABCGeneratingReducer.dotte= dName(ABCGeneratingReducer.java:840)=0A= >>>>>>>>>>>>>>>>>>>>>> at=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>> org.apache.flex.compiler.internal.as.codegen.CmcEmitter.action_321(CmcE= mitter.java:5236)=0A= >>>>>>>>>>>>>>>>>>>>>> ...=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { retur= n=0A= >>>>>>> null=3B }=0A= >>>>>>>>>>>>>>>>>>>>>> ^=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>> In the jasmine extern file=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @return {!jasmine.Clock}=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.clock =3D function() {}=3B=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /** @constructor */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.Clock =3D function() {}=3B=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /** */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.install =3D function() {}=3B= =0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /** */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.uninstall =3D function() {}= =3B=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /** @param {number} ms */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.tick =3D function(ms) {}=3B= =0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /** @param {!Date} date */=0A= >>>>>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.mockDate =3D function(date) = {}=3B=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>> In jasmine.as=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> * @returns {jasmine.Clock}=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { retur= n=0A= >>>>>>> null=3B }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>> clock.as=0A= >>>>>>>>>>>>>>>>>>>>>> -----------------------------=0A= >>>>>>>>>>>>>>>>>>>>>> package jasmine {=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public class Clock {=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public function Clock() {=0A= >>>>>>>>>>>>>>>>>>>>>> super()=3B=0A= >>>>>>>>>>>>>>>>>>>>>> }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc.=0A= >>>>>>>>>>>>>>>>>>>>>> *=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public function install():void { }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @param ms [number]=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public function tick(ms:Number):void { }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc.=0A= >>>>>>>>>>>>>>>>>>>>>> *=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public function uninstall():void { }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> /**=0A= >>>>>>>>>>>>>>>>>>>>>> * @param date [Date]=0A= >>>>>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0]=0A= >>>>>>>>>>>>>>>>>>>>>> */=0A= >>>>>>>>>>>>>>>>>>>>>> public function mockDate(date:Date):void { }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> }=0A= >>>>>>>>>>>>>>>>>>>>>> }=0A= >>>>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>>> Thanks=2C=0A= >>>>>>>>>>>>>>>>>>>>>> Fr=E9d=E9ric THOMAS=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>>>=0A= >>>>>>>>>>>>>=0A= >>>>>>>>>>>>=0A= >>>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>>>>=0A= >>>>>>>>>=0A= >>>>>>>>>=0A= >>>>>>>=0A= >>>>>>>=0A= >>>>>=0A= >>>>>=0A= >>>=0A= >>>=0A= >>=0A= >>=0A= =