From d2ab7c219daefa33aef2e934c1b1d660cdad401e Mon Sep 17 00:00:00 2001 From: aclement Date: Mon, 15 Aug 2005 13:56:59 +0000 Subject: [PATCH] Fix for pr92880: I've removed the exception clause from the declaration of ajc$getInstance() and modified the internals to return null if an exception occurs rather than rethrowing it. I've only changed the code gen in the compiler layer, not in the weaver layer. (interestingly with only my compiler layer change, no tests fail...) --- .../ajdt/internal/compiler/ast/AspectDeclaration.java | 6 +++--- weaver/src/org/aspectj/weaver/AjcMemberMaker.java | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java index 1b0d3eaea..1039559cc 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java @@ -749,9 +749,9 @@ public class AspectDeclaration extends TypeDeclaration { exc.placeEnd(); codeStream.areturn(); exc.place(); - codeStream.astore_1(); - codeStream.aload_1(); - codeStream.athrow(); + // this just returns null now - the old version used to throw the caught exception! + codeStream.aconst_null(); + codeStream.areturn(); }}); } diff --git a/weaver/src/org/aspectj/weaver/AjcMemberMaker.java b/weaver/src/org/aspectj/weaver/AjcMemberMaker.java index 622ef79b1..29b61e4f0 100644 --- a/weaver/src/org/aspectj/weaver/AjcMemberMaker.java +++ b/weaver/src/org/aspectj/weaver/AjcMemberMaker.java @@ -178,15 +178,14 @@ public class AjcMemberMaker { // PTWIMPL ResolvedMember for getInstance() method, declared in aspect public static ResolvedMember perTypeWithinGetInstance(UnresolvedType declaringType) { -// private static a.X ajc$getInstance(java.lang.Class) throws java/lang/Exception +// private static a.X ajc$getInstance(java.lang.Class) ResolvedMemberImpl rm = new ResolvedMemberImpl( Member.METHOD, declaringType, PRIVATE_STATIC, declaringType, // return value NameMangler.PERTYPEWITHIN_GETINSTANCE_METHOD, - new UnresolvedType[]{UnresolvedType.JAVA_LANG_CLASS}, - new UnresolvedType[]{UnresolvedType.JAVA_LANG_EXCEPTION} + new UnresolvedType[]{UnresolvedType.JAVA_LANG_CLASS} ); return rm; } -- 2.39.5