aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2006-06-20 07:51:45 +0000
committeraclement <aclement>2006-06-20 07:51:45 +0000
commit1468daa88534262ebdd209574d3be360a0c78143 (patch)
tree8c29bfee9c0ff4cc268c7e48436b8d9795b5cb3b
parent8cab27018dc4dc96ad5eba90df86dfe232ecb967 (diff)
downloadaspectj-1468daa88534262ebdd209574d3be360a0c78143.tar.gz
aspectj-1468daa88534262ebdd209574d3be360a0c78143.zip
test and fix for 147701: @DeclareParents: was failing to include package name for checked exceptions, failing to report when impl class didnt implement interface
-rw-r--r--tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java3
-rw-r--r--tests/src/org/aspectj/systemtest/ajc152/ajc152.xml16
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java3
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java1
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWorld.java2
5 files changed, 23 insertions, 2 deletions
diff --git a/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java b/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
index c33abb8ab..6871867d8 100644
--- a/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
@@ -32,6 +32,9 @@ public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
// public void testBrokenIfArgsCflowAtAj_pr145018() { runTest("ataj crashing with cflow, if and args");}
// public void testItdCallingGenericMethod_pr145391() { runTest("itd calling generic method");}
// public void testItdCallingGenericMethod_pr145391_2() { runTest("itd calling generic method - 2");}
+ public void testPackageIgnoredForException_pr147701_1() { runTest("package for exception ignored");}
+ public void testPackageIgnoredForException_pr147701_2() { runTest("package for exception ignored - 2");}
+ public void testPackageIgnoredForException_pr147701_3() { runTest("package for exception ignored - 3");}
public void testBrokenAddSerialVersionUID_pr145950() {runTest("fails to discover Serializable");}
public void testNoUnnecessaryDeclarationOfThrownExcp_pr129282_1() {runTest("no unnecessary declaration of thrown exception warning - 1");}
public void testNoUnnecessaryDeclarationOfThrownExcp_pr129282_2() {runTest("no unnecessary declaration of thrown exception warning - 2");}
diff --git a/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml b/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
index 77e80c794..1525089a0 100644
--- a/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
+++ b/tests/src/org/aspectj/systemtest/ajc152/ajc152.xml
@@ -630,6 +630,22 @@
<ajc-test dir="bugs152" title="new IProgramElement handle methods">
<compile files="pr141730.aj" options="-emacssym -1.5"/>
</ajc-test>
+
+ <ajc-test dir="bugs152/pr147701" title="package for exception ignored">
+ <compile files="TestBean.java" options="-1.5"/>
+ <run class="a.b.c.TestBean"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs152/pr147701" title="package for exception ignored - 2">
+ <compile files="TestBean2.java" options="-1.5"/>
+ <run class="a.b.c.TestBean2"/>
+ </ajc-test>
+
+ <ajc-test dir="bugs152/pr147701" title="package for exception ignored - 3">
+ <compile files="TestBean3.java" options="-1.5">
+ <message kind="error" text="@DeclareParents: defaultImpl=&quot;a.b.c.Impl&quot; does not implement the interface 'a.b.c.I'"/>
+ </compile>
+ </ajc-test>
<ajc-test dir="bugs152" title="declare @method relationship">
<compile files="pr143924.aj" options="-1.5 -showWeaveInfo -emacssym">
diff --git a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
index ed676fde9..4e28a619e 100644
--- a/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
+++ b/weaver/src/org/aspectj/weaver/bcel/AtAjAttributes.java
@@ -734,6 +734,9 @@ public class AtAjAttributes {
+ defaultImplClassName
+ "\" has no public no-arg constructor", struct);
}
+ if (!fieldType.isAssignableFrom(impl)) {
+ reportError("@DeclareParents: defaultImpl=\""+defaultImplClassName+"\" does not implement the interface '"+fieldType.toString()+"'",struct);
+ }
}
}
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java
index c7cc01c79..cee9a43f0 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java
@@ -1168,7 +1168,6 @@ public class BcelTypeMunger extends ConcreteTypeMunger {
);
mg.getBody().append(body);
- // XXX make sure to check that we set exceptions properly on this guy.
weaver.addLazyMethodGen(mg);
weaver.getLazyClassGen().warnOnAddedMethod(mg.getMethod(),getSignature().getSourceLocation());
return true;
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
index e75f79a27..c06f963c0 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java
@@ -227,7 +227,7 @@ public class BcelWorld extends World implements Repository {
static String[] makeBcelTypesAsClassNames(UnresolvedType[] types) {
String[] ret = new String[types.length];
for (int i = 0, len = types.length; i < len; i++) {
- ret[i] = types[i].getClassName();//makeBcelType(types[i]);
+ ret[i] = types[i].getName();
}
return ret;
}