]> source.dussan.org Git - aspectj.git/commitdiff
intertype inner types
authoraclement <aclement>
Wed, 24 Nov 2010 22:45:54 +0000 (22:45 +0000)
committeraclement <aclement>
Wed, 24 Nov 2010 22:45:54 +0000 (22:45 +0000)
tests/features169/itdInnerTypes/separate/Basic.java [new file with mode: 0644]
tests/features169/itdInnerTypes/separate/Basic2.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc169/AllTestsAspectJ169.java
tests/src/org/aspectj/systemtest/ajc169/IntertypeTests.java
tests/src/org/aspectj/systemtest/ajc169/intertype.xml

diff --git a/tests/features169/itdInnerTypes/separate/Basic.java b/tests/features169/itdInnerTypes/separate/Basic.java
new file mode 100644 (file)
index 0000000..b76e6a4
--- /dev/null
@@ -0,0 +1,11 @@
+public class Basic {
+  public static void main(String []argv) {
+    new _();
+    System.out.println("done");
+  }
+}
+
+aspect XX {
+  public static class Basic._ {
+  }
+}
diff --git a/tests/features169/itdInnerTypes/separate/Basic2.java b/tests/features169/itdInnerTypes/separate/Basic2.java
new file mode 100644 (file)
index 0000000..f44b45b
--- /dev/null
@@ -0,0 +1,6 @@
+public class Basic2 {
+  public static void main(String []argv) {
+    new Basic._();
+    System.out.println("done");
+  }
+}
index 485a71a6910063cbb6ef3f311ce34a360c2a2efc..f143fca991d76f496a9c87ea33277e5d50ebd620 100644 (file)
@@ -20,7 +20,7 @@ public class AllTestsAspectJ169 {
                // $JUnit-BEGIN$
                suite.addTest(Ajc169Tests.suite());
                suite.addTest(TransparentWeavingTests.suite());
-               // suite.addTest(IntertypeTests.suite());
+               suite.addTest(IntertypeTests.suite());
                // $JUnit-END$
                return suite;
        }
index de419eab7e6fd30cc81891057fe26ab69cbcc874..6719b16ba790b80ec7e93646b951265e5aa3b4bd 100644 (file)
@@ -43,6 +43,23 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
  */
 public class IntertypeTests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
+       /**
+        * This is testing that on a secondary compile we can work out what happened in the first compile (where an inner type was
+        * intertyped onto another type). I think we need two conditions to be true for this to pass: <br>
+        * 1) we need an innerclass attribute on the target type <br>
+        * 2) we need the name of the innerclass to match its target rather than the declaring aspect<br>
+        * Line 277 in ClassScope:<br>
+        * 
+        * memberTypeBindings[count++] = memberScope.buildType(sourceType, sourceType.fPackage, accessRestriction);<br>
+        * which then: builds the name based on the containing aspect.
+        * 
+        * TypeDeclaration.generateCode()
+        * 
+        */
+       public void testSeparateCompilation() throws Exception {
+               runTest("separate compilation");
+       }
+
        public void testErrorTargettingTypeThatAlreadyHasIt() {
                runTest("already has it");
        }
index b7d63078ff8d72a440e8dc6d9813c6c2ee83ba07..de6854fafdd60cf6e4abbacad26f02a54f3e0b3b 100644 (file)
@@ -2,9 +2,20 @@
 
 <suite>
    
+    <ajc-test dir="features169/itdInnerTypes/separate" title="separate compilation">
+     <compile files="Basic.java" options="-1.5"/>
+     <compile files="Basic2.java"/>
+     <run class="Basic2">
+       <stdout>
+       <line text="done"/>
+       </stdout>
+     </run>
+   </ajc-test>
+
    <ajc-test dir="features169/itdInnerTypes/eleven" title="already has it">
      <compile files="Target.java Aspect1.java" options="-1.5">
-     <message kind="error" text="target type already declares a member type with the name 'Inner'"/>
+     <message kind="error" text="Duplicate nested type Inner"/>
+     <message kind="error" text="target type already declares a "/>
      </compile>
    </ajc-test>
    
@@ -49,7 +60,7 @@
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Underscorer$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
@@ -59,7 +70,7 @@
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Underscorer$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
@@ -69,7 +80,7 @@
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Underscorer$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
@@ -79,7 +90,7 @@
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote_Amender$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote_Amender$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote_Amender$_$choice)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_$choice)"/>
        </stdout>
      </run>
    </ajc-test>
      <run class="a.b.c.Runner">
        <stdout>
        <line text="wibble"/>
-       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote_Amender$_)"/>
+       <line text="@a.b.c.RelatedType(value=class a.b.c.Vote$_)"/>
        </stdout>
      </run>
    </ajc-test>