aboutsummaryrefslogtreecommitdiff
path: root/test-utils/testData/api/overridee.kt
diff options
context:
space:
mode:
Diffstat (limited to 'test-utils/testData/api/overridee.kt')
-rw-r--r--test-utils/testData/api/overridee.kt321
1 files changed, 321 insertions, 0 deletions
diff --git a/test-utils/testData/api/overridee.kt b/test-utils/testData/api/overridee.kt
new file mode 100644
index 00000000..39173f93
--- /dev/null
+++ b/test-utils/testData/api/overridee.kt
@@ -0,0 +1,321 @@
+/*
+ * Copyright 2020 Google LLC
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ *
+ * 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.
+ */
+
+// WITH_RUNTIME
+// TEST PROCESSOR: OverrideeProcessor
+// EXPECTED:
+// NoOverride:
+// NoOverride.propInParam -> null
+// NoOverride.prop -> null
+// NoOverride.func(param:Int) -> null
+// Subject:
+// Companion.companionMethod() -> null
+// Subject.notOverridingProp -> null
+// Subject.overriddenBaseProp -> Base.overriddenBaseProp
+// Subject.overriddenAbstractBaseProp -> Base.overriddenAbstractBaseProp
+// Subject.openGrandBaseProp -> GrandBase.openGrandBaseProp
+// Subject.abstractGrandBaseProp -> GrandBase.abstractGrandBaseProp
+// Subject.overriddenGrandBaseProp -> Base.overriddenGrandBaseProp
+// Subject.overriddenAbstractGrandBaseProp -> Base.overriddenAbstractGrandBaseProp
+// Subject.openFun() -> Base.openFun()
+// Subject.abstractFun() -> Base.abstractFun()
+// Subject.openFunWithGenericArg(t:String) -> Base.openFunWithGenericArg(t:T)
+// Subject.abstractFunWithGenericArg(t:String) -> Base.abstractFunWithGenericArg(t:T)
+// Subject.nonOverridingMethod() -> null
+// Subject.overriddenGrandBaseFun() -> Base.overriddenGrandBaseFun()
+// Subject.overriddenAbstractGrandBaseFun() -> Base.overriddenAbstractGrandBaseFun()
+// Subject.openGrandBaseFun() -> GrandBase.openGrandBaseFun()
+// Subject.abstractGrandBaseFun() -> GrandBase.abstractGrandBaseFun()
+// JavaSubject.Subject:
+// Subject.openFun() -> Base.openFun()
+// Subject.abstractFun() -> Base.abstractFun()
+// Subject.openFunWithGenericArg(t:String) -> Base.openFunWithGenericArg(t:T)
+// Subject.abstractFunWithGenericArg(t:String) -> Base.abstractFunWithGenericArg(t:T)
+// Subject.nonOverridingMethod() -> null
+// Subject.overriddenGrandBaseFun() -> Base.overriddenGrandBaseFun()
+// Subject.overriddenAbstractGrandBaseFun() -> Base.overriddenAbstractGrandBaseFun()
+// Subject.openGrandBaseFun() -> GrandBase.openGrandBaseFun()
+// Subject.abstractGrandBaseFun() -> GrandBase.abstractGrandBaseFun()
+// Subject.staticMethod() -> null
+// lib.Subject:
+// Companion.companionMethod() -> null
+// Subject.abstractGrandBaseProp -> GrandBase.abstractGrandBaseProp
+// Subject.notOverridingProp -> null
+// Subject.openGrandBaseProp -> GrandBase.openGrandBaseProp
+// Subject.overriddenAbstractBaseProp -> Base.overriddenAbstractBaseProp
+// Subject.overriddenAbstractGrandBaseProp -> Base.overriddenAbstractGrandBaseProp
+// Subject.overriddenBaseProp -> Base.overriddenBaseProp
+// Subject.overriddenGrandBaseProp -> Base.overriddenGrandBaseProp
+// Subject.abstractFun() -> Base.abstractFun()
+// Subject.abstractFunWithGenericArg(t:String) -> Base.abstractFunWithGenericArg(t:T)
+// Subject.abstractGrandBaseFun() -> GrandBase.abstractGrandBaseFun()
+// Subject.nonOverridingMethod() -> null
+// Subject.openFun() -> Base.openFun()
+// Subject.openFunWithGenericArg(t:String) -> Base.openFunWithGenericArg(t:T)
+// Subject.openGrandBaseFun() -> GrandBase.openGrandBaseFun()
+// Subject.overriddenAbstractGrandBaseFun() -> Base.overriddenAbstractGrandBaseFun()
+// Subject.overriddenGrandBaseFun() -> Base.overriddenGrandBaseFun()
+// ConflictingSubject1:
+// ConflictingSubject1.absFoo() -> MyInterface.absFoo()
+// ConflictingSubject2:
+// ConflictingSubject2.absFoo() -> MyAbstract.absFoo()
+// ConflictingSubject3:
+// ConflictingSubject3.absFoo() -> MyInterface.absFoo()
+// ConflictingSubject4:
+// ConflictingSubject4.absFoo() -> MyInterface2.absFoo()
+// OverrideOrder1:
+// OverrideOrder1.foo() -> GrandBaseInterface2.foo()
+// OverrideOrder2:
+// OverrideOrder2.foo() -> GrandBaseInterface1.foo()
+// JavaAccessorImpl:
+// JavaAccessorImpl.getX() -> KtInterfaceWithProperty.x
+// JavaAccessorImpl.getY() -> KtInterfaceWithProperty.y
+// JavaAccessorImpl.setY(value:Int) -> KtInterfaceWithProperty.y
+// JavaAnno:
+// JavaAnno.intParam() -> null
+// JavaAnnos:
+// JavaAnnos.value() -> null
+// PrimaryConstructorOverride:
+// PrimaryConstructorOverride.x -> KtInterfaceWithProperty.x
+// PrimaryConstructorOverride.y -> KtInterfaceWithProperty.y
+// END
+// MODULE: lib
+// FILE: lib.kt
+package lib;
+abstract class GrandBase {
+ open var openGrandBaseProp: Int = 0
+ abstract var abstractGrandBaseProp: Int
+ open var overriddenGrandBaseProp: Int = 0
+ abstract var overriddenAbstractGrandBaseProp: Int
+ open fun openGrandBaseFun() {}
+ abstract fun abstractGrandBaseFun()
+ open fun overriddenGrandBaseFun() {}
+ abstract fun overriddenAbstractGrandBaseFun()
+}
+abstract class Base<T> : GrandBase() {
+ open var overriddenBaseProp: Int = 0
+ abstract var overriddenAbstractBaseProp: Int
+ override var overriddenGrandBaseProp:Int = 0
+ override var overriddenAbstractGrandBaseProp: Int = 0
+ open fun openFun() {}
+ abstract fun abstractFun():Unit
+ open fun openFunWithGenericArg(t:T):T = TODO()
+ abstract fun abstractFunWithGenericArg(t:T):T
+ override open fun overriddenGrandBaseFun() {}
+ override open fun overriddenAbstractGrandBaseFun() {}
+}
+
+abstract class Subject: Base<String>() {
+ var notOverridingProp: Int = 0
+ override open var overriddenBaseProp: Int = 0
+ override var overriddenAbstractBaseProp: Int = 0
+ override open var openGrandBaseProp: Int = 0
+ override var abstractGrandBaseProp: Int = 0
+ override var overriddenGrandBaseProp:Int = 0
+ override var overriddenAbstractGrandBaseProp: Int = 0
+ override fun openFun() {}
+ override fun abstractFun() {}
+ override fun openFunWithGenericArg(t:String):String = TODO()
+ override fun abstractFunWithGenericArg(t:String):String = TODO()
+ fun nonOverridingMethod(): String =TODO()
+ override fun overriddenGrandBaseFun() {}
+ override fun overriddenAbstractGrandBaseFun() {}
+ override fun openGrandBaseFun() {}
+ override fun abstractGrandBaseFun() {}
+ companion object {
+ fun companionMethod(): String =TODO()
+ }
+}
+// MODULE: main(lib)
+// FILE: a.kt
+class NoOverride(val propInParam: Int) {
+ val prop: Int
+ fun func(val param: Int) {
+
+ }
+}
+
+interface KtInterfaceWithProperty {
+ val x:Int
+ var y:Int
+}
+
+interface Intermediate: KtInterfaceWithProperty
+
+class PrimaryConstructorOverride(override val x: Int): Intermediate {
+ override val y: Int = 1
+}
+
+abstract class GrandBase {
+ open var openGrandBaseProp: Int = 0
+ abstract var abstractGrandBaseProp: Int = 0
+ open var overriddenGrandBaseProp: Int = 0
+ abstract var overriddenAbstractGrandBaseProp: Int = 0
+ open fun openGrandBaseFun() {}
+ abstract fun abstractGrandBaseFun()
+ open fun overriddenGrandBaseFun() {}
+ abstract fun overriddenAbstractGrandBaseFun()
+}
+abstract class Base<T> : GrandBase() {
+ open var overriddenBaseProp: Int = 0
+ var overriddenAbstractBaseProp: Int = 0
+ override var overriddenGrandBaseProp:Int = 0
+ override var overriddenAbstractGrandBaseProp: Int = 0
+ open fun openFun() {}
+ abstract fun abstractFun():Unit
+ open fun openFunWithGenericArg(t:T):T = TODO()
+ abstract fun abstractFunWithGenericArg(t:T):T
+ override open fun overriddenGrandBaseFun() {}
+ override open fun overriddenAbstractGrandBaseFun() {}
+}
+
+abstract class Subject: Base<String>() {
+ var notOverridingProp: Int = 0
+ override open var overriddenBaseProp: Int = 0
+ override var overriddenAbstractBaseProp: Int = 0
+ override open var openGrandBaseProp: Int = 0
+ override var abstractGrandBaseProp: Int = 0
+ override var overriddenGrandBaseProp:Int = 0
+ override var overriddenAbstractGrandBaseProp: Int = 0
+ override fun openFun() {}
+ override fun abstractFun() {}
+ override fun openFunWithGenericArg(t:String):String = TODO()
+ override fun abstractFunWithGenericArg(t:String):String = TODO()
+ fun nonOverridingMethod(): String =TODO()
+ override fun overriddenGrandBaseFun() {}
+ override fun overriddenAbstractGrandBaseFun() {}
+ override fun openGrandBaseFun() {}
+ override fun abstractGrandBaseFun() {}
+ companion object {
+ fun companionMethod(): String =TODO()
+ }
+}
+
+// FILE: conflictingOverrides.kt
+interface MyInterface {
+ fun absFoo(): Unit
+}
+
+interface MyInterface2 {
+ fun absFoo(): Unit
+}
+
+abstract class MyAbstract: MyInterface {
+ override fun absFoo(): Unit {val a = 1}
+}
+
+class ConflictingSubject1: MyInterface, MyAbstract() {
+ override fun absFoo(): Unit = TODO()
+}
+
+class ConflictingSubject2: MyAbstract(), MyInterface {
+ override fun absFoo(): Unit = TODO()
+}
+
+class ConflictingSubject3: MyInterface, MyInterface2 {
+ override fun absFoo(): Unit = TODO()
+}
+
+class ConflictingSubject4: MyInterface2, MyInterface {
+ override fun absFoo(): Unit = TODO()
+}
+
+// FILE: overrideOrder.kt
+interface GrandBaseInterface1 {
+ fun foo(): Unit
+}
+
+interface GrandBaseInterface2 {
+ fun foo(): Unit
+}
+
+interface BaseInterface1 : GrandBaseInterface1 {
+}
+
+interface BaseInterface2 : GrandBaseInterface2 {
+}
+
+class OverrideOrder1 : BaseInterface1, GrandBaseInterface2 {
+ override fun foo() = TODO()
+}
+class OverrideOrder2 : BaseInterface2, GrandBaseInterface1 {
+ override fun foo() = TODO()
+}
+
+// FILE: JavaSubject.java
+public class JavaSubject {
+ static abstract class GrandBase {
+ void openGrandBaseFun() {}
+ abstract void abstractGrandBaseFun();
+ void overriddenGrandBaseFun() {}
+ abstract void overriddenAbstractGrandBaseFun();
+ }
+ static abstract class Base<T> extends GrandBase {
+ void openFun() {}
+ abstract void abstractFun();
+ T openFunWithGenericArg(T t) {
+ return null;
+ }
+ abstract T abstractFunWithGenericArg(T t);
+ void overriddenGrandBaseFun() {}
+ void overriddenAbstractGrandBaseFun() {}
+ }
+
+ static abstract class Subject extends Base<String> {
+ void openFun() {}
+ void abstractFun() {}
+ String openFunWithGenericArg(String t) {
+ return null;
+ }
+ String abstractFunWithGenericArg(String t) {
+ return null;
+ }
+ String nonOverridingMethod() {
+ return null;
+ }
+ void overriddenGrandBaseFun() {}
+ void overriddenAbstractGrandBaseFun() {}
+ void openGrandBaseFun() {}
+ void abstractGrandBaseFun() {}
+ static String staticMethod() {
+ return null;
+ }
+ }
+}
+
+// FILE: JavaImpl.java
+class JavaAccessorImpl implements KtInterfaceWithProperty {
+ public int getX() {
+ return 1;
+ }
+ public int getY() {
+ return 1;
+ }
+ public void setY(int value) {
+ }
+}
+
+// FILE: JavaAnno.java
+@java.lang.annotation.Repeatable(JavaAnnos.class)
+public @interface JavaAnno {
+ int intParam();
+}
+
+// FILE: JavaAnnos.java
+public @interface JavaAnnos {
+ JavaAnno[] value();
+}