From 2b0e6755030eb378e612a00fcb80d7bdca2c55ee Mon Sep 17 00:00:00 2001 From: aclement Date: Wed, 5 Oct 2005 08:12:20 +0000 Subject: [PATCH] test and fix for pr111481: varargs ITD ctors. Patch from Helen Hawkins. --- .../ast/InterTypeConstructorDeclaration.java | 4 +++- tests/bugs150/pr111481.aj | 14 ++++++++++++++ .../org/aspectj/systemtest/ajc150/Ajc150Tests.java | 3 +++ tests/src/org/aspectj/systemtest/ajc150/ajc150.xml | 10 ++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 tests/bugs150/pr111481.aj diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java index 0f0cf78b2..80e77e262 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java @@ -232,7 +232,9 @@ public class InterTypeConstructorDeclaration extends InterTypeDeclaration { ResolvedMember signature = world.makeResolvedMember(binding,onTypeBinding); signature.resetKind(Member.CONSTRUCTOR); signature.resetName(""); - signature.resetModifiers(declaredModifiers); + int resetModifiers = declaredModifiers; + if (binding.isVarargs()) resetModifiers = resetModifiers | Constants.ACC_VARARGS; + signature.resetModifiers(resetModifiers); ResolvedMember syntheticInterMember = AjcMemberMaker.interConstructor(declaringTypeX, signature, aspectType); diff --git a/tests/bugs150/pr111481.aj b/tests/bugs150/pr111481.aj new file mode 100644 index 000000000..e764b4e4f --- /dev/null +++ b/tests/bugs150/pr111481.aj @@ -0,0 +1,14 @@ +public class pr111481 { + + public static void main(String []argv) { + new pr111481(new Object[]{"a","b","c"}); + new pr111481("a","b","c"); + } + +} +aspect A { + public pr111481.new(Object... names) { + System.out.println(names[0]); + } + +} diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java index daa404fab..54b89ff45 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java @@ -596,6 +596,9 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase { assertNotNull("Couldn't find 'method-call(void pack.Test.someMethod())' element in the tree",pe); } + public void testVarArgsIITDInConstructor() { + runTest("ITD varargs in constructor"); + } // helper methods..... diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index 3c0335717..539df7b7d 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -4914,4 +4914,14 @@ + + + + + + + + + + \ No newline at end of file -- 2.39.5