From a9ca915dc39c87267a7a763d51e87a819e9799c7 Mon Sep 17 00:00:00 2001 From: acolyer Date: Fri, 9 Sep 2005 10:48:58 +0000 Subject: [PATCH] tests and fix for pr109124, not correctly recognizing synthetic fields under 1.5 --- tests/bugs150/VerifyErrorOnSet.aj | 35 +++++++++++++++++++ .../systemtest/ajc150/Ajc150Tests.java | 4 +++ .../org/aspectj/systemtest/ajc150/ajc150.xml | 8 +++++ .../org/aspectj/weaver/bcel/BcelField.java | 8 +++++ 4 files changed, 55 insertions(+) create mode 100644 tests/bugs150/VerifyErrorOnSet.aj diff --git a/tests/bugs150/VerifyErrorOnSet.aj b/tests/bugs150/VerifyErrorOnSet.aj new file mode 100644 index 000000000..a37f027c3 --- /dev/null +++ b/tests/bugs150/VerifyErrorOnSet.aj @@ -0,0 +1,35 @@ +package test; +public class VerifyErrorOnSet { + + class Node { + int value; + + Node(int v) + { + value = v; + } + } + + + public VerifyErrorOnSet() + { + new Node(1); + } + + public static void main(String[] args) { + VerifyErrorOnSet l = new VerifyErrorOnSet(); + } + +} + + +aspect ListAspect { + + pointcut setField(Object t) : target(t) && set(* VerifyErrorOnSet.Node+.*); + + before(Object t) : setField(t) { + System.out.println("WRITE"); + // Do something with t... + } + +} diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java index f129c6f9f..08dba80f3 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java @@ -409,6 +409,10 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase { public void testNoUnusedParameterWarningsForSyntheticAdviceArgs() { runTest("no unused parameter warnings for synthetic advice args"); } + + public void testNoVerifyErrorWithSetOnInnerType() { + runTest("no verify error with set on inner type"); + } // helper methods..... public SyntheticRepository createRepos(File cpentry) { diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index c9e48d1b3..b8ba23212 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -522,6 +522,14 @@ + + + + + + + + diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelField.java b/weaver/src/org/aspectj/weaver/bcel/BcelField.java index ad8edab0d..0e6f0f162 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelField.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelField.java @@ -34,6 +34,8 @@ import org.aspectj.weaver.bcel.BcelGenericSignatureToTypeXConverter.GenericSigna final class BcelField extends ResolvedMemberImpl { + private static int AccSynthetic = 0x1000; + private Field field; private boolean isAjSynthetic; private boolean isSynthetic = false; @@ -78,6 +80,12 @@ final class BcelField extends ResolvedMemberImpl { for (int i = attrs.length - 1; i >= 0; i--) { if (attrs[i] instanceof Synthetic) isSynthetic = true; } + + // in 1.5, synthetic is a modifier, not an attribute + if ((field.getModifiers() & AccSynthetic) != 0) { + isSynthetic = true; + } + } -- 2.39.5