You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Frédéric THOMAS <we...@hotmail.com> on 2015/06/26 21:27:13 UTC

[Externs] jasmine-2.0.js

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 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
+             Manage the case where a custom class belongs
+             to the top level package and needs to be imported
+             in a sub-package as I don't know how to deal with
+             builtin classes.

Can you explain this a bit more? I am not understanding the problem, if a
class is package level, why would it need to be imported into a sub package?

Mike




On Sun, Jun 28, 2015 at 1:23 PM, Michael Schmalle <teotigraphixllc@gmail.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.
>
> 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
>>> >>>>>>>>>>
>>> >>>>>>>>>>
>>> >>>>>>>>
>>> >>>>>>>
>>> >>>>>>
>>> >>>>>>
>>> >>>>>
>>> >>>>>
>>> >>>
>>> >>
>>> >
>>>
>>>
>>
>>
>

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
By the way, I know you see visit a lot but this implementation is not
recursive in the way FalconJX is.

The main loop iterates over a SCRIPT node's children 1 level deep. When
certain node structures are found in the child, a visit*() method is called
to visit that child node. There isn't anywhere in the code that I am
recursing the AST.

In the original Rhino implementation I wrote it was recursive and a
freaking nightmare for what I was trying to do. When I adopted the Closure
Compiler's AST and compiler passes, I realized that I did not need
recursion into the AST, only to iterate over the SCRIPT children.

So the way it works it, each compiler pass happens in order it's defined. I
am looking at them now I think I can either remove one or refactor.

I wrote these on the seat of my pants. :)

Mike






On Sun, Jun 28, 2015 at 1:48 PM, Michael Schmalle <teotigraphixllc@gmail.com
> wrote:

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

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <teotigraphixllc@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 <we...@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
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>
>> >>
>>
>>
>
>

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
On Sun, Jun 28, 2015 at 3:57 PM, Frédéric THOMAS <we...@hotmail.com>
wrote:

> I just found that
> http://stackoverflow.com/questions/881515/how-do-i-declare-a-namespace-in-javascript
>
> There are I guess all the ways to create them.
>

haha I looked at that very same thread a couple weeks ago.

There is a way that is almost standard in extern files though.

var foo = {};

foo.bar = {};

foo.bar = {la:1, le:2}; // could be a class


It gets weird with typedefs and stuff as well.

Mike



>
> Frédéric THOMAS
>
>
> ----------------------------------------
> > Date: Sun, 28 Jun 2015 15:51:45 -0400
> > Subject: Re: [Externs] jasmine-2.0.js
> > From: teotigraphixllc@gmail.com
> > To: dev@flex.apache.org
> >
> > On Sun, Jun 28, 2015 at 3:49 PM, Frédéric THOMAS <
> webdoublefx@hotmail.com>
> > wrote:
> >
> >>> My intuition is telling me I am not handling them correctly for most
> >> cases,
> >>> things work right now but it would be better if we had some test .js
> >> files
> >>> that had all types of package/namespace creation structures.
> >>
> >> Like what ?
> >>
> >>
> > Well if I had complete tests I could tell you. ;-)
> >
> > Mike
> >
> >
> >
> >> Frédéric THOMAS
> >>
> >>
> >> ----------------------------------------
> >>> Date: Sun, 28 Jun 2015 15:33:42 -0400
> >>> Subject: Re: [Externs] jasmine-2.0.js
> >>> From: teotigraphixllc@gmail.com
> >>> To: dev@flex.apache.org
> >>>
> >>> And... haha packages are really sketchy. We need more package type test
> >>> from the externs that use them.
> >>>
> >>> My intuition is telling me I am not handling them correctly for most
> >> cases,
> >>> things work right now but it would be better if we had some test .js
> >> files
> >>> that had all types of package/namespace creation structures.
> >>>
> >>> Mike
> >>>
> >>> On Sun, Jun 28, 2015 at 3:28 PM, Michael Schmalle <
> >> teotigraphixllc@gmail.com
> >>>> wrote:
> >>>
> >>>> Fred, what I plan on doing since you are going to be working with the
> >> code
> >>>> is start to test all the base externs we have and find bugs or non
> >>>> implemented things. I will probably just add the things I find in JIRA
> >>>> throughout the week during my little free time.
> >>>>
> >>>> I'm not going to change any code, just add unit tests. One other thing
> >>>> that I havn't got to is type unit tests. I really just hacked the type
> >>>> resolving, yeah it works but I see ways in the future of doing some
> >> stuff
> >>>> with maybe function callbacks and if I get the type tests down well, I
> >> will
> >>>> feel more comfortable trying to parse the harder externs out there.
> >>>>
> >>>> Also, we should allow a way to parse those generated externs just for
> >>>> stubs but, they have nested {} object creation which the parser
> ignores
> >>>> right now, so that is another thing that can be tested and
> implemented.
> >>>>
> >>>> Mike
> >>>>
> >>>>
> >>>>
> >>>> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <
> >> webdoublefx@hotmail.com>
> >>>> wrote:
> >>>>
> >>>>> Thanks !
> >>>>>
> >>>>> Frédéric THOMAS
> >>>>>
> >>>>>
> >>>>> ----------------------------------------
> >>>>>> Date: Sun, 28 Jun 2015 15:11:20 -0400
> >>>>>> Subject: Re: [Externs] jasmine-2.0.js
> >>>>>> From: teotigraphixllc@gmail.com
> >>>>>> To: dev@flex.apache.org
> >>>>>>
> >>>>>> Yeah I know, sent to your hotmail.
> >>>>>>
> >>>>>> Mike
> >>>>>>
> >>>>>> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
> >>>>> webdoublefx@hotmail.com>
> >>>>>> wrote:
> >>>>>>
> >>>>>>>> What you can do is to send me your eclipse formatter property
> file.
> >>>>>>>> I will use it in IJ.
> >>>>>>>
> >>>>>>> I meant export your formatter profiles in xml
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Frédéric THOMAS
> >>>>>>>
> >>>>>>>
> >>>>>>> ----------------------------------------
> >>>>>>>> From: webdoublefx@hotmail.com
> >>>>>>>> To: dev@flex.apache.org
> >>>>>>>> Subject: RE: [Externs] jasmine-2.0.js
> >>>>>>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
> >>>>>>>>
> >>>>>>>>> BTW, what should we do about code formatting, it seems my
> >> formatting
> >>>>> is
> >>>>>>>>> different then yours. I am using Eclipse right now since I don't
> >>>>> have IJ
> >>>>>>>>> setup for Falcon dev.
> >>>>>>>>
> >>>>>>>> I was wrong when I thought I had setup IJ correctly for Falcon,
> they
> >>>>> are
> >>>>>>> still
> >>>>>>>> things it doesn't know how to do, for instance, share the
> generated
> >>>>>>> classes
> >>>>>>>> thru modules, therefore, it is not yet suitable for all parts of
> >>>>> Falcon,
> >>>>>>> at the
> >>>>>>>> moment, I use tricks to be able to code with.
> >>>>>>>>
> >>>>>>>> What you can do is to send me your eclipse formatter property
> file.
> >>>>>>>> I will use it in IJ.
> >>>>>>>>
> >>>>>>>> Frédéric THOMAS
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> ----------------------------------------
> >>>>>>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
> >>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js
> >>>>>>>>> From: teotigraphixllc@gmail.com
> >>>>>>>>> To: dev@flex.apache.org
> >>>>>>>>>
> >>>>>>>>> BTW, what should we do about code formatting, it seems my
> >> formatting
> >>>>> is
> >>>>>>>>> different then yours. I am using Eclipse right now since I don't
> >>>>> have IJ
> >>>>>>>>> setup for Falcon dev.
> >>>>>>>>>
> >>>>>>>>> Mike
> >>>>>>>>>
> >>>>>>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
> >>>>>>> teotigraphixllc@gmail.com
> >>>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> 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
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>>>
> >>>>
> >>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
I just found that http://stackoverflow.com/questions/881515/how-do-i-declare-a-namespace-in-javascript

There are I guess all the ways to create them.

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 15:51:45 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> On Sun, Jun 28, 2015 at 3:49 PM, Frédéric THOMAS <we...@hotmail.com>
> wrote:
>
>>> My intuition is telling me I am not handling them correctly for most
>> cases,
>>> things work right now but it would be better if we had some test .js
>> files
>>> that had all types of package/namespace creation structures.
>>
>> Like what ?
>>
>>
> Well if I had complete tests I could tell you. ;-)
>
> Mike
>
>
>
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>>> Date: Sun, 28 Jun 2015 15:33:42 -0400
>>> Subject: Re: [Externs] jasmine-2.0.js
>>> From: teotigraphixllc@gmail.com
>>> To: dev@flex.apache.org
>>>
>>> And... haha packages are really sketchy. We need more package type test
>>> from the externs that use them.
>>>
>>> My intuition is telling me I am not handling them correctly for most
>> cases,
>>> things work right now but it would be better if we had some test .js
>> files
>>> that had all types of package/namespace creation structures.
>>>
>>> Mike
>>>
>>> On Sun, Jun 28, 2015 at 3:28 PM, Michael Schmalle <
>> teotigraphixllc@gmail.com
>>>> wrote:
>>>
>>>> Fred, what I plan on doing since you are going to be working with the
>> code
>>>> is start to test all the base externs we have and find bugs or non
>>>> implemented things. I will probably just add the things I find in JIRA
>>>> throughout the week during my little free time.
>>>>
>>>> I'm not going to change any code, just add unit tests. One other thing
>>>> that I havn't got to is type unit tests. I really just hacked the type
>>>> resolving, yeah it works but I see ways in the future of doing some
>> stuff
>>>> with maybe function callbacks and if I get the type tests down well, I
>> will
>>>> feel more comfortable trying to parse the harder externs out there.
>>>>
>>>> Also, we should allow a way to parse those generated externs just for
>>>> stubs but, they have nested {} object creation which the parser ignores
>>>> right now, so that is another thing that can be tested and implemented.
>>>>
>>>> Mike
>>>>
>>>>
>>>>
>>>> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <
>> webdoublefx@hotmail.com>
>>>> wrote:
>>>>
>>>>> Thanks !
>>>>>
>>>>> Frédéric THOMAS
>>>>>
>>>>>
>>>>> ----------------------------------------
>>>>>> Date: Sun, 28 Jun 2015 15:11:20 -0400
>>>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>>>> From: teotigraphixllc@gmail.com
>>>>>> To: dev@flex.apache.org
>>>>>>
>>>>>> Yeah I know, sent to your hotmail.
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
>>>>> webdoublefx@hotmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>>> What you can do is to send me your eclipse formatter property file.
>>>>>>>> I will use it in IJ.
>>>>>>>
>>>>>>> I meant export your formatter profiles in xml
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Frédéric THOMAS
>>>>>>>
>>>>>>>
>>>>>>> ----------------------------------------
>>>>>>>> From: webdoublefx@hotmail.com
>>>>>>>> To: dev@flex.apache.org
>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js
>>>>>>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
>>>>>>>>
>>>>>>>>> BTW, what should we do about code formatting, it seems my
>> formatting
>>>>> is
>>>>>>>>> different then yours. I am using Eclipse right now since I don't
>>>>> have IJ
>>>>>>>>> setup for Falcon dev.
>>>>>>>>
>>>>>>>> I was wrong when I thought I had setup IJ correctly for Falcon, they
>>>>> are
>>>>>>> still
>>>>>>>> things it doesn't know how to do, for instance, share the generated
>>>>>>> classes
>>>>>>>> thru modules, therefore, it is not yet suitable for all parts of
>>>>> Falcon,
>>>>>>> at the
>>>>>>>> moment, I use tricks to be able to code with.
>>>>>>>>
>>>>>>>> What you can do is to send me your eclipse formatter property file.
>>>>>>>> I will use it in IJ.
>>>>>>>>
>>>>>>>> Frédéric THOMAS
>>>>>>>>
>>>>>>>>
>>>>>>>> ----------------------------------------
>>>>>>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>>>>>>> From: teotigraphixllc@gmail.com
>>>>>>>>> To: dev@flex.apache.org
>>>>>>>>>
>>>>>>>>> BTW, what should we do about code formatting, it seems my
>> formatting
>>>>> is
>>>>>>>>> different then yours. I am using Eclipse right now since I don't
>>>>> have IJ
>>>>>>>>> setup for Falcon dev.
>>>>>>>>>
>>>>>>>>> Mike
>>>>>>>>>
>>>>>>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
>>>>>>> teotigraphixllc@gmail.com
>>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
On Sun, Jun 28, 2015 at 3:49 PM, Frédéric THOMAS <we...@hotmail.com>
wrote:

> > My intuition is telling me I am not handling them correctly for most
> cases,
> > things work right now but it would be better if we had some test .js
> files
> > that had all types of package/namespace creation structures.
>
> Like what ?
>
>
Well if I had complete tests I could tell you. ;-)

Mike



> Frédéric THOMAS
>
>
> ----------------------------------------
> > Date: Sun, 28 Jun 2015 15:33:42 -0400
> > Subject: Re: [Externs] jasmine-2.0.js
> > From: teotigraphixllc@gmail.com
> > To: dev@flex.apache.org
> >
> > And... haha packages are really sketchy. We need more package type test
> > from the externs that use them.
> >
> > My intuition is telling me I am not handling them correctly for most
> cases,
> > things work right now but it would be better if we had some test .js
> files
> > that had all types of package/namespace creation structures.
> >
> > Mike
> >
> > On Sun, Jun 28, 2015 at 3:28 PM, Michael Schmalle <
> teotigraphixllc@gmail.com
> >> wrote:
> >
> >> Fred, what I plan on doing since you are going to be working with the
> code
> >> is start to test all the base externs we have and find bugs or non
> >> implemented things. I will probably just add the things I find in JIRA
> >> throughout the week during my little free time.
> >>
> >> I'm not going to change any code, just add unit tests. One other thing
> >> that I havn't got to is type unit tests. I really just hacked the type
> >> resolving, yeah it works but I see ways in the future of doing some
> stuff
> >> with maybe function callbacks and if I get the type tests down well, I
> will
> >> feel more comfortable trying to parse the harder externs out there.
> >>
> >> Also, we should allow a way to parse those generated externs just for
> >> stubs but, they have nested {} object creation which the parser ignores
> >> right now, so that is another thing that can be tested and implemented.
> >>
> >> Mike
> >>
> >>
> >>
> >> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <
> webdoublefx@hotmail.com>
> >> wrote:
> >>
> >>> Thanks !
> >>>
> >>> Frédéric THOMAS
> >>>
> >>>
> >>> ----------------------------------------
> >>>> Date: Sun, 28 Jun 2015 15:11:20 -0400
> >>>> Subject: Re: [Externs] jasmine-2.0.js
> >>>> From: teotigraphixllc@gmail.com
> >>>> To: dev@flex.apache.org
> >>>>
> >>>> Yeah I know, sent to your hotmail.
> >>>>
> >>>> Mike
> >>>>
> >>>> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
> >>> webdoublefx@hotmail.com>
> >>>> wrote:
> >>>>
> >>>>>> What you can do is to send me your eclipse formatter property file.
> >>>>>> I will use it in IJ.
> >>>>>
> >>>>> I meant export your formatter profiles in xml
> >>>>>
> >>>>> Thanks,
> >>>>> Frédéric THOMAS
> >>>>>
> >>>>>
> >>>>> ----------------------------------------
> >>>>>> From: webdoublefx@hotmail.com
> >>>>>> To: dev@flex.apache.org
> >>>>>> Subject: RE: [Externs] jasmine-2.0.js
> >>>>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
> >>>>>>
> >>>>>>> BTW, what should we do about code formatting, it seems my
> formatting
> >>> is
> >>>>>>> different then yours. I am using Eclipse right now since I don't
> >>> have IJ
> >>>>>>> setup for Falcon dev.
> >>>>>>
> >>>>>> I was wrong when I thought I had setup IJ correctly for Falcon, they
> >>> are
> >>>>> still
> >>>>>> things it doesn't know how to do, for instance, share the generated
> >>>>> classes
> >>>>>> thru modules, therefore, it is not yet suitable for all parts of
> >>> Falcon,
> >>>>> at the
> >>>>>> moment, I use tricks to be able to code with.
> >>>>>>
> >>>>>> What you can do is to send me your eclipse formatter property file.
> >>>>>> I will use it in IJ.
> >>>>>>
> >>>>>> Frédéric THOMAS
> >>>>>>
> >>>>>>
> >>>>>> ----------------------------------------
> >>>>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
> >>>>>>> Subject: Re: [Externs] jasmine-2.0.js
> >>>>>>> From: teotigraphixllc@gmail.com
> >>>>>>> To: dev@flex.apache.org
> >>>>>>>
> >>>>>>> BTW, what should we do about code formatting, it seems my
> formatting
> >>> is
> >>>>>>> different then yours. I am using Eclipse right now since I don't
> >>> have IJ
> >>>>>>> setup for Falcon dev.
> >>>>>>>
> >>>>>>> Mike
> >>>>>>>
> >>>>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
> >>>>> teotigraphixllc@gmail.com
> >>>>>>>> wrote:
> >>>>>>>
> >>>>>>>> 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
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> My intuition is telling me I am not handling them correctly for most cases,
> things work right now but it would be better if we had some test .js files
> that had all types of package/namespace creation structures.

Like what ?

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 15:33:42 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> And... haha packages are really sketchy. We need more package type test
> from the externs that use them.
>
> My intuition is telling me I am not handling them correctly for most cases,
> things work right now but it would be better if we had some test .js files
> that had all types of package/namespace creation structures.
>
> Mike
>
> On Sun, Jun 28, 2015 at 3:28 PM, Michael Schmalle <teotigraphixllc@gmail.com
>> wrote:
>
>> Fred, what I plan on doing since you are going to be working with the code
>> is start to test all the base externs we have and find bugs or non
>> implemented things. I will probably just add the things I find in JIRA
>> throughout the week during my little free time.
>>
>> I'm not going to change any code, just add unit tests. One other thing
>> that I havn't got to is type unit tests. I really just hacked the type
>> resolving, yeah it works but I see ways in the future of doing some stuff
>> with maybe function callbacks and if I get the type tests down well, I will
>> feel more comfortable trying to parse the harder externs out there.
>>
>> Also, we should allow a way to parse those generated externs just for
>> stubs but, they have nested {} object creation which the parser ignores
>> right now, so that is another thing that can be tested and implemented.
>>
>> Mike
>>
>>
>>
>> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <we...@hotmail.com>
>> wrote:
>>
>>> Thanks !
>>>
>>> Frédéric THOMAS
>>>
>>>
>>> ----------------------------------------
>>>> Date: Sun, 28 Jun 2015 15:11:20 -0400
>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>> From: teotigraphixllc@gmail.com
>>>> To: dev@flex.apache.org
>>>>
>>>> Yeah I know, sent to your hotmail.
>>>>
>>>> Mike
>>>>
>>>> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
>>> webdoublefx@hotmail.com>
>>>> wrote:
>>>>
>>>>>> What you can do is to send me your eclipse formatter property file.
>>>>>> I will use it in IJ.
>>>>>
>>>>> I meant export your formatter profiles in xml
>>>>>
>>>>> Thanks,
>>>>> Frédéric THOMAS
>>>>>
>>>>>
>>>>> ----------------------------------------
>>>>>> From: webdoublefx@hotmail.com
>>>>>> To: dev@flex.apache.org
>>>>>> Subject: RE: [Externs] jasmine-2.0.js
>>>>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
>>>>>>
>>>>>>> BTW, what should we do about code formatting, it seems my formatting
>>> is
>>>>>>> different then yours. I am using Eclipse right now since I don't
>>> have IJ
>>>>>>> setup for Falcon dev.
>>>>>>
>>>>>> I was wrong when I thought I had setup IJ correctly for Falcon, they
>>> are
>>>>> still
>>>>>> things it doesn't know how to do, for instance, share the generated
>>>>> classes
>>>>>> thru modules, therefore, it is not yet suitable for all parts of
>>> Falcon,
>>>>> at the
>>>>>> moment, I use tricks to be able to code with.
>>>>>>
>>>>>> What you can do is to send me your eclipse formatter property file.
>>>>>> I will use it in IJ.
>>>>>>
>>>>>> Frédéric THOMAS
>>>>>>
>>>>>>
>>>>>> ----------------------------------------
>>>>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>>>>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>>>>> From: teotigraphixllc@gmail.com
>>>>>>> To: dev@flex.apache.org
>>>>>>>
>>>>>>> BTW, what should we do about code formatting, it seems my formatting
>>> is
>>>>>>> different then yours. I am using Eclipse right now since I don't
>>> have IJ
>>>>>>> setup for Falcon dev.
>>>>>>>
>>>>>>> Mike
>>>>>>>
>>>>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
>>>>> teotigraphixllc@gmail.com
>>>>>>>> wrote:
>>>>>>>
>>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
And... haha packages are really sketchy. We need more package type test
from the externs that use them.

My intuition is telling me I am not handling them correctly for most cases,
things work right now but it would be better if we had some test .js files
that had all types of package/namespace creation structures.

Mike

On Sun, Jun 28, 2015 at 3:28 PM, Michael Schmalle <teotigraphixllc@gmail.com
> wrote:

> Fred, what I plan on doing since you are going to be working with the code
> is start to test all the base externs we have and find bugs or non
> implemented things. I will probably just add the things I find in JIRA
> throughout the week during my little free time.
>
> I'm not going to change any code, just add unit tests. One other thing
> that I havn't got to is type unit tests. I really just hacked the type
> resolving, yeah it works but I see ways in the future of doing some stuff
> with maybe function callbacks and if I get the type tests down well, I will
> feel more comfortable trying to parse the harder externs out there.
>
> Also, we should allow a way to parse those generated externs just for
> stubs but, they have nested {} object creation which the parser ignores
> right now, so that is another thing that can be tested and implemented.
>
> Mike
>
>
>
> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <we...@hotmail.com>
> wrote:
>
>> Thanks !
>>
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>> > Date: Sun, 28 Jun 2015 15:11:20 -0400
>> > Subject: Re: [Externs] jasmine-2.0.js
>> > From: teotigraphixllc@gmail.com
>> > To: dev@flex.apache.org
>> >
>> > Yeah I know, sent to your hotmail.
>> >
>> > Mike
>> >
>> > On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
>> webdoublefx@hotmail.com>
>> > wrote:
>> >
>> >>> What you can do is to send me your eclipse formatter property file.
>> >>> I will use it in IJ.
>> >>
>> >> I meant export your formatter profiles in xml
>> >>
>> >> Thanks,
>> >> Frédéric THOMAS
>> >>
>> >>
>> >> ----------------------------------------
>> >>> From: webdoublefx@hotmail.com
>> >>> To: dev@flex.apache.org
>> >>> Subject: RE: [Externs] jasmine-2.0.js
>> >>> Date: Sun, 28 Jun 2015 20:06:19 +0100
>> >>>
>> >>>> BTW, what should we do about code formatting, it seems my formatting
>> is
>> >>>> different then yours. I am using Eclipse right now since I don't
>> have IJ
>> >>>> setup for Falcon dev.
>> >>>
>> >>> I was wrong when I thought I had setup IJ correctly for Falcon, they
>> are
>> >> still
>> >>> things it doesn't know how to do, for instance, share the generated
>> >> classes
>> >>> thru modules, therefore, it is not yet suitable for all parts of
>> Falcon,
>> >> at the
>> >>> moment, I use tricks to be able to code with.
>> >>>
>> >>> What you can do is to send me your eclipse formatter property file.
>> >>> I will use it in IJ.
>> >>>
>> >>> Frédéric THOMAS
>> >>>
>> >>>
>> >>> ----------------------------------------
>> >>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>> >>>> Subject: Re: [Externs] jasmine-2.0.js
>> >>>> From: teotigraphixllc@gmail.com
>> >>>> To: dev@flex.apache.org
>> >>>>
>> >>>> BTW, what should we do about code formatting, it seems my formatting
>> is
>> >>>> different then yours. I am using Eclipse right now since I don't
>> have IJ
>> >>>> setup for Falcon dev.
>> >>>>
>> >>>> Mike
>> >>>>
>> >>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
>> >> teotigraphixllc@gmail.com
>> >>>>> wrote:
>> >>>>
>> >>>>> 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
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>
>> >>
>> >>
>>
>>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
Alright !

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 15:28:54 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> Fred, what I plan on doing since you are going to be working with the code
> is start to test all the base externs we have and find bugs or non
> implemented things. I will probably just add the things I find in JIRA
> throughout the week during my little free time.
>
> I'm not going to change any code, just add unit tests. One other thing that
> I havn't got to is type unit tests. I really just hacked the type
> resolving, yeah it works but I see ways in the future of doing some stuff
> with maybe function callbacks and if I get the type tests down well, I will
> feel more comfortable trying to parse the harder externs out there.
>
> Also, we should allow a way to parse those generated externs just for stubs
> but, they have nested {} object creation which the parser ignores right
> now, so that is another thing that can be tested and implemented.
>
> Mike
>
>
>
> On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <we...@hotmail.com>
> wrote:
>
>> Thanks !
>>
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>>> Date: Sun, 28 Jun 2015 15:11:20 -0400
>>> Subject: Re: [Externs] jasmine-2.0.js
>>> From: teotigraphixllc@gmail.com
>>> To: dev@flex.apache.org
>>>
>>> Yeah I know, sent to your hotmail.
>>>
>>> Mike
>>>
>>> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
>> webdoublefx@hotmail.com>
>>> wrote:
>>>
>>>>> What you can do is to send me your eclipse formatter property file.
>>>>> I will use it in IJ.
>>>>
>>>> I meant export your formatter profiles in xml
>>>>
>>>> Thanks,
>>>> Frédéric THOMAS
>>>>
>>>>
>>>> ----------------------------------------
>>>>> From: webdoublefx@hotmail.com
>>>>> To: dev@flex.apache.org
>>>>> Subject: RE: [Externs] jasmine-2.0.js
>>>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
>>>>>
>>>>>> BTW, what should we do about code formatting, it seems my formatting
>> is
>>>>>> different then yours. I am using Eclipse right now since I don't have
>> IJ
>>>>>> setup for Falcon dev.
>>>>>
>>>>> I was wrong when I thought I had setup IJ correctly for Falcon, they
>> are
>>>> still
>>>>> things it doesn't know how to do, for instance, share the generated
>>>> classes
>>>>> thru modules, therefore, it is not yet suitable for all parts of
>> Falcon,
>>>> at the
>>>>> moment, I use tricks to be able to code with.
>>>>>
>>>>> What you can do is to send me your eclipse formatter property file.
>>>>> I will use it in IJ.
>>>>>
>>>>> Frédéric THOMAS
>>>>>
>>>>>
>>>>> ----------------------------------------
>>>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>>>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>>>> From: teotigraphixllc@gmail.com
>>>>>> To: dev@flex.apache.org
>>>>>>
>>>>>> BTW, what should we do about code formatting, it seems my formatting
>> is
>>>>>> different then yours. I am using Eclipse right now since I don't have
>> IJ
>>>>>> setup for Falcon dev.
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
>>>> teotigraphixllc@gmail.com
>>>>>>> wrote:
>>>>>>
>>>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
Fred, what I plan on doing since you are going to be working with the code
is start to test all the base externs we have and find bugs or non
implemented things. I will probably just add the things I find in JIRA
throughout the week during my little free time.

I'm not going to change any code, just add unit tests. One other thing that
I havn't got to is type unit tests. I really just hacked the type
resolving, yeah it works but I see ways in the future of doing some stuff
with maybe function callbacks and if I get the type tests down well, I will
feel more comfortable trying to parse the harder externs out there.

Also, we should allow a way to parse those generated externs just for stubs
but, they have nested {} object creation which the parser ignores right
now, so that is another thing that can be tested and implemented.

Mike



On Sun, Jun 28, 2015 at 3:21 PM, Frédéric THOMAS <we...@hotmail.com>
wrote:

> Thanks !
>
> Frédéric THOMAS
>
>
> ----------------------------------------
> > Date: Sun, 28 Jun 2015 15:11:20 -0400
> > Subject: Re: [Externs] jasmine-2.0.js
> > From: teotigraphixllc@gmail.com
> > To: dev@flex.apache.org
> >
> > Yeah I know, sent to your hotmail.
> >
> > Mike
> >
> > On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <
> webdoublefx@hotmail.com>
> > wrote:
> >
> >>> What you can do is to send me your eclipse formatter property file.
> >>> I will use it in IJ.
> >>
> >> I meant export your formatter profiles in xml
> >>
> >> Thanks,
> >> Frédéric THOMAS
> >>
> >>
> >> ----------------------------------------
> >>> From: webdoublefx@hotmail.com
> >>> To: dev@flex.apache.org
> >>> Subject: RE: [Externs] jasmine-2.0.js
> >>> Date: Sun, 28 Jun 2015 20:06:19 +0100
> >>>
> >>>> BTW, what should we do about code formatting, it seems my formatting
> is
> >>>> different then yours. I am using Eclipse right now since I don't have
> IJ
> >>>> setup for Falcon dev.
> >>>
> >>> I was wrong when I thought I had setup IJ correctly for Falcon, they
> are
> >> still
> >>> things it doesn't know how to do, for instance, share the generated
> >> classes
> >>> thru modules, therefore, it is not yet suitable for all parts of
> Falcon,
> >> at the
> >>> moment, I use tricks to be able to code with.
> >>>
> >>> What you can do is to send me your eclipse formatter property file.
> >>> I will use it in IJ.
> >>>
> >>> Frédéric THOMAS
> >>>
> >>>
> >>> ----------------------------------------
> >>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
> >>>> Subject: Re: [Externs] jasmine-2.0.js
> >>>> From: teotigraphixllc@gmail.com
> >>>> To: dev@flex.apache.org
> >>>>
> >>>> BTW, what should we do about code formatting, it seems my formatting
> is
> >>>> different then yours. I am using Eclipse right now since I don't have
> IJ
> >>>> setup for Falcon dev.
> >>>>
> >>>> Mike
> >>>>
> >>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
> >> teotigraphixllc@gmail.com
> >>>>> wrote:
> >>>>
> >>>>> 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
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>
> >>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
Thanks !

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 15:11:20 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> Yeah I know, sent to your hotmail.
>
> Mike
>
> On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <we...@hotmail.com>
> wrote:
>
>>> What you can do is to send me your eclipse formatter property file.
>>> I will use it in IJ.
>>
>> I meant export your formatter profiles in xml
>>
>> Thanks,
>> Frédéric THOMAS
>>
>>
>> ----------------------------------------
>>> From: webdoublefx@hotmail.com
>>> To: dev@flex.apache.org
>>> Subject: RE: [Externs] jasmine-2.0.js
>>> Date: Sun, 28 Jun 2015 20:06:19 +0100
>>>
>>>> BTW, what should we do about code formatting, it seems my formatting is
>>>> different then yours. I am using Eclipse right now since I don't have IJ
>>>> setup for Falcon dev.
>>>
>>> I was wrong when I thought I had setup IJ correctly for Falcon, they are
>> still
>>> things it doesn't know how to do, for instance, share the generated
>> classes
>>> thru modules, therefore, it is not yet suitable for all parts of Falcon,
>> at the
>>> moment, I use tricks to be able to code with.
>>>
>>> What you can do is to send me your eclipse formatter property file.
>>> I will use it in IJ.
>>>
>>> Frédéric THOMAS
>>>
>>>
>>> ----------------------------------------
>>>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>>>> Subject: Re: [Externs] jasmine-2.0.js
>>>> From: teotigraphixllc@gmail.com
>>>> To: dev@flex.apache.org
>>>>
>>>> BTW, what should we do about code formatting, it seems my formatting is
>>>> different then yours. I am using Eclipse right now since I don't have IJ
>>>> setup for Falcon dev.
>>>>
>>>> Mike
>>>>
>>>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
>> teotigraphixllc@gmail.com
>>>>> wrote:
>>>>
>>>>> 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
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
Yeah I know, sent to your hotmail.

Mike

On Sun, Jun 28, 2015 at 3:10 PM, Frédéric THOMAS <we...@hotmail.com>
wrote:

> > What you can do is to send me your eclipse formatter property file.
> > I will use it in IJ.
>
> I meant export your formatter profiles in xml
>
> Thanks,
> Frédéric THOMAS
>
>
> ----------------------------------------
> > From: webdoublefx@hotmail.com
> > To: dev@flex.apache.org
> > Subject: RE: [Externs] jasmine-2.0.js
> > Date: Sun, 28 Jun 2015 20:06:19 +0100
> >
> >> BTW, what should we do about code formatting, it seems my formatting is
> >> different then yours. I am using Eclipse right now since I don't have IJ
> >> setup for Falcon dev.
> >
> > I was wrong when I thought I had setup IJ correctly for Falcon, they are
> still
> > things it doesn't know how to do, for instance, share the generated
> classes
> > thru modules, therefore, it is not yet suitable for all parts of Falcon,
> at the
> > moment, I use tricks to be able to code with.
> >
> > What you can do is to send me your eclipse formatter property file.
> > I will use it in IJ.
> >
> > Frédéric THOMAS
> >
> >
> > ----------------------------------------
> >> Date: Sun, 28 Jun 2015 14:57:50 -0400
> >> Subject: Re: [Externs] jasmine-2.0.js
> >> From: teotigraphixllc@gmail.com
> >> To: dev@flex.apache.org
> >>
> >> BTW, what should we do about code formatting, it seems my formatting is
> >> different then yours. I am using Eclipse right now since I don't have IJ
> >> setup for Falcon dev.
> >>
> >> Mike
> >>
> >> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <
> teotigraphixllc@gmail.com
> >>> wrote:
> >>
> >>> 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
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>
> >>>
> >
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> What you can do is to send me your eclipse formatter property file.
> I will use it in IJ.

I meant export your formatter profiles in xml

Thanks,
Frédéric THOMAS


----------------------------------------
> From: webdoublefx@hotmail.com
> To: dev@flex.apache.org
> Subject: RE: [Externs] jasmine-2.0.js
> Date: Sun, 28 Jun 2015 20:06:19 +0100
>
>> BTW, what should we do about code formatting, it seems my formatting is
>> different then yours. I am using Eclipse right now since I don't have IJ
>> setup for Falcon dev.
>
> I was wrong when I thought I had setup IJ correctly for Falcon, they are still
> things it doesn't know how to do, for instance, share the generated classes
> thru modules, therefore, it is not yet suitable for all parts of Falcon, at the
> moment, I use tricks to be able to code with.
>
> What you can do is to send me your eclipse formatter property file.
> I will use it in IJ.
>
> Frédéric THOMAS
>
>
> ----------------------------------------
>> Date: Sun, 28 Jun 2015 14:57:50 -0400
>> Subject: Re: [Externs] jasmine-2.0.js
>> From: teotigraphixllc@gmail.com
>> To: dev@flex.apache.org
>>
>> BTW, what should we do about code formatting, it seems my formatting is
>> different then yours. I am using Eclipse right now since I don't have IJ
>> setup for Falcon dev.
>>
>> Mike
>>
>> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <teotigraphixllc@gmail.com
>>> wrote:
>>
>>> 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 <we...@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
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> BTW, what should we do about code formatting, it seems my formatting is
> different then yours. I am using Eclipse right now since I don't have IJ
> setup for Falcon dev.

I was wrong when I thought I had setup IJ correctly for Falcon, they are still 
things it doesn't know how to do, for instance, share the generated classes
thru modules, therefore, it is not yet suitable for all parts of Falcon, at the
moment, I use tricks to be able to code with.

What you can do is to send me your eclipse formatter property file.
I will use it in IJ.

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 14:57:50 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> BTW, what should we do about code formatting, it seems my formatting is
> different then yours. I am using Eclipse right now since I don't have IJ
> setup for Falcon dev.
>
> Mike
>
> On Sun, Jun 28, 2015 at 2:55 PM, Michael Schmalle <teotigraphixllc@gmail.com
>> wrote:
>
>> 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 <we...@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
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
BTW, what should we do about code formatting, it seems my formatting is
different then yours. I am using Eclipse right now since I don't have IJ
setup for Falcon dev.

Mike

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

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

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> If it's top level why would we need an import, I am confused?

lol, sorry, not enough coffee !!

Frédéric THOMAS


----------------------------------------
> Date: Sun, 28 Jun 2015 14:41:52 -0400
> Subject: Re: [Externs] jasmine-2.0.js
> From: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> If it's top level why would we need an import, I am confused?
>
> Mike
>
> On Sun, Jun 28, 2015 at 2:38 PM, Frédéric THOMAS <we...@hotmail.com>
> wrote:
>
>>> 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(). :)
>>
>> Ok yes, will give it a try.
>> Just another thing maybe you can help with, is there a function somewhere
>> that does something like isBuiltin(type) as I didn't know how to deal with
>> imports of top level custom classes or even if we should try to manage
>> that.
>>
>> 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
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
If it's top level why would we need an import, I am confused?

Mike

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

> > 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(). :)
>
> Ok yes, will give it a try.
> Just another thing maybe you can help with, is there a function somewhere
> that does something like isBuiltin(type) as I didn't know how to deal with
> imports of top level custom classes or even if we should try to manage
> that.
>
> 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
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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(). :)

Ok yes, will give it a try.
Just another thing maybe you can help with, is there a function somewhere
that does something like isBuiltin(type) as I didn't know how to deal with
imports of top level custom classes or even if we should try to manage that.

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

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
Fred,

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

Mike

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

>
>
> On Mon, Jul 6, 2015 at 11:44 AM, Frédéric THOMAS <we...@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: webdoublefx@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: 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
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>
>> >>>>>
>> >>>
>> >>>
>> >
>>
>>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
I guess I'm good, you can checkout add-CollectImportPass if you like to review it.

Thanks,
Frédéric THOMAS


----------------------------------------
> From: webdoublefx@hotmail.com
> To: dev@flex.apache.org
> Subject: RE: [Externs] jasmine-2.0.js
> Date: Tue, 7 Jul 2015 02:44:54 +0100
>
>> 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: teotigraphixllc@gmail.com
>> To: dev@flex.apache.org
>>
>> On Mon, Jul 6, 2015 at 11:44 AM, Frédéric THOMAS <we...@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: webdoublefx@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: 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
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>
>>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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: teotigraphixllc@gmail.com
> To: dev@flex.apache.org
>
> On Mon, Jul 6, 2015 at 11:44 AM, Frédéric THOMAS <we...@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: webdoublefx@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: 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
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
On Mon, Jul 6, 2015 at 11:44 AM, Frédéric THOMAS <we...@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: webdoublefx@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: 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
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>>>
> >>>
> >>>
> >
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 <we...@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
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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} " ?

/**
 * @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: webdoublefx@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: 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 <we...@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
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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: 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 <we...@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
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 <we...@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
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>>
> >>
> >>
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 <we...@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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>
>> >>
>> >
>>
>>
>
>

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>
> >>
> >
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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 <we...@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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>
>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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 <we...@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
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 <we...@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
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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 <we...@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
>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>>>
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
>> >>>>
>> >>>>
>> >>
>> >
>>
>>
>
>

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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
> >>>>
> >>>>
> >>
> >
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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 <we...@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
>>>>
>>>>
>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
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 <we...@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
>>>
>>>
>
 		 	   		  

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 <we...@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
>>
>>
 		 	   		  

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
On Fri, Jun 26, 2015 at 4:39 PM, Frédéric THOMAS <we...@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
>
>

RE: [Externs] jasmine-2.0.js

Posted by Frédéric THOMAS <we...@hotmail.com>.
> 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 ?

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

Re: [Externs] jasmine-2.0.js

Posted by Michael Schmalle <te...@gmail.com>.
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 <we...@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