From: acolyer Date: Thu, 1 Sep 2005 12:38:05 +0000 (+0000) Subject: don't match against synthetic constructor args X-Git-Tag: preDefaultReweavable~136 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=558e025362a02c1c5f88008b3f0c1e90adec60a8;p=aspectj.git don't match against synthetic constructor args --- diff --git a/weaver/src/org/aspectj/weaver/patterns/ArgsPointcut.java b/weaver/src/org/aspectj/weaver/patterns/ArgsPointcut.java index 2fd1eb7b6..33bcb26fc 100644 --- a/weaver/src/org/aspectj/weaver/patterns/ArgsPointcut.java +++ b/weaver/src/org/aspectj/weaver/patterns/ArgsPointcut.java @@ -107,6 +107,14 @@ public class ArgsPointcut extends NameBindingPointcut { System.arraycopy(argumentsToMatchAgainst, 0, argsSubset, 0, newArgLength); argumentsToMatchAgainst = argsSubset; } + } else if (shadow.getKind() == Shadow.ConstructorExecution) { + if (shadow.getMatchingSignature().getParameterTypes().length < argumentsToMatchAgainst.length) { + // there are one or more synthetic args on the end, caused by non-public itd constructor + int newArgLength = shadow.getMatchingSignature().getParameterTypes().length; + ResolvedType[] argsSubset = new ResolvedType[newArgLength]; + System.arraycopy(argumentsToMatchAgainst, 0, argsSubset, 0, newArgLength); + argumentsToMatchAgainst = argsSubset; + } } return argumentsToMatchAgainst;