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 <webdoubl...@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: teotigraphix...@gmail.com > > To: dev@flex.apache.org > > > > Kewl. > > > > I am going to be busy most of the week remodeling my mother in laws > > bathroom starting tomorrow. So if you want to try a new custom pass like > > ResolveImportPass, go for it, I will just stay out of the way. I think it > > would be good for you. :) If not, no worries, you gave me the idea. haha > > > > If you did, look at it like this, since all imports and logic therin are > > totally dependent on what the compiler actual saves into the model, logic > > says this needs to be the last or one of the last passes, from my > > perspective, it needs to be the last. > > > > If you make it the last, then this pass is not coupled to us fixing bugs > > ahead of it. Say we find out we need to add another structure of AST > > parsing for a node structure I havn't implemented yet, well we are safe. > > > > Why safe? Because in this import pass, you are using the MODEL, so no > AST. > > Instead of worrying about resolving imports during AST traversal, you are > > using what is already in the container after all that complex parsing is > > finished. > > > > So this pass, you would use your skills at knowing "what" in each > subclass > > of BaseReference could contain a type. Then write your logic pass to > > traverse Classes, then into each classes members, then loop through each > > member and analyze their types and do your import testing logic there. > > > > Once you find instances of imports that need to be saves, your current > > context is already the ClassReference, so call classRef.addImport(). :) > > > > Mike > > > > > > > > > > On Sun, Jun 28, 2015 at 2:13 PM, Frédéric THOMAS < > webdoubl...@hotmail.com> > > wrote: > > > >>> All I meant is that 75% of the time we would just want to save things > in > >>> the model or a reference, such that you use addImport() during the > >>> resolution. Then it keeps the emit() phase straight burn rubber and > loop > >>> through all existing model structures, where imports would be just a > list > >>> that emitImport() iterates through, no logic. > >> > >> Got it ! > >> > >>> I AM NOT saying what you did was wrong, I am just offering a look into > >> how > >>> I set it up. You know how I got this pattern? From my massive mistakes > in > >>> code generators of past. :) I realized that an emit phase needs to be > >>> stupid and not dependent on any type of intelligence, just needs to > >> create > >>> what already exists. > >> > >> I'm in a phase where I'm learning compiler things and indeed I will do > >> some mistakes > >> or I won't be as precise as you who have experience on it. > >> Therefore I can accept critics and learn from your explanations :-) > >> > >>> This can also solve many problems at once. So I haven't got back into > the > >>> code BUT my intuition says we need a universal solution for any type of > >>> TYPE that is attached to a member, identifier such as a param type, > >> return > >>> type, filed type, superclass and interface(already taken care of using > >>> addImport()). > >>> > >>> See where I am coming from? We know that every type is eventually going > >> to > >>> need to be scanned for imports and validated. > >> > >> Yes, actually, I was expecting to see a specific pass for that. > >> > >>> Dude, I just don't want to come off bossy or condescending, I love you > >>> help. A lot can be added to this compiler that could be very > interesting. > >>> So having you understand my design intention is really important to me. > >> :) > >> > >> Don't worry, I don't think you are bossy or condescending Mike, I'm > >> reading you > >> and try to put in parallel the new informations you give and what I've > >> seen in the code > >> for a better understanding, that's it. > >> > >> Cheers, > >> Frédéric THOMAS > >> > >> > >> ---------------------------------------- > >>> Date: Sun, 28 Jun 2015 13:48:02 -0400 > >>> Subject: Re: [Externs] jasmine-2.0.js > >>> From: teotigraphix...@gmail.com > >>> To: dev@flex.apache.org > >>> > >>> Fred you did an awesome job. :) > >>> > >>> All I meant is that 75% of the time we would just want to save things > in > >>> the model or a reference, such that you use addImport() during the > >>> resolution. Then it keeps the emit() phase straight burn rubber and > loop > >>> through all existing model structures, where imports would be just a > list > >>> that emitImport() iterates through, no logic. > >>> > >>> I AM NOT saying what you did was wrong, I am just offering a look into > >> how > >>> I set it up. You know how I got this pattern? From my massive mistakes > in > >>> code generators of past. :) I realized that an emit phase needs to be > >>> stupid and not dependent on any type of intelligence, just needs to > >> create > >>> what already exists. > >>> > >>> This can also solve many problems at once. So I haven't got back into > the > >>> code BUT my intuition says we need a universal solution for any type of > >>> TYPE that is attached to a member, identifier such as a param type, > >> return > >>> type, filed type, superclass and interface(already taken care of using > >>> addImport()). > >>> > >>> See where I am coming from? We know that every type is eventually going > >> to > >>> need to be scanned for imports and validated. > >>> > >>> Dude, I just don't want to come off bossy or condescending, I love you > >>> help. A lot can be added to this compiler that could be very > interesting. > >>> So having you understand my design intention is really important to me. > >> :) > >>> > >>> Mike > >>> > >>> > >>> > >>> > >>> On Sun, Jun 28, 2015 at 1:37 PM, Frédéric THOMAS < > >> webdoubl...@hotmail.com> > >>> wrote: > >>> > >>>>> Fred pretty much iterated things correctly. > >>>>> > >>>>> The ResolvePackageNamePass I haven't to get back to. I was in the > >> middle > >>>> of > >>>>> implementing something when I got it to work in another place. > >>>>> > >>>>> There is a pattern to how things are parsed so most of the time it's > >>>> better > >>>>> to set state as nodes/references are being added to the model. In the > >>>> case > >>>>> of imports, I don't see any problems right now with checking during > the > >>>>> emit phase but, if the model was more interactive during the session, > >>>> this > >>>>> type of logic should happen during the resolve phase so the model > with > >>>> it's > >>>>> references has a correct state if there is any logic happening > between > >>>> two > >>>>> references. > >>>> > >>>> Thanks for the explanation, I will take the time to do some debug > spins > >> to > >>>> understand > >>>> when the phases are called, what they do and what classes are > involved. > >>>> Given it is a fairly small transpiler and despite the recursive > visitor > >>>> pattern, I guess I can do it. > >>>> > >>>>> How much are you working on right now Fred? I just ask because I > don't > >>>> want > >>>>> to create any conflicts. > >>>> > >>>> Go ahead Mike, I'm done with that at the moment, I did my last cleanup > >>>> already. > >>>> Anyway, better I work on a branch and commit the branch instead for > >> review > >>>> next time. > >>>> > >>>> Frédéric THOMAS > >>>> > >>>> > >>>> ---------------------------------------- > >>>>> Date: Sun, 28 Jun 2015 13:23:15 -0400 > >>>>> Subject: Re: [Externs] jasmine-2.0.js > >>>>> From: teotigraphix...@gmail.com > >>>>> To: dev@flex.apache.org > >>>>> > >>>>> Fred pretty much iterated things correctly. > >>>>> > >>>>> The ResolvePackageNamePass I haven't to get back to. I was in the > >> middle > >>>> of > >>>>> implementing something when I got it to work in another place. > >>>>> > >>>>> There is a pattern to how things are parsed so most of the time it's > >>>> better > >>>>> to set state as nodes/references are being added to the model. In the > >>>> case > >>>>> of imports, I don't see any problems right now with checking during > the > >>>>> emit phase but, if the model was more interactive during the session, > >>>> this > >>>>> type of logic should happen during the resolve phase so the model > with > >>>> it's > >>>>> references has a correct state if there is any logic happening > between > >>>> two > >>>>> references. > >>>>> > >>>>> How much are you working on right now Fred? I just ask because I > don't > >>>> want > >>>>> to create any conflicts. > >>>>> > >>>>> Mike > >>>>> . > >>>>> > >>>>> On Sat, Jun 27, 2015 at 5:58 PM, Michael Schmalle < > >>>> teotigraphix...@gmail.com > >>>>>> wrote: > >>>>> > >>>>>> Hey Fred, I was out all day. I will have some time in the morning to > >>>> look > >>>>>> at what you did and comment. :) > >>>>>> > >>>>>> Mike > >>>>>> > >>>>>> On Sat, Jun 27, 2015 at 5:27 PM, Frédéric THOMAS < > >>>> webdoubl...@hotmail.com> > >>>>>> wrote: > >>>>>> > >>>>>>> Just to explain what I did, especially to folks who would like to > get > >>>>>>> their hand dirty on the compiler but like me, don't know how it > works > >>>> :-) > >>>>>>> > >>>>>>> I was adding jasmine-2.0.js [1], a file that contains only jsDoc > >>>>>>> (parameters and return type descriptions) and declarations, no > >>>>>>> implementations. > >>>>>>> When I say "adding jasmine-2.0.js" I mean, transpile this .js file > to > >>>> .as > >>>>>>> and then compile it to a .swc. > >>>>>>> > >>>>>>> The transpilation part is done by EXTERNC > >>>>>>> > >>>>>>> You call it like that: > >>>>>>> > >>>>>>> <java jar="${basedir}/compiler.jx/lib/externc.jar" fork="true" > >>>>>>> failonerror="false"> > >>>>>>> <arg value="+flexlib=${env.ASJS_HOME}/frameworks" /> > >>>>>>> <arg value="-debug" /> > >>>>>>> <arg > >>>>>>> > >>>> > >> > value="-load-config=${basedir}/externs/jasmine/jasmine-compile-config.xml" > >>>>>>> /> > >>>>>>> > >>>>>>> In the jasmine-compile-config.xml, you can exclude classes and > >> member, > >>>>>>> for example, in the jasmine.Spec class, I excluded the variable > >>>> $injector > >>>>>>> as its type was coming from the Angular library that is not yet > >>>> transpiled. > >>>>>>> > >>>>>>> <field-exclude> > >>>>>>> <class>jasmine.Spec</class> > >>>>>>> <field>$injector</field> > >>>>>>> </field-exclude> > >>>>>>> > >>>>>>> You can also exclude classes and functions. > >>>>>>> > >>>>>>> The compile part is done by the falcon compc as follow: > >>>>>>> > >>>>>>> <java > >> jar="${basedir}/compiler/generated/dist/sdk/lib/falcon-compc.jar" > >>>>>>> fork="true" > >>>>>>> failonerror="true"> > >>>>>>> <arg value="+flexlib=${env.ASJS_HOME}/frameworks" /> > >>>>>>> <arg value="-debug" /> > >>>>>>> <arg > >>>>>>> value="-load-config=${basedir}/externs/jasmine/compile-config.xml" > /> > >>>>>>> <arg > >>>>>>> value="-output=${basedir}/externs/jasmine/out/bin/jasmine-2.0.swc" > /> > >>>>>>> </java> > >>>>>>> > >>>>>>> The problem was that this last part was failing with an NPE a Type > of > >>>>>>> something: > >>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMemberAccess(TypeScope.java:344) > >>>>>>> > >>>>>>> Even looking closely at the code, I didn't get why it was failing > but > >>>> for > >>>>>>> sure, because it was trying to compile one of the transpiled .as > >> file, > >>>> this > >>>>>>> transpiled code was wrong. > >>>>>>> Looking at those .as, it was easy to see that some import were > >> missing. > >>>>>>> > >>>>>>> So, why the 2 others externs (js and jquery) had no issues ? > >>>>>>> It is always surprising to see something working on all the things > >>>> except > >>>>>>> of yours, but it can help you too :-) > >>>>>>> > >>>>>>> So, I've been looking at those other transpiled .as files from > >> existing > >>>>>>> externs to see if they had imports and they were some. > >>>>>>> I then created a mini jasmine.js containing only the faulty case > >> only, > >>>>>>> that, from what I've been able to determinate, was that the import > >> was > >>>> not > >>>>>>> generated when a static function had a return type of a class > created > >>>> via a > >>>>>>> function constructor, so, I filled this mini jasmine.js with the > >>>> equivalent > >>>>>>> of a static function like this: > >>>>>>> > >>>>>>> /** > >>>>>>> * @return {!jasmine.Clock} > >>>>>>> */ > >>>>>>> jasmine.clock = function() {}; > >>>>>>> > >>>>>>> Which should transpile in AS3, something like: > >>>>>>> > >>>>>>> import jasmine.Clock; > >>>>>>> public static function clock():Clock {} > >>>>>>> > >>>>>>> and a function constructor like this: > >>>>>>> > >>>>>>> /** @constructor */ > >>>>>>> jasmine.Clock = function() {}; > >>>>>>> > >>>>>>> which transpile: > >>>>>>> > >>>>>>> package jasmine { > >>>>>>> public class Clock {} > >>>>>>> } > >>>>>>> > >>>>>>> Created a test class based on those Mike created for the previous > >>>> externs > >>>>>>> doing: > >>>>>>> > >>>>>>> // jasmine, the main jasmine class. > >>>>>>> ClassReference jasmine = model.getClassReference("jasmine"); > >>>>>>> assertNotNull(jasmine); > >>>>>>> > >>>>>>> assertTrue(jasmine.hasImport("jasmine.Clock")); > >>>>>>> > >>>>>>> The hasImport method didn't exist on ClassReference but it was a > >>>>>>> addImport(), I follow to where it was called in ResolvePackagesPass > >>>> hoping > >>>>>>> to find a missing case but after debug spin I wasn't able to do > what > >> I > >>>>>>> expected, I'm not sure I understood all the logic in this class but > >> it > >>>>>>> looked like the Node of my return type was never visited and > >> therefore > >>>>>>> wasn't able to add my import here. > >>>>>>> > >>>>>>> But wait, in the ClassReference, I have a > >>>>>>> > >>>>>>> public MethodReference addMethod(Node node, String functionName, > >>>>>>> JSDocInfo comment, boolean isStatic) > >>>>>>> > >>>>>>> To me it would be enough to add the import to the list of imports > to > >> be > >>>>>>> emitted when the MethodReference is to be added, I just had to > >>>> determinate > >>>>>>> if the return type given in the jsDoc was not from the current > >>>> package, the > >>>>>>> given method not excluded, the given return type neither ! > >>>>>>> > >>>>>>> My test was passing was I was able to compile with this new code > the > >>>> old > >>>>>>> externs. > >>>>>>> > >>>>>>> The only thing I had to do to finish to compile the jasmine extern > >> was > >>>> to > >>>>>>> emit the imports for the global functions too as they shown to be > >>>> faulty > >>>>>>> for the same reasons. > >>>>>>> > >>>>>>> Mike will probably tell me now where my logic was wrong now :-) > >>>>>>> > >>>>>>> Frédéric THOMAS > >>>>>>> > >>>>>>> > >>>>>>> ---------------------------------------- > >>>>>>>> From: webdoubl...@hotmail.com > >>>>>>>> To: dev@flex.apache.org > >>>>>>>> Subject: RE: [Externs] jasmine-2.0.js > >>>>>>>> Date: Sat, 27 Jun 2015 20:43:43 +0100 > >>>>>>>> > >>>>>>>> Ok, done ! > >>>>>>>> > >>>>>>>> I forgot to uncomment the externc build of jasmine and print the > >>>> global > >>>>>>> function imports ! > >>>>>>>> > >>>>>>>> Frédéric THOMAS > >>>>>>>> > >>>>>>>> > >>>>>>>> ---------------------------------------- > >>>>>>>>> From: webdoubl...@hotmail.com > >>>>>>>>> To: dev@flex.apache.org > >>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js > >>>>>>>>> Date: Sat, 27 Jun 2015 20:12:16 +0100 > >>>>>>>>> > >>>>>>>>>> I pushed the changes which are ready to be reviewed. > >>>>>>>>> > >>>>>>>>> oups, hold on, I had some things commented that hidden other > >>>> problems, > >>>>>>> I will continue on it. > >>>>>>>>> > >>>>>>>>> Frédéric THOMAS > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> ---------------------------------------- > >>>>>>>>>> From: webdoubl...@hotmail.com > >>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js > >>>>>>>>>> Date: Sat, 27 Jun 2015 18:31:32 +0100 > >>>>>>>>>> > >>>>>>>>>> Hi Mike, > >>>>>>>>>> > >>>>>>>>>> I pushed the changes which are ready to be reviewed. > >>>>>>>>>> > >>>>>>>>>> Note: The jasmine-2.0.js is not committed as it should be > >> downloaded > >>>>>>> with the unpack-externs target of the download.xml, I followed the > >>>> model. > >>>>>>>>>> > >>>>>>>>>> Thanks, > >>>>>>>>>> Frédéric THOMAS > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> ---------------------------------------- > >>>>>>>>>>> Date: Sat, 27 Jun 2015 05:31:50 -0400 > >>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js > >>>>>>>>>>> From: teotigraphix...@gmail.com > >>>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>>> > >>>>>>>>>>> I just noticed you said today or tomorrow, whatever man. > doesn't > >>>>>>> matter. > >>>>>>>>>>> > >>>>>>>>>>> Mike > >>>>>>>>>>> > >>>>>>>>>>> On Sat, Jun 27, 2015 at 5:17 AM, Michael Schmalle < > >>>>>>> teotigraphix...@gmail.com > >>>>>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> Well its the practice. I know the pattern I am using so if I > >> have > >>>> to > >>>>>>>>>>>> adjust it to fit I will. You can tell that with AST type > stuff, > >> it > >>>>>>> has to > >>>>>>>>>>>> follow a specific pattern or everything turns to crap when > >> trying > >>>>>>> to add > >>>>>>>>>>>> stuff down the road. > >>>>>>>>>>>> > >>>>>>>>>>>> Commit it sooner than later as I have a couple hours to check > it > >>>>>>> out this > >>>>>>>>>>>> morning. > >>>>>>>>>>>> > >>>>>>>>>>>> Mike > >>>>>>>>>>>> > >>>>>>>>>>>> On Sat, Jun 27, 2015 at 3:15 AM, Frédéric THOMAS < > >>>>>>> webdoubl...@hotmail.com> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>>> Hi Mike, > >>>>>>>>>>>>> > >>>>>>>>>>>>> I can now compile jasmine, I'm not sure my fix is very clean > >> but > >>>> it > >>>>>>>>>>>>> works, I've been able to compile all the externs with. > >>>>>>>>>>>>> I will commit it later today or tomorrow as I need to clean a > >> bit > >>>>>>> before > >>>>>>>>>>>>> and it would be nice if you can review it. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Thanks, > >>>>>>>>>>>>> Frédéric THOMAS > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> ---------------------------------------- > >>>>>>>>>>>>>> From: webdoubl...@hotmail.com > >>>>>>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js > >>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 22:43:30 +0100 > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Hey Mike, it looks like "import jasmine.Clock;" is missing > in > >>>> the > >>>>>>>>>>>>> generated jasmine.as, that's it ! > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> Frédéric THOMAS > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> ---------------------------------------- > >>>>>>>>>>>>>>> From: webdoubl...@hotmail.com > >>>>>>>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>>>>>>> Subject: RE: [Externs] jasmine-2.0.js > >>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 22:26:32 +0100 > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> HAHA, ah that is a hard one man, thanks for the offer but > I > >>>>>>> think I am > >>>>>>>>>>>>>>>> going to need to get this one. There are a couple places > it > >>>>>>> could be > >>>>>>>>>>>>> though > >>>>>>>>>>>>>>>> if you are curious. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> First you really need to understand the problem, I am > typing > >>>>>>> this > >>>>>>>>>>>>> stuff in > >>>>>>>>>>>>>>>> between installing a bathroom vanity and sink, so I > haven't > >>>>>>> looked at > >>>>>>>>>>>>> the > >>>>>>>>>>>>>>>> code yet. :) > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quite > >> know > >>>>>>> the > >>>>>>>>>>>>> problem > >>>>>>>>>>>>>>>> yet. > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Ok, I will check your solution :-) > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> Frédéric THOMAS > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> ---------------------------------------- > >>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 16:59:58 -0400 > >>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js > >>>>>>>>>>>>>>>> From: teotigraphix...@gmail.com > >>>>>>>>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> On Fri, Jun 26, 2015 at 4:39 PM, Frédéric THOMAS < > >>>>>>>>>>>>> webdoubl...@hotmail.com> > >>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Yeah, this "jasmine.Clock" > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to > >>>> resolve > >>>>>>> a > >>>>>>>>>>>>> member > >>>>>>>>>>>>>>>>>> expression and it can't resolve it. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You > are > >>>>>>> using the > >>>>>>>>>>>>>>>>> extern > >>>>>>>>>>>>>>>>>> in the GCC project correct? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Yes, > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > https://raw.githubusercontent.com/google/closure-compiler/master/contrib/externs/jasmine-2.0.js > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> If so, I need to take a look at it. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Everyone, I did one pass and tests on packages and class > >>>>>>> creation, > >>>>>>>>>>>>> so > >>>>>>>>>>>>>>>>> these > >>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type > resolver > >> is > >>>>>>>>>>>>> "asked" to > >>>>>>>>>>>>>>>>> do > >>>>>>>>>>>>>>>>>> more work then my initial implementation. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Make sense? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Well, kind of :-) > >>>>>>>>>>>>>>>>> What classes would you check for this ? > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> HAHA, ah that is a hard one man, thanks for the offer but > I > >>>>>>> think I am > >>>>>>>>>>>>>>>> going to need to get this one. There are a couple places > it > >>>>>>> could be > >>>>>>>>>>>>> though > >>>>>>>>>>>>>>>> if you are curious. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> First you really need to understand the problem, I am > typing > >>>>>>> this > >>>>>>>>>>>>> stuff in > >>>>>>>>>>>>>>>> between installing a bathroom vanity and sink, so I > haven't > >>>>>>> looked at > >>>>>>>>>>>>> the > >>>>>>>>>>>>>>>> code yet. :) > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> So I can't really give you an answer since I don't quite > >> know > >>>>>>> the > >>>>>>>>>>>>> problem > >>>>>>>>>>>>>>>> yet. > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> Mike > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> Thanks, > >>>>>>>>>>>>>>>>> Frédéric THOMAS > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> ---------------------------------------- > >>>>>>>>>>>>>>>>>> Date: Fri, 26 Jun 2015 16:32:16 -0400 > >>>>>>>>>>>>>>>>>> Subject: Re: [Externs] jasmine-2.0.js > >>>>>>>>>>>>>>>>>> From: teotigraphix...@gmail.com > >>>>>>>>>>>>>>>>>> To: dev@flex.apache.org > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Yeah, this "jasmine.Clock" > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> The error means that the Falcon compiler is trying to > >>>> resolve > >>>>>>> a > >>>>>>>>>>>>> member > >>>>>>>>>>>>>>>>>> expression and it can't resolve it. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> So this means there is a bug in the AST resolver. You > are > >>>>>>> using the > >>>>>>>>>>>>>>>>> extern > >>>>>>>>>>>>>>>>>> in the GCC project correct? > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> If so, I need to take a look at it. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Everyone, I did one pass and tests on packages and class > >>>>>>> creation, > >>>>>>>>>>>>> so > >>>>>>>>>>>>>>>>> these > >>>>>>>>>>>>>>>>>> types of bugs are to be expected as the AST/Type > resolver > >> is > >>>>>>>>>>>>> "asked" to > >>>>>>>>>>>>>>>>> do > >>>>>>>>>>>>>>>>>> more work then my initial implementation. > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Make sense? > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> Mike > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> On Fri, Jun 26, 2015 at 3:27 PM, Frédéric THOMAS < > >>>>>>>>>>>>>>>>> webdoubl...@hotmail.com> > >>>>>>>>>>>>>>>>>> wrote: > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Hi Mike, > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Any idea why ? > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >> U:\sources\asf\flex\falcon\externs\jasmine\out\as\classes\ > >>>>>>>>>>>>> jasmine.as:26 > >>>>>>>>>>>>>>>>>>> Erreur interne : java.lang.NullPointerException > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.TypeScope.getPropertyForMemberAccess(TypeScope.java:344) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.ScopeView.getPropertyForMemberAccess(ScopeView.java:81) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:879) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:841) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.scopes.ASScope.getPropertyFromDef(ASScope.java:760) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolveMemberRef(IdentifierNode.java:829) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.tree.as.IdentifierNode.resolve(IdentifierNode.java:377) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.tree.as.IdentifierNode.getMName(IdentifierNode.java:432) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode.getMName(MemberAccessExpressionNode.java:158) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.as.codegen.ABCGeneratingReducer.dottedName(ABCGeneratingReducer.java:840) > >>>>>>>>>>>>>>>>>>> at > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>> > >>>> > >> > org.apache.flex.compiler.internal.as.codegen.CmcEmitter.action_321(CmcEmitter.java:5236) > >>>>>>>>>>>>>>>>>>> ... > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { return > >>>> null; } > >>>>>>>>>>>>>>>>>>> ^ > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> In the jasmine extern file > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @return {!jasmine.Clock} > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> jasmine.clock = function() {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** @constructor */ > >>>>>>>>>>>>>>>>>>> jasmine.Clock = function() {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** */ > >>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.install = function() {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** */ > >>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.uninstall = function() {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** @param {number} ms */ > >>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.tick = function(ms) {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** @param {!Date} date */ > >>>>>>>>>>>>>>>>>>> jasmine.Clock.prototype.mockDate = function(date) {}; > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> In jasmine.as > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> * @returns {jasmine.Clock} > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public static function clock():jasmine.Clock { return > >>>> null; } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> clock.as > >>>>>>>>>>>>>>>>>>> ----------------------------- > >>>>>>>>>>>>>>>>>>> package jasmine { > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public class Clock { > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public function Clock() { > >>>>>>>>>>>>>>>>>>> super(); > >>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc. > >>>>>>>>>>>>>>>>>>> * > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public function install():void { } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @param ms [number] > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public function tick(ms:Number):void { } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * Generated doc for missing method JSDoc. > >>>>>>>>>>>>>>>>>>> * > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public function uninstall():void { } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> /** > >>>>>>>>>>>>>>>>>>> * @param date [Date] > >>>>>>>>>>>>>>>>>>> * @see [jasmine-2.0] > >>>>>>>>>>>>>>>>>>> */ > >>>>>>>>>>>>>>>>>>> public function mockDate(date:Date):void { } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>> } > >>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>> Thanks, > >>>>>>>>>>>>>>>>>>> Frédéric THOMAS > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>> > >>>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>> > >>>> > >> > >> > >