Selaa lähdekoodia

537825: Remove FINAL for cflow related class elements for Java 9+

tags/V1_9_2_RC1
Andy Clement 5 vuotta sitten
vanhempi
commit
a5c0fc936f

+ 1
- 4
org.aspectj.matcher/src/org/aspectj/weaver/AjcMemberMaker.java Näytä tiedosto

* Contributors: * Contributors:
* PARC initial implementation * PARC initial implementation
* ******************************************************************/ * ******************************************************************/

package org.aspectj.weaver; package org.aspectj.weaver;


import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;


//import org.aspectj.weaver.ResolvedType.Name;

/** /**
* The AjcMemberMaker is responsible for creating the representations of methods/fields/etc that are placed in both aspects and * The AjcMemberMaker is responsible for creating the representations of methods/fields/etc that are placed in both aspects and
* affected target types. It uses the NameMangler class to create the actual names that will be used. * affected target types. It uses the NameMangler class to create the actual names that will be used.
} }


public static ResolvedMember perCflowField(UnresolvedType declaringType) { public static ResolvedMember perCflowField(UnresolvedType declaringType) {
return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC_FINAL, NameMangler.PERCFLOW_FIELD_NAME,
return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC, NameMangler.PERCFLOW_FIELD_NAME,
CFLOW_STACK_TYPE.getSignature()); CFLOW_STACK_TYPE.getSignature());
} }



+ 4
- 7
org.aspectj.matcher/src/org/aspectj/weaver/patterns/CflowPointcut.java Näytä tiedosto

pointcutKind = CFLOW; pointcutKind = CFLOW;
} }


/**
* @return Returns true is this is a cflowbelow pointcut
*/
public boolean isCflowBelow() { public boolean isCflowBelow() {
return isBelow; return isBelow;
} }
} else { } else {


// Create a counter field in the aspect // Create a counter field in the aspect
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC
| Modifier.FINAL, NameMangler.cflowCounter(xcut), UnresolvedType.forName(NameMangler.CFLOW_COUNTER_TYPE)
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC,
NameMangler.cflowCounter(xcut), UnresolvedType.forName(NameMangler.CFLOW_COUNTER_TYPE)
.getSignature()); .getSignature());


// Create type munger to add field to the aspect // Create type munger to add field to the aspect
localCflowField = (ResolvedMember) field; localCflowField = (ResolvedMember) field;
} else { } else {


localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC
| Modifier.FINAL, NameMangler.cflowStack(xcut), UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE)
localCflowField = new ResolvedMemberImpl(Member.FIELD, concreteAspect, Modifier.STATIC | Modifier.PUBLIC,
NameMangler.cflowStack(xcut), UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE)
.getSignature()); .getSignature());
// System.out.println("adding field to: " + inAspect + " field " // System.out.println("adding field to: " + inAspect + " field "
// + cflowField); // + cflowField);

+ 1
- 1
org.aspectj.matcher/src/org/aspectj/weaver/patterns/PerCflow.java Näytä tiedosto

return ret; return ret;
} }


Member cflowStackField = new ResolvedMemberImpl(Member.FIELD, inAspect, Modifier.STATIC | Modifier.PUBLIC | Modifier.FINAL,
Member cflowStackField = new ResolvedMemberImpl(Member.FIELD, inAspect, Modifier.PUBLIC | Modifier.STATIC,
UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE), NameMangler.PERCFLOW_FIELD_NAME, UnresolvedType.NONE); UnresolvedType.forName(NameMangler.CFLOW_STACK_TYPE), NameMangler.PERCFLOW_FIELD_NAME, UnresolvedType.NONE);


World world = inAspect.getWorld(); World world = inAspect.getWorld();

+ 12
- 0
tests/src/org/aspectj/systemtest/ajc192/Ajc192Tests.java Näytä tiedosto

*/ */
public class Ajc192Tests extends XMLBasedAjcTestCase { public class Ajc192Tests extends XMLBasedAjcTestCase {


public void testCflowFinal() {
runTest("no final on cflow elements");
}
public void testAroundAdvice_AnnoStyle() {
runTest("around advice");
}

public void testAroundAdvice_CodeStyle() {
runTest("around advice - 2");
}

public void testPTW_nonPrivileged() { public void testPTW_nonPrivileged() {
runTest("ptw"); runTest("ptw");
} }

+ 37
- 0
tests/src/org/aspectj/systemtest/ajc192/ajc192.xml Näytä tiedosto



<suite> <suite>


<ajc-test dir="bugs192/537825" title="no final on cflow elements">
<compile files="Code.java" options="-9">
</compile>
<run class="Code">
<stdout>
<line text="call(void B.methodB())"/>
<line text="staticinitialization(B.&lt;clinit&gt;)"/>
<line text="execution(void B.methodB())"/>
<line text="call(void C.methodC())"/>
<line text="staticinitialization(C.&lt;clinit&gt;)"/>
<line text="execution(void C.methodC())"/>
<line text="call(void D.methodD())"/>
<line text="staticinitialization(D.&lt;clinit&gt;)"/>
<line text="execution(void D.methodD())"/>
<line text="get(PrintStream java.lang.System.out)"/>
<line text="call(void java.io.PrintStream.println(int))"/>
<line text="3"/>
</stdout>
</run>
</ajc-test>
<ajc-test dir="bugs192/535156" title="around advice">
<compile files="DemoApp.java" options="-8 -showWeaveInfo">
<message kind="weave" text="Join point 'method-call(void DemoApp.say())' in Type 'DemoApp' (DemoApp.java:6) advised by around advice from 'X' (DemoApp.java:14)"/>
</compile>
<run class="DemoApp">
</run>
</ajc-test>
<ajc-test dir="bugs192/535156" title="around advice - 2">
<compile files="DemoApp2.java" options="-8 -showWeaveInfo">
<message kind="weave" text="Join point 'method-call(void DemoApp2.say())' in Type 'DemoApp2' (DemoApp2.java:6) advised by around advice from 'X' (DemoApp2.java:13)"/>
</compile>
<run class="DemoApp2">
</run>
</ajc-test>
<ajc-test dir="bugs192/ptw" title="ptw"> <ajc-test dir="bugs192/ptw" title="ptw">
<compile files="a/b/c/Code.java a/b/d/Foo.java" options="-8"> <compile files="a/b/c/Code.java a/b/d/Foo.java" options="-8">
</compile> </compile>

+ 4
- 4
tests/src/org/aspectj/systemtest/apt/AptTests.java Näytä tiedosto

/******************************************************************************* /*******************************************************************************
* Copyright (c) 2014 Contributors
* Copyright (c) 2014,2018 Contributors
* All rights reserved. This program and the accompanying materials * All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0 * are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at * which accompanies this distribution, and is available at
*******************************************************************************/ *******************************************************************************/
package org.aspectj.systemtest.apt; package org.aspectj.systemtest.apt;


import junit.framework.Test;
import org.aspectj.apache.bcel.classfile.Method;
import java.io.File;
import org.aspectj.testing.XMLBasedAjcTestCase; import org.aspectj.testing.XMLBasedAjcTestCase;
import org.aspectj.util.LangUtil; import org.aspectj.util.LangUtil;


import java.io.File;
import junit.framework.Test;


/** /**
* Annotation processing tool tests. * Annotation processing tool tests.

Loading…
Peruuta
Tallenna