Hi Romain, It should be in - I can see the fix in the git log (although I wish we’d tracked this in a real bugzilla rather than just in email). Are you sure you aren’t hitting something new now, having changed a bit of code?
cheers, Andy > On Jul 6, 2015, at 5:33 AM, Romain Primet <romain.pri...@gmail.com> wrote: > > Hi Andy, > > Contacting you again abount this issue, did the fix make it into 1.8.6? We > get the same errors at compile time. > > Cheers > > Romain > > 2015-04-12 19:53 GMT+02:00 Andy Clement <andrew.clem...@gmail.com > <mailto:andrew.clem...@gmail.com>>: > Nope I have no testcase, I couldn’t recreate it in a simple scenario after > trying for a little while so had to work on it in Romains complete app. > Sometimes I don’t have the cycles to get a lovely regression test in place :( > > > cheers, > Andy > > > On Apr 12, 2015, at 8:02 AM, Alexander Kriegisch <alexan...@kriegisch.name> > > wrote: > > > > Hi Andy. > > > >> Possibly it is the use of declare parents extends (with generics), > >> that is just not as common as declare parents implements. > > > > Actually, no. That was the first thing I tried, namely getting rid of the > > interface implementation 'DefaultIdentifiable' and replacing it like this: > > > > > > package fr.inria.zvtm.cluster; > > > > import fr.inria.zvtm.engine.Camera; > > import fr.inria.zvtm.engine.VirtualSpace; > > import fr.inria.zvtm.glyphs.Glyph; > > import fr.inria.zvtm.engine.portals.Portal; > > > > aspect ObjIdIntroduction { > > declare parents: VirtualSpace implements Identifiable; > > declare parents: Glyph implements Identifiable; > > declare parents: Camera implements Identifiable; > > declare parents: Portal implements Identifiable; > > > > private final ObjId Identifiable.objId = ObjIdFactory.next(); > > private boolean Identifiable.replicated = false; > > > > public ObjId Identifiable.getObjId(){ return objId; } > > public boolean Identifiable.isReplicated() { return replicated; } > > public void Identifiable.setReplicated(boolean val) { this.replicated = > > val; } > > } > > > > The resulting compilation errors were the same as before. I actually tried > > to replicate the generics situation in a simple project, but have failed to > > do so. Do you have a test case for it? Well, probably I should just look at > > your Git repo and check the latest commits (if you have pushed them > > already). > > > > Regards > > -- > > Alexander Kriegisch > > > > Schillerplatz 6, 91315 Höchstadt, Germany > > Tel +49 (9193) 52 76 <tel:%2B49%20%289193%29%2052%2076>, Mob +49 (176) 20 > > 53 07 02 <tel:%2B49%20%28176%29%2020%2053%2007%2002> > > > > > > Andy Clement schrieb am 11.04.2015 18:56: > > > >> Hey, > >> > >> Yes, Romain sent me some repo references off list so the discussion ended > >> up > >> continuing there. I was planning to post back here when we got to a > >> conclusion > >> (which we just did last night when Romain tested a 1.8.6 snapshot I created > >> with a potential fix). > >> > >> The new method will make it into the class file proceedOnError, but of > >> course > >> that isn’t where the compiler is looking. The compiler is looking at the > >> raw > >> type binding for Glyph, and that has a super type of Object. Sometime > >> after > >> that raw type representation is built we apply the declare parents and it > >> changes the super type of the generic type of Glyph to the new type that > >> contains the missing methods. When the classfiles are written out, they’ll > >> be based on the generic type so the correct declare parented super type > >> will be > >> there but for all the non generic references made in the program, they will > >> being resolved against the raw type which does not have these methods in > >> its > >> hierarchy. > >> > >> I don’t quite understand why this is only coming up now, looks to have been > >> missing for a long time. Possibly it is the use of declare parents extends > >> (with generics), that is just not as common as declare parents implements. > >> > >> The fix is simply to have a look for a raw type when patching up the > >> generic > >> type and fix that up too, possibly there is an issue with parameterized > >> types > >> too but I have no test program that shows me there is an issue (yet). > >> > >> A proceed on error without the fix would probably leave the code with > >> eclipse > >> exception throwing code generated at the bad method call sites that would > >> fail > >> at runtime when exercised. I never recommend proceedOnError. > >> > >> cheers, > >> Andy > >> > >>> On Apr 11, 2015, at 5:47 AM, Alexander Kriegisch > >>> <alexan...@kriegisch.name> > >>> wrote: > >>> > >>> Sounds good, Romain, I had no idea Andy was in touch with you. > >>> > >>> BTW, I noticed that if you add > >>> <proceedOnError>true</proceedOnError> > >>> to the POM of zvtm-cluster, the build continues and the necessary methods > >>> seem > >>> to be there in the resulting class files. Can you please test that with > >>> the > >>> official v1.8.5 (not the fixed preview) and tell me if the software > >>> actually > >>> does what it is supposed to? I have no idea how to test that because I do > >>> not > >>> know ZVTM. I am just curious if this workaround to keep the build going > >>> actually works or leaves behind inconsistently woven class files. > >>> > >>> Thanks in advance > >>> -- > >>> Alexander Kriegisch > >>> http://scrum-master.de <http://scrum-master.de/> > >>> > >>> > >>> Romain Primet schrieb am 11.04.2015 14:35: > >>> > >>>> Hi Alexander, > >>>> > >>>> I got a reply from Andy off-list; looks like an issue with ITD and > >>>> generic types (ITD not being done on raw type). I'm sure Andy will be > >>>> more precise; also, he has provided me with a snapshot build of aspectj > >>>> that builds zvtm-cluster just fine. > >>>> > >>>> Thanks a lot to you both for the debugging and help! > >>>> > >>>> Romain > >>>> > >>>> Le 11/04/2015 14:31, Alexander Kriegisch a écrit : > >>>>> Hi Andy. > >>>>> > >>>>> I have looked into this a little more and noticed that the build within > >>>>> Eclipse Luna with AJDT works nicely, but fails with AspectJ Maven > >>>>> Plugin and > >>>>> on the command line via ajc.bat. So this might be a clue what it going > >>>>> wrong > >>>>> if you can answer one question: What does ADJT differently in > >>>>> comparison to > >>>>> Ajc with regards to build order or other relevant factors? > >>>>> > >>>>> I have also noticed that if I remove the three Aspect files > >>>>> - GlyphCreation.aj > >>>>> - GlyphReplication.aj > >>>>> - VirtualSpaceReplication.aj > >>>>> from zvtm-cluster, the module compiles fine. This is because these > >>>>> aspects > >>>>> rely on ObjIdIntroduction.aj being woven first as they expect the > >>>>> introduced > >>>>> methods to be present in the target classes from module zvtm-core. > >>>>> > >>>>> I also tried to replicate a minimal sample with a Java project and an > >>>>> AspectJ > >>>>> project having the Java project on its inpath. The AspectJ project has > >>>>> three > >>>>> aspects which rely on each other's methods being present. It does not > >>>>> show > >>>>> any > >>>>> errors during compilation from either Eclipse or command line though. So > >>>>> probably you need to analyse the real project. To me it definitely looks > >>>>> like > >>>>> a bug. > >>>>> > >>>>> Regards > >>>> > >>>> _______________________________________________ > >>>> aspectj-users mailing list > >>>> aspectj-users@eclipse.org <mailto:aspectj-users@eclipse.org> > >>>> To change your delivery options, retrieve your password, or unsubscribe > >>>> from > >>>> this list, visit > >>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users > >>>> <https://dev.eclipse.org/mailman/listinfo/aspectj-users> > >>>> > >>> _______________________________________________ > >>> aspectj-users mailing list > >>> aspectj-users@eclipse.org <mailto:aspectj-users@eclipse.org> > >>> To change your delivery options, retrieve your password, or unsubscribe > >>> from > >>> this list, visit > >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users > >>> <https://dev.eclipse.org/mailman/listinfo/aspectj-users> > >> > >> _______________________________________________ > >> aspectj-users mailing list > >> aspectj-users@eclipse.org <mailto:aspectj-users@eclipse.org> > >> To change your delivery options, retrieve your password, or unsubscribe > >> from > >> this list, visit > >> https://dev.eclipse.org/mailman/listinfo/aspectj-users > >> <https://dev.eclipse.org/mailman/listinfo/aspectj-users> > >> > > > > _______________________________________________ > > aspectj-users mailing list > > aspectj-users@eclipse.org <mailto:aspectj-users@eclipse.org> > > To change your delivery options, retrieve your password, or unsubscribe > > from this list, visit > > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > <https://dev.eclipse.org/mailman/listinfo/aspectj-users> > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org <mailto:aspectj-users@eclipse.org> > To change your delivery options, retrieve your password, or unsubscribe from > this list, visit > https://dev.eclipse.org/mailman/listinfo/aspectj-users > <https://dev.eclipse.org/mailman/listinfo/aspectj-users> > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > To change your delivery options, retrieve your password, or unsubscribe from > this list, visit > https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/aspectj-users