From: wisberg Date: Wed, 23 Apr 2003 00:32:49 +0000 (+0000) Subject: @testcase try/finally in around advice (same as ...messy arounds?) X-Git-Tag: V1_1_0_RC2~158 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=90b260074423dc1fbafc3a33764606a58cb78f90;p=aspectj.git @testcase try/finally in around advice (same as ...messy arounds?) Works in current tree, but not in 1.1rc1 --- diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index 8785b0b8a..7bc3af750 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -5850,5 +5850,11 @@ + + + + + diff --git a/tests/new/TryFinallyInAround.java b/tests/new/TryFinallyInAround.java new file mode 100644 index 000000000..b963eab0d --- /dev/null +++ b/tests/new/TryFinallyInAround.java @@ -0,0 +1,39 @@ + +import org.aspectj.testing.Tester; + +// XXX broken in 1.1rc1, fixed in tree as of 4/22 +/** @testcase try/finally in around advice (same as ...messy arounds?) */ +public class TryFinallyInAround { + public static void main(String[] args) { + int i = new C().go(); + Tester.check(2 == i, "expected 2 got " + i); + } +} + +class C { + int i = 1; + int go() { + dowork(); + return i; + } + void dowork() { + i++; + } +} + +aspect A { + Object around() : + within(C) + && !cflow(within(A)) + && !handler(*) + && !preinitialization(new(..)) // 1.1 + && !initialization(new(..)) + { + // no bug if reduced to proceed(); + try { + return proceed(); + } finally { + if (false) System.out.println("ok"); + } + } +}