Browse Source

436531: fix for weaving when method parameters around

tags/V1_8_1
Andy Clement 10 years ago
parent
commit
c4f9f951c3

+ 12
- 4
bcel-builder/src/org/aspectj/apache/bcel/classfile/MethodParameters.java View File

@@ -29,6 +29,8 @@ public class MethodParameters extends Attribute {
public final static int ACCESS_FLAGS_SYNTHETIC = 0x1000;
public final static int ACCESS_FLAGS_MANDATED = 0x8000;
// if 'isInPackedState' then this data needs unpacking
private boolean isInPackedState = false;
private byte[] data;
private int[] names;
private int[] accessFlags;
@@ -37,6 +39,7 @@ public class MethodParameters extends Attribute {
super(Constants.ATTR_METHOD_PARAMETERS,index,length,cpool);
data = new byte[length];
dis.read(data,0,length);
isInPackedState = true;
}
private void ensureInflated() {
@@ -55,6 +58,7 @@ public class MethodParameters extends Attribute {
accessFlags[i] = dis.readUnsignedShort();
}
}
isInPackedState = false;
} catch (IOException ioe) {
throw new RuntimeException("Unabled to inflate type annotation data, badly formed?");
}
@@ -62,10 +66,14 @@ public class MethodParameters extends Attribute {
public void dump(DataOutputStream dos) throws IOException {
super.dump(dos);
dos.writeByte(names.length);
for (int i=0;i<names.length;i++) {
dos.writeShort(names[i]);
dos.writeShort(accessFlags[i]);
if (isInPackedState) {
dos.write(data);
} else {
dos.writeByte(names.length);
for (int i=0;i<names.length;i++) {
dos.writeShort(names[i]);
dos.writeShort(accessFlags[i]);
}
}
}

BIN
lib/bcel/bcel-src.zip View File


BIN
lib/bcel/bcel-verifier.jar View File


BIN
lib/bcel/bcel.jar View File


+ 4
- 0
tests/bugs181/436531/Azpect.java View File

@@ -0,0 +1,4 @@
public aspect Azpect {
before(): execution(* method(..)) {}
}


BIN
tests/bugs181/436531/Code.class View File


+ 7
- 0
tests/bugs181/436531/Code.java View File

@@ -0,0 +1,7 @@
public class Code {
public void method(String string1, int param2, boolean b3) {
}
public void method2(String string1, int param2, boolean b3) {
}
}


BIN
tests/bugs181/436531/code.jar View File


+ 4
- 0
tests/src/org/aspectj/systemtest/ajc181/Ajc181Tests.java View File

@@ -21,6 +21,10 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
* @author Andy Clement
*/
public class Ajc181Tests extends org.aspectj.testing.XMLBasedAjcTestCase {

public void testParameterNamesAttribute_436531() {
runTest("parameter names attribute");
}
public void testVariableNotInitialized_431976() {
runTest("variable not initialized");

+ 4
- 0
tests/src/org/aspectj/systemtest/ajc181/ajc181.xml View File

@@ -2,6 +2,10 @@

<suite>

<ajc-test dir="bugs181/436531" title="parameter names attribute">
<compile options="-1.8" files="Azpect.java" inpath="code.jar"/>
</ajc-test>

<ajc-test dir="bugs181/431976" title="variable not initialized">
<compile options="-1.8" files="AbstractDependencyInjectionAspect.aj"/>
</ajc-test>

Loading…
Cancel
Save