flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frédéric THOMAS <webdoubl...@hotmail.com>
Subject RE: [Externs] jasmine-2.0.js
Date Sun, 28 Jun 2015 18:51:44 GMT
> 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
View raw message