1*af87fb4bSXin Li /* 2*af87fb4bSXin Li * Copyright 2022 Google LLC 3*af87fb4bSXin Li * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. 4*af87fb4bSXin Li * 5*af87fb4bSXin Li * Licensed under the Apache License, Version 2.0 (the "License"); 6*af87fb4bSXin Li * you may not use this file except in compliance with the License. 7*af87fb4bSXin Li * You may obtain a copy of the License at 8*af87fb4bSXin Li * 9*af87fb4bSXin Li * http://www.apache.org/licenses/LICENSE-2.0 10*af87fb4bSXin Li * 11*af87fb4bSXin Li * Unless required by applicable law or agreed to in writing, software 12*af87fb4bSXin Li * distributed under the License is distributed on an "AS IS" BASIS, 13*af87fb4bSXin Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*af87fb4bSXin Li * See the License for the specific language governing permissions and 15*af87fb4bSXin Li * limitations under the License. 16*af87fb4bSXin Li */ 17*af87fb4bSXin Li 18*af87fb4bSXin Li // WITH_RUNTIME 19*af87fb4bSXin Li // TEST PROCESSOR: AbstractFunctionsProcessor 20*af87fb4bSXin Li // EXPECTED: 21*af87fb4bSXin Li // abstractF01 22*af87fb4bSXin Li // abstractF02 23*af87fb4bSXin Li // abstractF04 24*af87fb4bSXin Li // abstractF05 25*af87fb4bSXin Li // END 26*af87fb4bSXin Li // FILE: AbstractClassKotlin.kt 27*af87fb4bSXin Li abstract class AbstractClassKotlin { abstractF01null28*af87fb4bSXin Li abstract fun abstractF01() 29*af87fb4bSXin Li fun concreteF01() = Unit 30*af87fb4bSXin Li companion object { 31*af87fb4bSXin Li fun concreteF02() = Unit 32*af87fb4bSXin Li @JvmStatic fun concreteF02() = Unit 33*af87fb4bSXin Li } 34*af87fb4bSXin Li } 35*af87fb4bSXin Li 36*af87fb4bSXin Li // FILE: InterfaceKotlin.kt 37*af87fb4bSXin Li interface InterfaceKotlin { abstractF02null38*af87fb4bSXin Li fun abstractF02() 39*af87fb4bSXin Li fun abstractWithDefaultF03() { /*default*/ Unit } 40*af87fb4bSXin Li companion object { concreteF03null41*af87fb4bSXin Li fun concreteF03() = Unit 42*af87fb4bSXin Li @JvmStatic fun concreteF04() = Unit 43*af87fb4bSXin Li } 44*af87fb4bSXin Li } 45*af87fb4bSXin Li 46*af87fb4bSXin Li // FILE: AbstractClassJava.java 47*af87fb4bSXin Li public abstract class AbstractClassJava { 48*af87fb4bSXin Li public abstract void abstractF04(); 49*af87fb4bSXin Li public void concreteF05() {} 50*af87fb4bSXin Li public static void staticF01() {} 51*af87fb4bSXin Li } 52*af87fb4bSXin Li 53*af87fb4bSXin Li // FILE: InterfaceJava.java 54*af87fb4bSXin Li public interface InterfaceJava { 55*af87fb4bSXin Li public void abstractF05(); 56*af87fb4bSXin Li public default void abstractWithDefaultF06() { /* default */ } 57*af87fb4bSXin Li public static void staticF02() {} 58*af87fb4bSXin Li } 59