diff options
Diffstat (limited to 'tests')
12 files changed, 162 insertions, 76 deletions
diff --git a/tests/java5/generics/itds/bridgeMethods/Bridging1.aj b/tests/java5/generics/itds/bridgeMethods/Bridging1.aj index 6aefd137e..9aa9f4cf3 100644 --- a/tests/java5/generics/itds/bridgeMethods/Bridging1.aj +++ b/tests/java5/generics/itds/bridgeMethods/Bridging1.aj @@ -1,17 +1,19 @@ -// this bridge stuff is handled by the compiler - because D is a subtype of C even though method1 is being overridden, -// a bridge method 'C method1() { method1();}' is generated in the subclass D +// This bridge stuff is handled by the compiler - because +// D is a subtype of C even though method1 is being overridden, +// a bridge method 'C method1() { method1();}' is generated +// in the subclass D import java.lang.reflect.*; class C { - C method1() {return null;} + C method1() {return null;} } class D extends C { - D method1() {return null;} + D method1() {return null;} } public aspect Bridging1 { public static void main(String []argv) { - Util.dumpMethods("D",new String[]{"C D.method1() [BridgeMethod]","D D.method1()"}); + Util.dumpMethods("D"); } } diff --git a/tests/java5/generics/itds/bridgeMethods/Bridging2.aj b/tests/java5/generics/itds/bridgeMethods/Bridging2.aj index ecd270de3..7a2b6d206 100644 --- a/tests/java5/generics/itds/bridgeMethods/Bridging2.aj +++ b/tests/java5/generics/itds/bridgeMethods/Bridging2.aj @@ -1,4 +1,6 @@ // this bridge stuff is handled by the compiler +// We should get two methods in D, one is next() with return type Object +// and one is next() with return type String import java.lang.reflect.*; abstract class C<A> { @@ -13,4 +15,4 @@ public aspect Bridging2 { public static void main(String []argv) { Util.dumpMethods("D"); } -}
\ No newline at end of file +} diff --git a/tests/java5/generics/itds/bridgeMethods/Bridging3.aj b/tests/java5/generics/itds/bridgeMethods/Bridging3.aj index 13b70034a..0b57f29de 100644 --- a/tests/java5/generics/itds/bridgeMethods/Bridging3.aj +++ b/tests/java5/generics/itds/bridgeMethods/Bridging3.aj @@ -1,4 +1,6 @@ // this bridge stuff is handled by the compiler +// Similar to previous type var test but now the String parameter should +// be Object in the bridge method import java.lang.reflect.*; abstract class C<A> { @@ -13,4 +15,4 @@ public aspect Bridging3 { public static void main(String []argv) { Util.dumpMethods("D"); } -}
\ No newline at end of file +} diff --git a/tests/java5/generics/itds/bridgeMethods/BridgingITD1.aj b/tests/java5/generics/itds/bridgeMethods/BridgingITD1.aj index 8631df618..a2c7df43b 100644 --- a/tests/java5/generics/itds/bridgeMethods/BridgingITD1.aj +++ b/tests/java5/generics/itds/bridgeMethods/BridgingITD1.aj @@ -1,4 +1,5 @@ -// Now the implementation is introduced via an ITD, we should still get the bridge method in the class D +// Now the implementation is introduced via an ITD, we should +// still get the bridge method in the class D import java.lang.reflect.*; class C { @@ -10,8 +11,8 @@ class D extends C { } public aspect BridgingITD1 { - public D D.method1() { return null; } - public static void main(String []argv) { - Util.dumpMethods("D",new String[]{"C D.method1() [BridgeMethod]","D D.method1()"}); - } -}
\ No newline at end of file + public D D.method1() { return null; } + public static void main(String []argv) { + Util.dumpMethods("D"); + } +} diff --git a/tests/java5/generics/itds/bridgeMethods/BridgingITD2.aj b/tests/java5/generics/itds/bridgeMethods/BridgingITD2.aj index 4e1d7b8c9..cc6162e82 100644 --- a/tests/java5/generics/itds/bridgeMethods/BridgingITD2.aj +++ b/tests/java5/generics/itds/bridgeMethods/BridgingITD2.aj @@ -1,4 +1,6 @@ // this bridge stuff is handled by the compiler +// We should get two methods in D, one is next() with return type Object +// and one is next() with return type String import java.lang.reflect.*; abstract class C<A> { @@ -6,7 +8,7 @@ abstract class C<A> { } class D extends C<String> { - //String next() {return "";} + //public String next() {return "";} } public aspect BridgingITD2 { @@ -15,7 +17,7 @@ public aspect BridgingITD2 { public static void main(String []argv) { Util.dumpMethods("D"); - C c = new D(); - String s = c.next(); + D d = new D(); + String s = d.next(); } } diff --git a/tests/java5/generics/itds/bridgeMethods/BridgingITD3.aj b/tests/java5/generics/itds/bridgeMethods/BridgingITD3.aj new file mode 100644 index 000000000..5beff1481 --- /dev/null +++ b/tests/java5/generics/itds/bridgeMethods/BridgingITD3.aj @@ -0,0 +1,19 @@ +// this bridge stuff is handled by the compiler +// Similar to previous type var test but now the String parameter should +// be Object in the bridge method +import java.lang.reflect.*; + +abstract class C<A> { + public abstract A id(A x); +} + +class D extends C<String> { + //public String id(String s) {return s;} +} + +public aspect BridgingITD3 { + public String D.id(String s) {return s;} + public static void main(String []argv) { + Util.dumpMethods("D"); + } +} diff --git a/tests/java5/generics/itds/bridgeMethods/Util.java b/tests/java5/generics/itds/bridgeMethods/Util.java index 1c479defa..cf0b65078 100644 --- a/tests/java5/generics/itds/bridgeMethods/Util.java +++ b/tests/java5/generics/itds/bridgeMethods/Util.java @@ -3,7 +3,7 @@ import java.util.*; public class Util { - public static void checkMethods(String clazzname,String[] expectedMethods) { + public static void dumpMethods(String clazzname) {//,String[] expectedMethods) { List methodsFound = new ArrayList(); try { java.lang.Class clz = Class.forName(clazzname); @@ -20,19 +20,24 @@ public class Util { } catch (Throwable e) {e.printStackTrace();} StringBuffer diagnosticInfo = new StringBuffer(); - diagnosticInfo.append("\nExpected:\n").append(dumparray(expectedMethods)); - diagnosticInfo.append("\nFound:\n").append(dumplist(methodsFound)); - - for (int i = 0; i < expectedMethods.length; i++) { - String string = expectedMethods[i]; - if (!methodsFound.contains(string)) { - throw new RuntimeException("Expecting method '"+string+"' but didnt find it\n"+diagnosticInfo.toString()); - } - methodsFound.remove(string); - } - if (methodsFound.size()>0) { - throw new RuntimeException("Found more methods than expected: "+dumplist(methodsFound)); + Collections.sort(methodsFound); + for (Iterator iter = methodsFound.iterator(); iter.hasNext();) { + String element = (String) iter.next(); + System.err.println(element); } +// diagnosticInfo.append("\nExpected:\n").append(dumparray(expectedMethods)); +// diagnosticInfo.append("\nFound:\n").append(dumplist(methodsFound)); +// +// for (int i = 0; i < expectedMethods.length; i++) { +// String string = expectedMethods[i]; +// if (!methodsFound.contains(string)) { +// throw new RuntimeException("Expecting method '"+string+"' but didnt find it\n"+diagnosticInfo.toString()); +// } +// methodsFound.remove(string); +// } +// if (methodsFound.size()>0) { +// throw new RuntimeException("Found more methods than expected: "+dumplist(methodsFound)); +// } } private static String dumparray(String[] arr) { @@ -63,4 +68,4 @@ public class Util { } return sb.toString(); } -}
\ No newline at end of file +} diff --git a/tests/java5/generics/itds/bridgeMethods/X1.aj b/tests/java5/generics/itds/bridgeMethods/X1.aj index 9ff893ce0..2f085de6a 100644 --- a/tests/java5/generics/itds/bridgeMethods/X1.aj +++ b/tests/java5/generics/itds/bridgeMethods/X1.aj @@ -3,9 +3,6 @@ public aspect X1 { Super1 s = new Sub1(); Integer i = (Integer)s.m(); - Util.checkMethods("Sub1", - new String[]{ - "java.lang.Object Sub1.m() [BridgeMethod]", - "java.lang.Integer Sub1.m()"}); + Util.dumpMethods("Sub1"); } } diff --git a/tests/java5/generics/itds/bridgeMethods/X2.aj b/tests/java5/generics/itds/bridgeMethods/X2.aj index cd9eccffa..ce8f1a542 100644 --- a/tests/java5/generics/itds/bridgeMethods/X2.aj +++ b/tests/java5/generics/itds/bridgeMethods/X2.aj @@ -5,9 +5,6 @@ public aspect X2 { Super2 s = new Sub2(); Integer i = (Integer)s.m(); - Util.checkMethods("Sub2", - new String[]{ - "java.lang.Object Sub2.m() [BridgeMethod]", - "java.lang.Integer Sub2.m()"}); + Util.dumpMethods("Sub2"); } -}
\ No newline at end of file +} diff --git a/tests/java5/generics/itds/bridgeMethods/X3.aj b/tests/java5/generics/itds/bridgeMethods/X3.aj index dc58e33b8..5bd400d10 100644 --- a/tests/java5/generics/itds/bridgeMethods/X3.aj +++ b/tests/java5/generics/itds/bridgeMethods/X3.aj @@ -6,9 +6,6 @@ public aspect X3 { Super3 s = new Sub3(); Integer i = (Integer)s.m(); - Util.checkMethods("Sub3", - new String[]{ - "java.lang.Object Sub3.m() [BridgeMethod]", - "java.lang.Integer Sub3.m()"}); + Util.dumpMethods("Sub3"); } } diff --git a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java index 31efc000c..b761d28e7 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java @@ -401,21 +401,21 @@ public class GenericsTests extends XMLBasedAjcTestCase { public void testAtOverride7() {runTest("atOverride used with ITDs - 7");} - // bridge methods -// public void testITDBridgeMethodsCovariance1() {runTest("bridging with covariance 1 normal");} -// public void testITDBridgeMethodsCovariance2() {runTest("bridging with covariance 1 itd");} -// public void testITDBridgeMethodsCovariance3() {runTest("bridging with covariance 1 itd binary weaving");} -// public void testITDBridgeMethods1Normal() {runTest("basic bridging with type vars - 1 - normal");} -// public void testITDBridgeMethods1Itd() {runTest("basic bridging with type vars - 1 - itd");} -// public void testITDBridgeMethods2() {runTest("basic bridging with type vars - 2");} -// public void testITDBridgeMethodsPr91381() {runTest("Abstract intertype method and covariant returns");} - - public void testGenericITDsBridgeMethods1() {runTest("bridge methods -1");} -// public void testGenericITDsBridgeMethods1binary() {runTest("bridge methods -1binary");} - public void testGenericITDsBridgeMethods2() {runTest("bridge methods -2");} -// public void testGenericITDsBridgeMethods2binary() {runTest("bridge methods -2binary");} - public void testGenericITDsBridgeMethods3() {runTest("bridge methods -3");} -// public void testGenericITDsBridgeMethods3binary() {runTest("bridge methods -3binary");} + // bridge methods + public void testITDBridgeMethodsCovariance1() {runTest("bridging with covariance 1 - normal");} + public void testITDBridgeMethodsCovariance2() {runTest("bridging with covariance 1 - itd");} + public void testITDBridgeMethods1Normal() {runTest("basic bridging with type vars - 1 - normal");} + public void testITDBridgeMethods1Itd() {runTest("basic bridging with type vars - 1 - itd");} + public void testITDBridgeMethods2Normal() {runTest("basic bridging with type vars - 2 - normal");} + public void testITDBridgeMethods2Itd() {runTest("basic bridging with type vars - 2 - itd");} + public void testITDBridgeMethodsPr91381() {runTest("Abstract intertype method and covariant returns");} + + public void testGenericITDsBridgeMethods1() {runTest("bridge methods - 1");} + public void testGenericITDsBridgeMethods1binary() {runTest("bridge methods - 1 - binary");} + public void testGenericITDsBridgeMethods2() {runTest("bridge methods - 2");} +// public void testGenericITDsBridgeMethods2binary() {runTest("bridge methods - 2 - binary");} // pr108101 + public void testGenericITDsBridgeMethods3() {runTest("bridge methods - 3");} +// public void testGenericITDsBridgeMethods3binary() {runTest("bridge methods - 3 - binary");} // pr108101 public void testGenericITDsBridgeMethodsPR91381() {runTest("abstract intertype methods and covariant returns");} public void testGenericITDsBridgeMethodsPR91381_2() {runTest("abstract intertype methods and covariant returns - error");} diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index dc7553ede..52a2e57a2 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -3850,34 +3850,72 @@ <!-- generics/itds and bridge methods --> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -1"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 1"> <compile files="Sub1.java,Super1.java,X1.aj,Util.java" options="-1.5"/> - <run class="X1"/> + <run class="X1"> + <stderr> + <line text="Number of methods defined for Sub1 is 2"/> + <line text="java.lang.Integer Sub1.m()"/> + <line text="java.lang.Object Sub1.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -1binary"> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 1 - binary"> <compile files="Sub1.java,Super1.java" outjar="code.jar" options="-1.5"/> <compile files="X1.aj,Util.java" inpath="code.jar" options ="-1.5"/> - <run class="X1"/> + <run class="X1"> + <stderr> + <line text="Number of methods defined for Sub1 is 2"/> + <line text="java.lang.Integer Sub1.m()"/> + <line text="java.lang.Object Sub1.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -2"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 2"> <compile files="Sub2.java,Super2.java,X2.aj,Util.java" options="-1.5"/> - <run class="X2"/> + <run class="X2"> + <stderr> + <line text="Number of methods defined for Sub2 is 2"/> + <line text="java.lang.Integer Sub2.m()"/> + <line text="java.lang.Object Sub2.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -2binary"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 2 - binary"> <compile files="Sub2.java,Super2.java" outjar="code.jar" options="-1.5"/> <compile files="X2.aj,Util.java" inpath="code.jar" options ="-1.5"/> - <run class="X2"/> + <run class="X2"> + <stderr> + <line text="Number of methods defined for Sub2 is 2"/> + <line text="java.lang.Integer Sub2.m()"/> + <line text="java.lang.Object Sub2.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -3"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 3"> <compile files="Sub3.java,Super3.java,X3.aj,Util.java" options="-1.5"/> - <run class="X3"/> + <run class="X3"> + <stderr> + <line text="Number of methods defined for Sub3 is 2"/> + <line text="java.lang.Integer Sub3.m()"/> + <line text="java.lang.Object Sub3.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods -3binary"> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridge methods - 3 - binary"> <compile files="Sub3.java,Super3.java" outjar="code.jar" options="-1.5"/> <compile files="X3.aj,Util.java" inpath="code.jar" options ="-1.5"/> - <run class="X3"/> + <run class="X3"> + <stderr> + <line text="Number of methods defined for Sub3 is 2"/> + <line text="java.lang.Integer Sub3.m()"/> + <line text="java.lang.Object Sub3.m() [BridgeMethod]"/> + </stderr> + </run> </ajc-test> <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="abstract intertype methods and covariant returns"> @@ -3892,13 +3930,26 @@ </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 normal"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 - normal"> <compile files="Bridging1.aj,Util.java" options="-1.5"/> - <run class="Bridging1"/> - </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 itd"> + <run class="Bridging1"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="C D.method1() [BridgeMethod]"/> + <line text="D D.method1()"/> + </stderr> + </run> + </ajc-test> + + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="bridging with covariance 1 - itd"> <compile files="BridgingITD1.aj,Util.java" options="-1.5"/> - <run class="BridgingITD1"/> + <run class="BridgingITD1"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="C D.method1() [BridgeMethod]"/> + <line text="D D.method1()"/> + </stderr> + </run> </ajc-test> <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 1 - normal"> @@ -3922,7 +3973,7 @@ </run> </ajc-test> - <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 2"> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 2 - normal"> <compile files="Bridging3.aj,Util.java" options="-1.5"/> <run class="Bridging3"> <stderr> @@ -3933,6 +3984,17 @@ </run> </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="basic bridging with type vars - 2 - itd"> + <compile files="BridgingITD3.aj,Util.java" options="-1.5"/> + <run class="BridgingITD3"> + <stderr> + <line text="Number of methods defined for D is 2"/> + <line text="java.lang.Object D.id(java.lang.Object) [BridgeMethod]"/> + <line text="java.lang.String D.id(java.lang.String)"/> + </stderr> + </run> + </ajc-test> + <ajc-test dir="java5/generics/itds/bridgeMethods" vm="1.5" title="Abstract intertype method and covariant returns" pr="91381"> <compile files="pr91381.aj" options="-1.5,-showWeaveInfo"> <message kind="weave" text="Type 'A' (pr91381.aj) has intertyped method from 'pr91381' (pr91381.aj:'java.lang.Object A.foo()')"/> |