> 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.

Thanks for the precision, actually, I forgot to check the constructors in more 
:P
So, better I finish to write the tests, manage the UnionType, etc.. and come 
back to you.

Happy painting ! ;-)
Frédéric THOMAS


----------------------------------------
> Date: Mon, 6 Jul 2015 18:48:03 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphix...@gmail.com
> To: dev@flex.apache.org
>
> 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