diff options
author | aclement <aclement> | 2004-08-05 09:24:52 +0000 |
---|---|---|
committer | aclement <aclement> | 2004-08-05 09:24:52 +0000 |
commit | d8fa2e2f2706279779f3818b2af9825396f5e574 (patch) | |
tree | ece1a7717e581c36778562b474e29c033c188389 /tests/bugs | |
parent | aafe4244db32cb6b75c80bd712ef6188bb2a1d4e (diff) | |
download | aspectj-d8fa2e2f2706279779f3818b2af9825396f5e574.tar.gz aspectj-d8fa2e2f2706279779f3818b2af9825396f5e574.zip |
Tests for
Bugzilla Bug 71273 - RuntimeException thrown: Could not find instruction: org.apache.bcel.generic.B2I
Bugzilla Bug 67591 - invalid warning indicating no match when a match really occurs
Diffstat (limited to 'tests/bugs')
-rw-r--r-- | tests/bugs/NoByteToInt.java | 103 | ||||
-rw-r--r-- | tests/bugs/typeVisibilityProblem/Main.java | 44 |
2 files changed, 147 insertions, 0 deletions
diff --git a/tests/bugs/NoByteToInt.java b/tests/bugs/NoByteToInt.java new file mode 100644 index 000000000..b60faf9d5 --- /dev/null +++ b/tests/bugs/NoByteToInt.java @@ -0,0 +1,103 @@ +// +// class NoByteToInt { +// +// static final byte DEFAULT_MODE = 0; +// static final byte RECORDING = 2; +// +// static byte mode = DEFAULT_MODE; +// +// public static void main (String[] args) { +// mode = RECORDING; +// } +// +//} +// +// privileged aspect LoggingControl { +// +// /* ERROR */ +// pointcut startRecording1 (int newMode) : +// set(byte NoByteToInt.mode) && args(newMode) && if(newMode != 5); +// +// after () returning : startRecording1 (*) { +// +// } +// +//// /* OK */ +//// pointcut startRecording2 (byte newMode) : +//// set(byte NoByteToInt.mode) && args(newMode) && if(newMode == +////NoByteToInt.RECORDING); +//// +//// after () returning : startRecording2 (*) { +//// +//// } +// +// /* OK */ +// pointcut startRecording3 (int newMode) : +// set(byte NoByteToInt.mode) && args(newMode); +// +// after (int newMode) returning : startRecording3 (newMode) { +// if (newMode == NoByteToInt.RECORDING) { +// +// } +// } +//} +// +public class NoByteToInt { + + static byte mode; + + public static void main (String[] args) { + setByte(); + setChar(); + setShort(); + } + + public static void setByte() { + mode = 0; + mode = 2; + mode = 127; + } + + static char c; + + public static void setChar() { + c = 'A'; + c = 'B'; + c = 'C'; + } + + static short s; + + public static void setShort() { + s = 1; + s = 32767; + } + +} + + privileged aspect LoggingControl { + + /* ERROR */ + pointcut startRecording1 (int newMode) : + set(byte NoByteToInt.mode) && args(newMode) && if(newMode!=3); + + after (int n) returning : startRecording1 (n) { + System.err.println("[b"+n+"]"); + } + + pointcut startRecording2 (int newMode) : + set(char NoByteToInt.c) && args(newMode) && if(newMode!=3); + + after (int n) returning : startRecording2 (n) { + System.err.println("[c"+n+"]"); + } + + pointcut startRecording3 (int newMode) : + set(short NoByteToInt.s) && args(newMode) && if(newMode!=3); + + after (int n) returning : startRecording3 (n) { + System.err.println("[s"+n+"]"); + } + + +}
\ No newline at end of file diff --git a/tests/bugs/typeVisibilityProblem/Main.java b/tests/bugs/typeVisibilityProblem/Main.java new file mode 100644 index 000000000..2783284e3 --- /dev/null +++ b/tests/bugs/typeVisibilityProblem/Main.java @@ -0,0 +1,44 @@ +public class Main { + + private static class Foo { + int x; + Foo(int x) { this.x = x; } + }; + + private static int foo(int x) { return x+1; } + + public static void main (String args[]) + { Main.foo(1); + new Foo(2); + } + + } + + aspect Aspect { + // calls to a private method + before () : call(* foo(..)) + { System.out.println("Matches * foo(..)"); + } + + before () : call(int foo(int)) + { System.out.println("Matches int foo(int)"); + } + + before () : call(private * foo(..)) + { System.out.println("Matches private * foo(..)"); + } + + before () : call(* foo*(..)) + { System.out.println("Matches * foo*(..)"); + } + + // calls to a constructor that is in a private inner class + before () : call(Main.Foo.new(..)) // <- warning from here + { System.out.println("Matches Main.Foo.new(..)"); + } + + before () : call(Main.Foo*.new(..)) + { System.out.println("Matches Main.Foo*.new(..)"); + } + + }
\ No newline at end of file |