aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs
diff options
context:
space:
mode:
authoraclement <aclement>2004-08-05 09:24:52 +0000
committeraclement <aclement>2004-08-05 09:24:52 +0000
commitd8fa2e2f2706279779f3818b2af9825396f5e574 (patch)
treeece1a7717e581c36778562b474e29c033c188389 /tests/bugs
parentaafe4244db32cb6b75c80bd712ef6188bb2a1d4e (diff)
downloadaspectj-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.java103
-rw-r--r--tests/bugs/typeVisibilityProblem/Main.java44
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