Fantastic!!! Thank you for fixing! How long does it take a SNAPSHOT to make it to release?
On Wed, Nov 1, 2017 at 3:25 PM, Andy Clement <andrew.clem...@gmail.com> wrote: > It is fixed up. It was the order of processing as suspected, it can also > vary on the same OS ( I can make it fail on my mac by passing A last ). > > Because ordering is not supposed to be important we don’t sort source file > inputs. This means you can be at the mercy of what your JVM decides to do. > As types go through the compilation pipeline they are initially represented > by an eclipse type then later on by a binary byte code based type. The > code to verify the rules of declare parents was encountering one of the > types in one form when it worked and in the other when it failed. > > if you grab a 1.8.13.BUILD-SNAPSHOT from the maven repo > repo.spring.io/snapshot then you’ll pick up the fix. I confirmed that > fixes your sample. > > cheers, > Andy > > On Nov 1, 2017, at 12:05 PM, Jason Britton <jbritto...@gmail.com> wrote: > > Thanks for investigating. What's strange is I'm using IntelliJ on a Mac > (using the Maven project) and I get the compilation error. > > On Wed, Nov 1, 2017 at 10:59 AM, Andy Clement <andrew.clem...@gmail.com> > wrote: > >> Thanks for the test project. It compiled fine for me on Mac but then I >> thought I’d try windows and sure enough over there it fails. It may be the >> order of the processing of the files (which can vary across OS), digging >> into it now. >> >> Andy >> >> On Oct 31, 2017, at 4:41 PM, Jason Britton <jbritto...@gmail.com> wrote: >> >> Hi Andy - >> Thanks for looking into. I've created a public github repo with a maven >> project that recreates the issue here: https://github.com/JOBr >> itton/aspectj-generics-issue >> >> Let me know if you are able to reproduce. Thanks! >> >> Jason >> >> On Tue, Oct 31, 2017 at 1:19 PM, Andy Clement <andrew.clem...@gmail.com> >> wrote: >> >>> I recall in the early days of AspectJ 5 we had a mountain of issues like >>> this, but I thought they’d all been ironed out ! >>> >>> Hmm, I guess there must be a little more to it, here are my source files >>> that simulate what you wrote: >>> >>> --- >>> import java.util.*; >>> interface A<T extends BaseT,I extends BaseI> { >>> T setInputs(List<I> inputs); >>> } >>> --- >>> import java.util.*; >>> public class AlreadyImplementsA { >>> public ConcreteTImpl setInputs(List<ConcreteIImpl> inputs) { >>> return null; >>> } >>> } >>> --- >>> interface BaseI {} >>> --- >>> interface BaseT {} >>> --- >>> class ConcreteIImpl implements BaseI {} >>> --- >>> class ConcreteTImpl implements BaseT {} >>> --- >>> public aspect BindInterfaceA { >>> declare parents: AlreadyImplementsA implements A<ConcreteTImpl, >>> ConcreteIImpl>; >>> } >>> --- >>> >>> >>> -> ajc -1.8 A.java BaseT.java AlreadyImplementsA.java BaseI.java >>> ConcreteIImpl.java ConcreteTImpl.java -outjar code.jar >>> >>> >>> -> ajc -inpath code.jar -showWeaveInfo BindInterfaceA.java -outjar >>> code2.jar >>> Extending interface set for type 'AlreadyImplementsA' >>> (AlreadyImplementsA.java) to include 'A<ConcreteTImpl,ConcreteIImpl>' >>> (BindInterfaceA.java) >>> >>> -> javap -classpath code2.jar AlreadyImplementsA >>> Compiled from "AlreadyImplementsA.java" >>> public class AlreadyImplementsA implements A { >>> >>> >>> Are you applying the aspect via binary weaving? I do notice a >>> difference in separate compilation vs all source: >>> >>> -> ajc -1.8 *.java -showWeaveInfo -outjar foo.jar >>> Extending interface set for type 'AlreadyImplementsA' >>> (AlreadyImplementsA.java) to include 'A<ConcreteTImpl,ConcreteIImpl>' >>> (BindInterfaceA.java) >>> >>> -> javap -classpath foo.jar AlreadyImplementsA >>> Compiled from "AlreadyImplementsA.java" >>> public class AlreadyImplementsA implements A<ConcreteTImpl, >>> ConcreteIImpl> { >>> >>> Note that in the binary weaving case the type parameters are missing on >>> the implements clause. >>> >>> How are you building it? Can you adapt my steps above to show the fault. >>> >>> cheers, >>> Andy >>> >>> On Oct 30, 2017, at 2:11 PM, Jason Britton <jbritto...@gmail.com> wrote: >>> >>> Hi - >>> I'm running into a perplexing issue with AJC and I'm hoping someone else >>> has seen this before. >>> >>> The target of my aspect is the class AlreadyImplementsA, we are simply >>> wanting to throw the 'implements A' onto this class. AlreadyImplementsA >>> class already does indeed implement every method defined by the interface >>> A but for whatever reason, AJC complains that AlreadyImplementsA does Not >>> implement A because of the method >>> >>> T setInputs(List<I> inputs); >>> >>> >>> I can have a whole multitude of other methods defined on the interface >>> and AJC does not complain, it seems to have a problem with the fact that >>> the argument to the method on the interface is an Interface (List) with a >>> generic I. As I have other AJC issues where the method argument is a Map >>> of a generic type and AJC blows up on it as well. >>> >>> My aspect below >>> >>> public aspect BindInterfaceA { >>> >>> declare parents: AlreadyImplementsA implements A<ConcreteTImpl, >>> ConcreteIImpl>; >>> >>> } >>> >>> >>> My interface *A* referenced above has an interface method defined as shown >>> below >>> >>> >>> public interface A<T extends BaseT, I extends BaseI> { >>> >>> T setInputs(List<I> inputs); >>> >>> } >>> >>> >>> The 'exact' AJC error message is >>> >>> AlreadyImplementsA must implement the inherited abstract method >>> A<ConcreteTImpl, ConcreteIImpl>.setInputs(Pjava/util/list<LConcreteIImpl;>;) >>> >>> >>> I am almost positive the problem all boils down to an interface with a >>> generic being passed as a argument to the method (List<I> inputs) in our >>> case, which is causing AJC problems. >>> >>> Thanks for any advice you might have on getting past this. >>> >>> >>> Jason >>> >>> >>> _______________________________________________ >>> 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 >>> >> >> _______________________________________________ >> 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 >> > > _______________________________________________ > 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 >
_______________________________________________ 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