1d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light/* 2d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Copyright (C) 2015 The Android Open Source Project 3d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * 4d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Licensed under the Apache License, Version 2.0 (the "License"); 5d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * you may not use this file except in compliance with the License. 6d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * You may obtain a copy of the License at 7d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * 8d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * http://www.apache.org/licenses/LICENSE-2.0 9d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * 10d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * Unless required by applicable law or agreed to in writing, software 11d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * distributed under the License is distributed on an "AS IS" BASIS, 12d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * See the License for the specific language governing permissions and 14d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light * limitations under the License. 15d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light */ 16d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Lightclass Main implements Iface, Iface2, Iface3 { 17d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light public static void main(String[] args) { 18d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Create Main instance"); 19d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light Main m = new Main(); 20d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling functions on concrete Main"); 21d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light callMain(m); 22d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling functions on interface Iface"); 23d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light callIface(m); 24d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling functions on interface Iface2"); 25d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light callIface2(m); 26d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 27d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light public static void callMain(Main m) { 28d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling non-abstract function on Main"); 29d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.charge()); 30d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling abstract function on Main"); 31d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light try { 32d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.sayHi()); 33d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected no error Thrown on Main"); 34d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (AbstractMethodError e) { 35d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Expected AME Thrown on Main"); 36d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (IncompatibleClassChangeError e) { 37d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected ICCE Thrown on Main"); 38d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 39d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling non-abstract function on Main"); 40d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.charge()); 41d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light return; 42d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 43d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light public static void callIface(Iface m) { 44d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling non-abstract function on Iface"); 45d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.charge()); 46d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling abstract function on Iface"); 47d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light try { 48d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.sayHi()); 49d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected no error Thrown on Iface"); 50d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (AbstractMethodError e) { 51d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Expected AME Thrown on Iface"); 52d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (IncompatibleClassChangeError e) { 53d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected ICCE Thrown on Iface"); 54d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 55d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling non-abstract function on Iface"); 56d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.charge()); 57d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light return; 58d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 59d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light public static void callIface2(Iface2 m) { 60d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Calling abstract function on Iface2"); 61d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light try { 62d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println(m.sayHi()); 63d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected no error Thrown on Iface2"); 64d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (AbstractMethodError e) { 65d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Expected AME Thrown on Iface2"); 66d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } catch (IncompatibleClassChangeError e) { 67d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light System.out.println("Unexpected ICCE Thrown on Iface2"); 68d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 69d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light return; 70d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light } 71d204ba5ac9c5488880d85dc198e7b6aefea2f0bbAlex Light} 72