OSDN Git Service

AI 144240: Added a test for a bug reported externally (via android-platform).
authorAndy McFadden <>
Thu, 2 Apr 2009 17:53:00 +0000 (10:53 -0700)
committerThe Android Open Source Project <initial-contribution@android.com>
Thu, 2 Apr 2009 17:53:00 +0000 (10:53 -0700)
  Through separate compilation and inheritance, it's possible for a
  class to have static and instance fields with the same name.  This
  test verifies that we throw an IncompatibleClassChangeError when this
  occurs.  (The test currently fails.)
  Also: my change 126993-p9 made "--dev" visible to the "helper" scripts,
  but only the "local" one accepts it.  Fixed the other two to accept
  and ignore it.
  BUG=1752800

Automated import of CL 144240

tests/073-mismatched-field/expected.txt [new file with mode: 0644]
tests/073-mismatched-field/info.txt [new file with mode: 0644]
tests/073-mismatched-field/src/IMain.java [new file with mode: 0644]
tests/073-mismatched-field/src/Main.java [new file with mode: 0644]
tests/073-mismatched-field/src/SuperMain.java [new file with mode: 0644]
tests/073-mismatched-field/src2/IMain.java [new file with mode: 0644]
tests/etc/push-and-run-test-jar
tests/etc/reference-run-test-classes

diff --git a/tests/073-mismatched-field/expected.txt b/tests/073-mismatched-field/expected.txt
new file mode 100644 (file)
index 0000000..90fbab8
--- /dev/null
@@ -0,0 +1 @@
+Got expected failure
diff --git a/tests/073-mismatched-field/info.txt b/tests/073-mismatched-field/info.txt
new file mode 100644 (file)
index 0000000..4a15263
--- /dev/null
@@ -0,0 +1,3 @@
+Test behavior when an instance field is overlapped (through separate
+compilation) by a static field.  The VM is expected to detect the conflict
+and throw an IncompatibleClassChangeError when the field is accessed.
diff --git a/tests/073-mismatched-field/src/IMain.java b/tests/073-mismatched-field/src/IMain.java
new file mode 100644 (file)
index 0000000..301dd21
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public interface IMain {
+    //static int f = 123;
+}
+
diff --git a/tests/073-mismatched-field/src/Main.java b/tests/073-mismatched-field/src/Main.java
new file mode 100644 (file)
index 0000000..fb9f32a
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Main extends SuperMain implements IMain {
+    public static void main(String[] args) {
+        Main main = new Main();
+        main.doit();
+    }
+
+    void doit() {
+        try {
+            System.out.println("value=" + this.f);
+            System.err.println("Succeeded unexpectedly");
+        } catch (IncompatibleClassChangeError icce) {
+            System.out.println("Got expected failure");
+        }
+    }
+}
+
diff --git a/tests/073-mismatched-field/src/SuperMain.java b/tests/073-mismatched-field/src/SuperMain.java
new file mode 100644 (file)
index 0000000..7447739
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class SuperMain {
+    public int f = 456;
+}
+
diff --git a/tests/073-mismatched-field/src2/IMain.java b/tests/073-mismatched-field/src2/IMain.java
new file mode 100644 (file)
index 0000000..585c738
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public interface IMain {
+    static int f = 123;
+}
+
index a7dc9af..db7addc 100755 (executable)
@@ -9,8 +9,10 @@
 #   --portable    -- use the portable interpreter
 #   --debug       -- wait for debugger to attach
 #   --zygote      -- use the zygote (if so, all other options are ignored)
+#   --dev         -- development mode
 #   --no-verify   -- turn off verification (on by default)
 #   --no-optimize -- turn off optimization (on by default)
+#   --no-precise  -- turn off precise GC (on by default)
 
 msg() {
     if [ "$QUIET" = "n" ]; then
@@ -45,6 +47,9 @@ while true; do
         ZYGOTE="y"
         msg "Spawning from zygote"
         shift
+    elif [ "x$1" = "x--dev" ]; then
+        # not used; ignore
+        shift
     elif [ "x$1" = "x--no-verify" ]; then
         VERIFY="n"
         shift
index cc2c39d..94c8050 100755 (executable)
@@ -7,6 +7,7 @@
 #   --quiet       -- don't chatter
 #   --debug       -- wait for debugger to attach
 #   --no-verify   -- turn off verification (on by default)
+#   --dev         -- development mode
 
 msg() {
     if [ "$QUIET" = "n" ]; then
@@ -28,6 +29,9 @@ while true; do
     elif [ "x$1" = "x--no-verify" ]; then
         VERIFY="n"
         shift
+    elif [ "x$1" = "x--dev" ]; then
+        # not used; ignore
+        shift
     elif [ "x$1" = "x--" ]; then
         shift
         break