From: aclement Date: Tue, 1 Nov 2005 09:40:05 +0000 (+0000) Subject: modified type parameter check to allow co-dependent generic declare parents to work... X-Git-Tag: V1_5_0RC1~284 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=70d2064e2c213077717844d66fedec4b2d7b9591;p=aspectj.git modified type parameter check to allow co-dependent generic declare parents to work. not quite right but a little better. --- diff --git a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java index 6a29148c7..b76a1f6af 100644 --- a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java @@ -911,7 +911,16 @@ public class WildTypePattern extends TypePattern { if (typeParameters.areAllExactWithNoSubtypesAllowed()) { for (int i = 0; i < tvs.length; i++) { UnresolvedType ut = typeParamPatterns[i].getExactType(); - if (!tvs[i].canBeBoundTo(ut.resolve(scope.getWorld()))) { + boolean continueCheck = true; + // FIXME asc dont like this but ok temporary measure. If the type parameter + // is itself a type variable (from the generic aspect) then assume it'll be + // ok... (see pr112105) Want to break this? Run GenericAspectK test. + if (ut.isTypeVariableReference()) { + continueCheck = false; + } + + if (continueCheck && + !tvs[i].canBeBoundTo(ut.resolve(scope.getWorld()))) { // issue message that type parameter does not meet specification String parameterName = ut.getName(); if (ut.isTypeVariableReference()) parameterName = ((TypeVariableReference)ut).getTypeVariable().getDisplayName();