From: jhugunin Date: Mon, 30 Dec 2002 20:29:56 +0000 (+0000) Subject: checking that parameter to after throwing isa Throwable X-Git-Tag: V_1_1_b5~205 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8bc24339ac5a28c60f53f9f178635e66d8729800;p=aspectj.git checking that parameter to after throwing isa Throwable --- diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java index 157d54320..65bf5c352 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java @@ -72,6 +72,16 @@ public class AdviceDeclaration extends MethodDeclaration { modifiers = binding.modifiers = checkAndSetModifiers(modifiers, upperScope); + if (kind == AdviceKind.AfterThrowing && extraArgument != null) { + TypeBinding argTb = extraArgument.binding.type; + TypeBinding expectedTb = upperScope.getJavaLangThrowable(); + if (!upperScope.areTypesCompatible(argTb, expectedTb)) { + scope.problemReporter().typeMismatchError(argTb, expectedTb, extraArgument); + ignoreFurtherInvestigation = true; + return; + } + } + pointcutDesignator.finishResolveTypes(this, this.binding, baseArgumentCount, upperScope.referenceContext.binding); @@ -160,6 +170,8 @@ public class AdviceDeclaration extends MethodDeclaration { public void generateCode(ClassScope classScope, ClassFile classFile) { + if (ignoreFurtherInvestigation) return; + super.generateCode(classScope, classFile); if (proceedMethodBinding != null) { generateProceedMethod(classScope, classFile);