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