flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Schmalle <teotigraphix...@gmail.com>
Subject Re: [Externs] jasmine-2.0.js
Date Sun, 28 Jun 2015 18:55:07 GMT
Yeah, I didn't want to go crazy with subclasses. Ideally class, function
and constant could share a "TopLevelReference" subclass of BaseReference
and you could put import logic there if you wanted to.

Mike

On Sun, Jun 28, 2015 at 2:51 PM, Frédéric THOMAS <webdoublefx@hotmail.com>
wrote:

> > Once you find instances of imports that need to be saves, your current
> > context is already the ClassReference, so call classRef.addImport(). :)
>
> Btw, I will probably need to have a addImport() FunctionReference too,
> right ?
>
> Frédéric THOMAS
>
>
> ----------------------------------------
> > Date: Sun, 28 Jun 2015 14:23:57 -0400
> > Subject: Re: [Externs] jasmine-2.0.js
> > From: teotigraphixllc@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 <
> webdoublefx@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: teotigraphixllc@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 <
> >> webdoublefx@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: teotigraphixllc@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 <
> >>>> teotigraphixllc@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 <
> >>>> webdoublefx@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: webdoublefx@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: webdoublefx@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: webdoublefx@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: teotigraphixllc@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 <
> >>>>>>> teotigraphixllc@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 <
> >>>>>>> webdoublefx@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: webdoublefx@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: webdoublefx@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: teotigraphixllc@gmail.com
> >>>>>>>>>>>>>>>> To: dev@flex.apache.org
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Fri, Jun 26, 2015 at 4:39 PM, Frédéric THOMAS <
> >>>>>>>>>>>>> webdoublefx@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: teotigraphixllc@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 <
> >>>>>>>>>>>>>>>>> webdoublefx@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
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message