diff options
author | aclement <aclement> | 2006-06-20 07:51:45 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-06-20 07:51:45 +0000 |
commit | 1468daa88534262ebdd209574d3be360a0c78143 (patch) | |
tree | 8c29bfee9c0ff4cc268c7e48436b8d9795b5cb3b | |
parent | 8cab27018dc4dc96ad5eba90df86dfe232ecb967 (diff) | |
download | aspectj-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
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="a.b.c.Impl" 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; } |