summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2008-06-10 20:48:36 +0000
committeraclement <aclement>2008-06-10 20:48:36 +0000
commit248962b92ffa409d11122d2504e84567c7c34354 (patch)
tree504a4f88d2c69db5f10c1c4014f2c6b61dca414e /weaver
parent7097e53a05b79205dc49d91c5a5cc7e7e84d62f0 (diff)
downloadaspectj-248962b92ffa409d11122d2504e84567c7c34354.tar.gz
aspectj-248962b92ffa409d11122d2504e84567c7c34354.zip
guard 155347
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/IfPointcut.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/IfPointcut.java b/weaver/src/org/aspectj/weaver/patterns/IfPointcut.java
index 304c26056..0e61b5eda 100644
--- a/weaver/src/org/aspectj/weaver/patterns/IfPointcut.java
+++ b/weaver/src/org/aspectj/weaver/patterns/IfPointcut.java
@@ -24,6 +24,7 @@ import org.aspectj.lang.JoinPoint;
import org.aspectj.util.FuzzyBoolean;
import org.aspectj.weaver.Advice;
import org.aspectj.weaver.AjcMemberMaker;
+import org.aspectj.weaver.BCException;
import org.aspectj.weaver.ISourceContext;
import org.aspectj.weaver.IntMap;
import org.aspectj.weaver.ResolvedMember;
@@ -173,7 +174,10 @@ public class IfPointcut extends Pointcut {
// is bindings for the arguments
residueSource.findResidue(shadow, myState);
-
+ UnresolvedType[] pTypes = (testMethod==null?null:testMethod.getParameterTypes());
+ if (pTypes!=null && baseArgsCount>pTypes.length) { //pr155347
+ throw new BCException("Unexpected problem with testMethod "+testMethod+": expecting "+baseArgsCount+" arguments");
+ }
// pr118149
// It is possible for vars in myState (which would normally be set
// in the call to residueSource.findResidue) to not be set (be null)
@@ -186,7 +190,7 @@ public class IfPointcut extends Pointcut {
args.add(v);
ret = Test.makeAnd(ret,
Test.makeInstanceof(v,
- testMethod.getParameterTypes()[i].resolve(shadow.getIWorld())));
+ pTypes[i].resolve(shadow.getIWorld())));
}
}