Browse Source

513528: Fix use of lambda in ITD

tags/V1_9_2RC3
Andy Clement 5 years ago
parent
commit
f92ea896c1

BIN
org.eclipse.jdt.core/jdtcore-for-aspectj-src.zip View File


BIN
org.eclipse.jdt.core/jdtcore-for-aspectj.jar View File


+ 20
- 0
tests/bugs192/513528/Apple.java View File

@@ -0,0 +1,20 @@
package de.scrum_master.app;

public class Apple {
private String type;
private boolean sweet;

public Apple(String type, boolean sweet) {
this.type = type;
this.sweet = sweet;
}

public String getType() {
return type;
}

public boolean isSweet() {
return sweet;
}
}


+ 16
- 0
tests/bugs192/513528/AppleController.java View File

@@ -0,0 +1,16 @@
package de.scrum_master.app;

import java.util.Arrays;
import java.util.List;

public class AppleController {
private static final List<Apple> APPLES =
Arrays.asList(new Apple("Granny Smith", false), new Apple("Golden Delicious", true));

public static void main(String[] args) {
AppleController appleController = new AppleController();
System.out.println("Named: " + appleController.namedApples(APPLES, "Smith"));
System.out.println("Sweet: " + appleController.sweetApples(APPLES));
System.out.println("Sour: " + appleController.sourApples(APPLES));
}
}

+ 30
- 0
tests/bugs192/513528/AppleControllerITDAspect.java View File

@@ -0,0 +1,30 @@
package de.scrum_master.aspect;

import java.util.List;
import java.util.stream.Collectors;

import java.util.function.Predicate;
import de.scrum_master.app.Apple;
import de.scrum_master.app.AppleController;

public privileged aspect AppleControllerITDAspect {
public List<Apple> AppleController.namedApples(List<Apple> apples, String subString) {
// Anonymous subclass works
return apples.stream().filter(new Predicate<Apple>() {
@Override
public boolean test(Apple a) {
return a.getType().contains(subString);
}
}).collect(Collectors.toList());
}

public List<Apple> AppleController.sweetApples(List<Apple> apples) {
// Method reference works
return apples.stream().filter(Apple::isSweet).collect(Collectors.toList());
}

public List<Apple> AppleController.sourApples(List<Apple> apples) {
// Lambda causes IllegalAccessError
return apples.stream().filter(a -> !a.isSweet()).collect(Collectors.toList());
}
}

+ 1
- 1
tests/src/org/aspectj/systemtest/ajc190/ajc190.xml View File

@@ -90,7 +90,7 @@
<compile files="module-info.java aaa/bbb/A.java" options="-1.9" outjar="my.module.jar"/>
<file deletefile="module-info.java"/>
<file deletefile="aaa"/>
<compile files="Azpect.java" outjar="azpects.jar"/>
<compile files="Azpect.java" outjar="azpects.jar" options="-1.4"/>
<compile options="-showWeaveInfo" inpath="my.module.jar" aspectpath="azpects.jar" outjar="my.module.woven.jar">
<message kind="weave" text="Join point 'method-execution(void aaa.bbb.A.main(java.lang.String[]))' in Type 'aaa.bbb.A' (A.java:4) advised by before advice from 'aspects.Azpect' (azpects.jar!Azpect.class:4(from Azpect.java))"/>
</compile>

+ 4
- 0
tests/src/org/aspectj/systemtest/ajc192/Ajc192Tests.java View File

@@ -24,6 +24,10 @@ import junit.framework.Test;
*/
public class Ajc192Tests extends XMLBasedAjcTestCase {

public void testITDLambdas() throws Exception {
runTest("itd lambdas");
}
public void test11Flags() throws Exception {
runTest("11flags");
}

+ 7
- 0
tests/src/org/aspectj/systemtest/ajc192/ajc192.xml View File

@@ -2,6 +2,13 @@

<suite>

<ajc-test dir="bugs192/513528" title="itd lambdas">
<compile files="Apple.java AppleController.java AppleControllerITDAspect.java" options="-11">
</compile>
<run class="de.scrum_master.app.AppleController">
</run>
</ajc-test>
<ajc-test dir="bugs192/11flags" title="11flags">
<compile files="A.java" options="-11 -showWeaveInfo">
<message kind="weave" text="Join point 'method-execution(void A.foo())' in Type 'A' (A.java:8) advised by before advice from 'X' (A.java:12)"/>

Loading…
Cancel
Save