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 <teotigraphix...@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 <webdoubl...@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: 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 >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>> >> >>>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>> >> >>>>>> >> >>>> >> >>>> >> >> >> >> >> >> > >