1f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle/*
2f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * Copyright (C) 2015 The Android Open Source Project
3f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle *
4f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * Licensed under the Apache License, Version 2.0 (the "License");
5f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * you may not use this file except in compliance with the License.
6f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * You may obtain a copy of the License at
7f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle *
8f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle *      http://www.apache.org/licenses/LICENSE-2.0
9f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle *
10f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * Unless required by applicable law or agreed to in writing, software
11f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * distributed under the License is distributed on an "AS IS" BASIS,
12f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * See the License for the specific language governing permissions and
14f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle * limitations under the License.
15f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle */
16f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
17f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravleimport java.lang.reflect.Method;
18f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
19f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravlepublic class Main {
20f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
21f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle  // Workaround for b/18051191.
22f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle  class InnerClass {}
23f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
24f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle  public static void main(String args[]) throws Exception {
25f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle    try {
26f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle      Class<?> c = Class.forName("Test");
27166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe      Method m = c.getMethod("ThrowException");
28166aaee6aa39c20c87113b3fcf0dcd81e0a934cbAndreas Gampe      m.invoke(null);
29f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle    } catch (VerifyError e) {
30f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle       // Compilation should go fine but we expect the runtime verification to fail.
31f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle      return;
32f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle    }
33f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
34f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle    throw new Error("Failed to preset verification error!");
35f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle  }
36f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle
37f1c6d9e87cbfd27702103ccc7c7f08ce784dc872Calin Juravle}
38