BTW, this goes for Constant, Function and Class/Interface top level refs.
You visit each one of these references from the model and go into the class
members or function/constant signatures.

Mike

On Sun, Jun 28, 2015 at 2:23 PM, Michael Schmalle <teotigraphix...@gmail.com
> wrote:

> 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