diff options
author | aclement <aclement> | 2005-10-04 13:37:01 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-10-04 13:37:01 +0000 |
commit | 32a02ec2a3e15651249d5d7cc5f63fa409468b2a (patch) | |
tree | 99219854182c1d1cd492f3c27eeb4ce75673448c /org.aspectj.ajdt.core | |
parent | 1ee6fbfbdc453e0d9ba2ee1e2951499f0fb9fef3 (diff) | |
download | aspectj-32a02ec2a3e15651249d5d7cc5f63fa409468b2a.tar.gz aspectj-32a02ec2a3e15651249d5d7cc5f63fa409468b2a.zip |
test and fix for pr110906: vararg ITDs
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java | 6 | ||||
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java | 5 | ||||
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java | 2 | ||||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/aspects.jar | bin | 1417 -> 1385 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/child.jar | bin | 724 -> 724 bytes | |||
-rw-r--r-- | org.aspectj.ajdt.core/testdata/OutjarTest/parent.jar | bin | 630 -> 630 bytes |
6 files changed, 9 insertions, 4 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java index 859704441..2ef5cc7e1 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java @@ -35,6 +35,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser; import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit; import org.aspectj.weaver.AjAttribute; import org.aspectj.weaver.AjcMemberMaker; +import org.aspectj.weaver.Constants; import org.aspectj.weaver.NameMangler; import org.aspectj.weaver.NewMethodTypeMunger; import org.aspectj.weaver.ResolvedMember; @@ -188,8 +189,9 @@ public class InterTypeMethodDeclaration extends InterTypeDeclaration { // referred to in the parameters/returntype ResolvedMember sig = world.makeResolvedMember(binding,onTypeBinding); sig.resetName(new String(declaredSelector)); - sig.resetModifiers(declaredModifiers); - + int resetModifiers = declaredModifiers; + if (binding.isVarargs()) resetModifiers = resetModifiers | Constants.ACC_VARARGS; + sig.resetModifiers(resetModifiers); NewMethodTypeMunger myMunger = new NewMethodTypeMunger(sig, null); setMunger(myMunger); ResolvedType aspectType = world.fromEclipse(classScope.referenceContext.binding); diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java index 68858e92e..4eb290647 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java @@ -449,7 +449,7 @@ public class EclipseFactory { // AMC these next two lines shouldn't be needed once we sort out generic types properly in the world map ResolvedType realDeclaringType = world.resolve(fromBinding(declaringType)); if (realDeclaringType.isRawType()) realDeclaringType = realDeclaringType.getGenericType(); - ResolvedMember ret = new ResolvedMemberImpl( + ResolvedMemberImpl ret = new ResolvedMemberImpl( binding.isConstructor() ? Member.CONSTRUCTOR : Member.METHOD, realDeclaringType, binding.modifiers, @@ -458,6 +458,9 @@ public class EclipseFactory { fromBindings(binding.parameters), fromBindings(binding.thrownExceptions) ); + if (binding.isVarargs()) { + ret.setVarargsMethod(); + } if (typeVariablesForThisMember.size()!=0) { UnresolvedType[] tvars = new UnresolvedType[typeVariablesForThisMember.size()]; int i =0; diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java index e499f2df5..8f7b1544f 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java @@ -131,7 +131,7 @@ public class EclipseTypeMunger extends ConcreteTypeMunger { binding.modifiers = (binding.modifiers & (IConstants.AccPublic | IConstants.AccProtected | IConstants.AccPrivate)); if (isAbstract) binding.modifiers |= IConstants.AccAbstract; } - + if (munger.getSignature().isVarargsMethod()) binding.modifiers |= IConstants.AccVarargs; findOrCreateInterTypeMemberFinder(sourceType).addInterTypeMethod(binding); return true; } diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/aspects.jar b/org.aspectj.ajdt.core/testdata/OutjarTest/aspects.jar Binary files differindex a0245667a..8a252d19b 100644 --- a/org.aspectj.ajdt.core/testdata/OutjarTest/aspects.jar +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/aspects.jar diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/child.jar b/org.aspectj.ajdt.core/testdata/OutjarTest/child.jar Binary files differindex 9b798abda..634616fd8 100644 --- a/org.aspectj.ajdt.core/testdata/OutjarTest/child.jar +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/child.jar diff --git a/org.aspectj.ajdt.core/testdata/OutjarTest/parent.jar b/org.aspectj.ajdt.core/testdata/OutjarTest/parent.jar Binary files differindex f2078004f..5c9aa4239 100644 --- a/org.aspectj.ajdt.core/testdata/OutjarTest/parent.jar +++ b/org.aspectj.ajdt.core/testdata/OutjarTest/parent.jar |