]> source.dussan.org Git - aspectj.git/commitdiff
test and fix for pr111481: varargs ITD ctors. Patch from Helen Hawkins.
authoraclement <aclement>
Wed, 5 Oct 2005 08:12:20 +0000 (08:12 +0000)
committeraclement <aclement>
Wed, 5 Oct 2005 08:12:20 +0000 (08:12 +0000)
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
tests/bugs150/pr111481.aj [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml

index 0f0cf78b24afb9f58c7a4421f2a567e40b4a0ed9..80e77e262f110a8e84de60ad6142f08c4aea6a52 100644 (file)
@@ -232,7 +232,9 @@ public class InterTypeConstructorDeclaration extends InterTypeDeclaration {
                ResolvedMember signature = world.makeResolvedMember(binding,onTypeBinding);
                signature.resetKind(Member.CONSTRUCTOR);
                signature.resetName("<init>");
-               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 (file)
index 0000000..e764b4e
--- /dev/null
@@ -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]);
+    }
+
+}
index daa404fab5141a4acf6861724ead8da72c27ae4c..54b89ff450691e3546cc15ebccdfe0fb48576452 100644 (file)
@@ -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.....
   
index 3c033571739d2f0481e1f59c53bce79a7dafbda2..539df7b7d7c329388be388cd7f6a3af845cb8bb0 100644 (file)
      <compile files="pr102357.aj"/>
      <run class="pr102357"/>
    </ajc-test>
+
+   <ajc-test dir="bugs150" title="ITD varargs in constructor">
+     <compile files="pr111481.aj" options="-1.5"/>
+        <run class="pr111481">
+       <stdout>
+           <line text="a"/>
+           <line text="a"/>
+       </stdout>
+      </run>
+   </ajc-test>
 </suite>
\ No newline at end of file