Fred,

I am still finishing up my wife's moms bathroom renovation, I am covered in
paint right now so it will be a bit before I can get to looking at your
branch.

Mike

On Mon, Jul 6, 2015 at 6:48 PM, Michael Schmalle <teotigraphix...@gmail.com>
wrote:

>
>
> On Mon, Jul 6, 2015 at 11:44 AM, Frédéric THOMAS <webdoubl...@hotmail.com>
> wrote:
>
>> Also I'm trying to write tests for this pass and I've got something that
>> doesn't pass, why the "bar" parameter is consider as optional in the
>> collectImport.CollectImports constructor ?
>> see the emmitted "@param bar [(foo.Bar|null)] ",  why not "@param bar
>> {foo.Bar} " ?
>>
>
>
> It's because ? means OR NULL in externs. We are using the annotation
> resolver which passes back implicit meaning, so it's not saying it's
> optional it's saying it CAN be null, but something MUST be passed.
>
> So anything that is;
>
> @param bar {foo.Bar}
>
> is actually
>
> @param bar {foo.Bar?}
>
> If you use !, it means it cannot be null, a value must be passed that is
> not null.
>
> Mike
>
>
>>
>> /**
>>  * @constructor
>>  * @extends {superClasses.Import}
>>  * @param {foo.Bar} bar
>>  * @param {number} value
>>  */
>> collectImport.CollectImports = function(bar, value) {};
>>
>> EMMITTED TO:
>>
>> package collectImport {
>>
>> import superClasses.Import;
>>
>> /**
>>  * @see [collect_import]
>>  */
>> public class CollectImports extends superClasses.Import {
>>
>>     /**
>>      * @param bar [(foo.Bar|null)]
>>      * @param value [number]
>>      * @see [collect_import]
>>      */
>>     public function CollectImports(bar:foo.Bar, value:Number) {
>>         super();
>>     }
>>
>> Thanks,
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>> > From: webdoubl...@hotmail.com
>> > To: dev@flex.apache.org
>> > Subject: RE: [Externs] jasmine-2.0.js
>> > Date: Mon, 6 Jul 2015 00:18:10 +0100
>> >
>> >> 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(). :)
>> >
>> >
>> > You can review the add-CollectImportPass branch before I merge it when
>> you have a chance.
>> > Thanks,
>> > 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
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>
>> >>>>>
>> >>>
>> >>>
>> >
>>
>>
>

Reply via email to