summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-12-14 17:27:24 -0800
committerElliott Hughes <enh@google.com>2012-12-17 09:08:24 -0800
commit889344df4bb5cace0b8efbc1e3114406df95ceea (patch)
tree202154066990408b1e87d5a50e9329e62b2d8af0 /tests
parenteeae8a8926f647133dc858661b5b167595cf7f30 (diff)
downloadandroid_dalvik-889344df4bb5cace0b8efbc1e3114406df95ceea.tar.gz
android_dalvik-889344df4bb5cace0b8efbc1e3114406df95ceea.tar.bz2
android_dalvik-889344df4bb5cace0b8efbc1e3114406df95ceea.zip
Fix handling of annotations whose classes are missing at runtime.
Bug: http://code.google.com/p/android/issues/detail?id=39854 Change-Id: I3089b693ff3084b093f991f991ac9273dea7356d
Diffstat (limited to 'tests')
-rw-r--r--tests/004-annotations/build27
-rw-r--r--tests/004-annotations/src/android/test/anno/MissingAnnotation.java8
-rw-r--r--tests/004-annotations/src/android/test/anno/SimplyNoted.java6
3 files changed, 41 insertions, 0 deletions
diff --git a/tests/004-annotations/build b/tests/004-annotations/build
new file mode 100644
index 000000000..c147cb26c
--- /dev/null
+++ b/tests/004-annotations/build
@@ -0,0 +1,27 @@
+#!/bin/bash
+#
+# Copyright (C) 2012 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.
+
+# Stop if something fails.
+set -e
+
+mkdir classes
+
+# android.test.anno.MissingAnnotation is available at compile time...
+${JAVAC} -d classes `find src -name '*.java'`
+
+# ...but not at run time.
+rm classes/android/test/anno/MissingAnnotation.class
+dx -JXmx256m --debug --dex --output=test.jar classes
diff --git a/tests/004-annotations/src/android/test/anno/MissingAnnotation.java b/tests/004-annotations/src/android/test/anno/MissingAnnotation.java
new file mode 100644
index 000000000..56da15a25
--- /dev/null
+++ b/tests/004-annotations/src/android/test/anno/MissingAnnotation.java
@@ -0,0 +1,8 @@
+package android.test.anno;
+
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Retention(RUNTIME) public @interface MissingAnnotation {
+}
+
diff --git a/tests/004-annotations/src/android/test/anno/SimplyNoted.java b/tests/004-annotations/src/android/test/anno/SimplyNoted.java
index 95a3d249a..b75746589 100644
--- a/tests/004-annotations/src/android/test/anno/SimplyNoted.java
+++ b/tests/004-annotations/src/android/test/anno/SimplyNoted.java
@@ -3,24 +3,30 @@ package android.test.anno;
@AnnoSimpleType
@AnnoSimpleType2
@AnnoSimpleTypeInvis
+@MissingAnnotation
public class SimplyNoted {
@AnnoSimpleField
+ @MissingAnnotation
public int mFoo;
@AnnoSimpleField
+ @MissingAnnotation
public static int mOneFoo;
@AnnoSimpleConstructor
+ @MissingAnnotation
SimplyNoted() {
mFoo = 0;
}
@AnnoSimpleConstructor
+ @MissingAnnotation
SimplyNoted(@AnnoSimpleParameter int xyzzy) {
mFoo = xyzzy;
}
@AnnoSimpleMethod
+ @MissingAnnotation
public int foo() {
@AnnoSimpleLocalVariable
int bar = 5;