Raw FIR: add kotlin.Any super class if no super classes are visible
This commit is contained in:
@@ -341,9 +341,13 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
||||
if (this is KtClass && this.isInterface()) return delegatedSuperTypeRef
|
||||
|
||||
fun isEnum() = this is KtClass && this.isEnum()
|
||||
val defaultDelegatedSuperTypeRef = if (isEnum()) implicitEnumType else implicitAnyType
|
||||
if (delegatedSuperTypeRef == null && this.hasPrimaryConstructor()) {
|
||||
container.superTypeRefs += defaultDelegatedSuperTypeRef
|
||||
}
|
||||
// TODO: in case we have no primary constructor,
|
||||
// it may be not possible to determine delegated super type right here
|
||||
delegatedSuperTypeRef = delegatedSuperTypeRef ?: (if (isEnum()) implicitEnumType else implicitAnyType)
|
||||
delegatedSuperTypeRef = delegatedSuperTypeRef ?: defaultDelegatedSuperTypeRef
|
||||
if (!this.hasPrimaryConstructor()) return delegatedSuperTypeRef
|
||||
|
||||
val firPrimaryConstructor = primaryConstructor.toFirConstructor(
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
FILE: F.kt
|
||||
public? open class A {
|
||||
public? open class A : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
public? final? class B : A {
|
||||
public? final? class B : A, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
FILE: NestedOfAliasedType.kt
|
||||
public? abstract class A {
|
||||
public? abstract class A : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? abstract class Nested {
|
||||
public? abstract class Nested : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: NestedSuperType.kt
|
||||
public? abstract class My {
|
||||
public? abstract class My : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? abstract class NestedOne : My {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
FILE: complexTypes.kt
|
||||
<T, out S> public? final? class C {
|
||||
<T, out S> public? final? class C : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
<R, in P> public? final? inner class D {
|
||||
<R, in P> public? final? inner class D : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: derivedClass.kt
|
||||
<T> public? open class Base {
|
||||
<T> public? open class Base : kotlin/Any {
|
||||
public? constructor(x: T): super<kotlin/Any>()
|
||||
|
||||
public? final? val x: T
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
FILE: enums.kt
|
||||
public? final? enum class Order {
|
||||
public? final? enum class Order : kotlin/Enum {
|
||||
public? constructor(): super<kotlin/Enum>()
|
||||
|
||||
public? final enum entry FIRST {
|
||||
public? final enum entry FIRST : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry SECOND {
|
||||
public? final enum entry SECOND : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
public? final enum entry THIRD {
|
||||
public? final enum entry THIRD : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public? final? enum class Planet {
|
||||
public? final? enum class Planet : kotlin/Enum {
|
||||
public? constructor(m: Double, r: Double): super<kotlin/Enum>()
|
||||
|
||||
public? final? val m: Double
|
||||
@@ -59,7 +59,7 @@ FILE: enums.kt
|
||||
|
||||
public? abstract fun sayHello(): kotlin/Unit
|
||||
|
||||
public? final? companion object Companion {
|
||||
public? final? companion object Companion : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? final? const val G: <implicit> = Double(6.67E-11)
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
FILE: enums2.kt
|
||||
public? final? interface Some {
|
||||
}
|
||||
public? final? object O1 : Some {
|
||||
public? final? object O1 : Some, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
public? final? object O2 : Some {
|
||||
public? final? object O2 : Some, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
public? final? enum class SomeEnum {
|
||||
public? final? enum class SomeEnum : kotlin/Enum {
|
||||
public? constructor(x: Some): super<kotlin/Enum>()
|
||||
|
||||
public? final? val x: Some
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FILE: expectActual.kt
|
||||
public? final? expect class MyClass {
|
||||
public? final? expect class MyClass : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
public? final? expect fun foo(): String
|
||||
public? final? expect val x: Int
|
||||
public? get(): Int
|
||||
public? final? actual class MyClass {
|
||||
public? final? actual class MyClass : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ FILE: genericFunctions.kt
|
||||
<reified T : Any> public? final? inline fun Any.safeAs(): T? {
|
||||
^safeAs (this# as? T)
|
||||
}
|
||||
public? abstract class Summator {
|
||||
public? abstract class Summator : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
<T> public? abstract fun plus(first: T, second: T): T
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FILE: nestedClass.kt
|
||||
public? abstract class Base {
|
||||
public? abstract class Base : kotlin/Any {
|
||||
public? constructor(s: String): super<kotlin/Any>()
|
||||
|
||||
public? final? val s: String
|
||||
public? get(): String
|
||||
|
||||
}
|
||||
public? final? class Outer {
|
||||
public? final? class Outer : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? final? class Derived : Base {
|
||||
|
||||
@@ -6,7 +6,7 @@ FILE: simpleClass.kt
|
||||
public? get(): Boolean
|
||||
|
||||
}
|
||||
public? final? class SomeClass : SomeInterface {
|
||||
public? final? class SomeClass : SomeInterface, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
private final? val baz: <implicit> = Int(42)
|
||||
@@ -28,7 +28,7 @@ FILE: simpleClass.kt
|
||||
public? set(value: Double): kotlin/Unit
|
||||
|
||||
}
|
||||
public? final? inline class InlineClass {
|
||||
public? final? inline class InlineClass : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ FILE: simpleTypeAlias.kt
|
||||
public? final? interface B {
|
||||
}
|
||||
public? final typealias C = B
|
||||
public? final? class D : C {
|
||||
public? final? class D : C, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
FILE: typeAliasWithGeneric.kt
|
||||
public? open class A {
|
||||
public? open class A : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
<S, T : A> public? final? interface B {
|
||||
}
|
||||
<T> public? final typealias C = B<T, A>
|
||||
public? final? class D : C<A> {
|
||||
public? final? class D : C<A>, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
FILE: typeParameterVsNested.kt
|
||||
public? final? interface Some {
|
||||
}
|
||||
<T : Some> public? abstract class My {
|
||||
<T : Some> public? abstract class My : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? final? inner class T {
|
||||
public? final? inner class T : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ FILE: typeParameters.kt
|
||||
}
|
||||
public? final typealias StringList = List<out String>
|
||||
public? final typealias AnyList = List<*>
|
||||
<out T : Any> public? abstract class AbstractList : List<T> {
|
||||
<out T : Any> public? abstract class AbstractList : List<T>, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ FILE: where.kt
|
||||
}
|
||||
public? final? interface B {
|
||||
}
|
||||
<T : A, B> public? final? class C {
|
||||
<T : A, B> public? final? class C : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: annotated.kt
|
||||
@Target(AnnotationTarget#.EXPRESSION#) @Retention(AnnotationRetention#.SOURCE#) public? final? annotation class Ann {
|
||||
@Target(AnnotationTarget#.EXPRESSION#) @Retention(AnnotationRetention#.SOURCE#) public? final? annotation class Ann : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
@@ -22,7 +22,7 @@ FILE: annotated.kt
|
||||
|
||||
^foo Int(42)
|
||||
}
|
||||
public? final? data class Two {
|
||||
public? final? data class Two : kotlin/Any {
|
||||
public? constructor(x: Int, y: Int): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ FILE: arrayAccess.kt
|
||||
public? final? fun foo(): <implicit> {
|
||||
^foo Int(1)
|
||||
}
|
||||
public? final? class Wrapper {
|
||||
public? final? class Wrapper : kotlin/Any {
|
||||
public? constructor(v: IntArray): super<kotlin/Any>()
|
||||
|
||||
public? final? val v: IntArray
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
FILE: callableReferences.kt
|
||||
public? final? class A {
|
||||
public? final? class A : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? final? fun foo(): kotlin/Unit {
|
||||
|
||||
@@ -8,7 +8,7 @@ FILE: calls.kt
|
||||
public? final? fun testRegular(): Int {
|
||||
^testRegular distance#(Int(3), Int(4))
|
||||
}
|
||||
public? final? class My {
|
||||
public? final? class My : kotlin/Any {
|
||||
public? constructor(x: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? var x: Int
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: classReference.kt
|
||||
public? final? class A {
|
||||
public? final? class A : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
+7
-7
@@ -1,38 +1,38 @@
|
||||
FILE: collectionLiterals.kt
|
||||
public? final? annotation class Ann1 {
|
||||
public? final? annotation class Ann1 : kotlin/Any {
|
||||
public? constructor(arr: IntArray): super<kotlin/Any>()
|
||||
|
||||
public? final? val arr: IntArray
|
||||
public? get(): IntArray
|
||||
|
||||
}
|
||||
public? final? annotation class Ann2 {
|
||||
public? final? annotation class Ann2 : kotlin/Any {
|
||||
public? constructor(arr: DoubleArray): super<kotlin/Any>()
|
||||
|
||||
public? final? val arr: DoubleArray
|
||||
public? get(): DoubleArray
|
||||
|
||||
}
|
||||
public? final? annotation class Ann3 {
|
||||
public? final? annotation class Ann3 : kotlin/Any {
|
||||
public? constructor(arr: Array<String>): super<kotlin/Any>()
|
||||
|
||||
public? final? val arr: Array<String>
|
||||
public? get(): Array<String>
|
||||
|
||||
}
|
||||
@Ann1(<implicitArrayOf>()) @Ann2(<implicitArrayOf>()) @Ann3(<implicitArrayOf>()) public? final? class Zero {
|
||||
@Ann1(<implicitArrayOf>()) @Ann2(<implicitArrayOf>()) @Ann3(<implicitArrayOf>()) public? final? class Zero : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
@Ann1(<implicitArrayOf>(Int(1), Int(2))) public? final? class First {
|
||||
@Ann1(<implicitArrayOf>(Int(1), Int(2))) public? final? class First : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
@Ann2(<implicitArrayOf>(Double(3.14))) public? final? class Second {
|
||||
@Ann2(<implicitArrayOf>(Double(3.14))) public? final? class Second : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
@Ann3(<implicitArrayOf>(String(Alpha), String(Omega))) public? final? class Third {
|
||||
@Ann3(<implicitArrayOf>(String(Alpha), String(Omega))) public? final? class Third : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: destructuring.kt
|
||||
public? final? data class Some {
|
||||
public? final? data class Some : kotlin/Any {
|
||||
public? constructor(first: Int, second: Double, third: String): super<kotlin/Any>()
|
||||
|
||||
public? final? val first: Int
|
||||
|
||||
@@ -24,7 +24,7 @@ FILE: for.kt
|
||||
}
|
||||
|
||||
}
|
||||
public? final? data class Some {
|
||||
public? final? data class Some : kotlin/Any {
|
||||
public? constructor(x: Int, y: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? val x: Int
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: init.kt
|
||||
public? final? class WithInit {
|
||||
public? final? class WithInit : kotlin/Any {
|
||||
public? constructor(x: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? val x: Int
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: lambda.kt
|
||||
public? final? data class Tuple {
|
||||
public? final? data class Tuple : kotlin/Any {
|
||||
public? constructor(x: Int, y: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? val x: Int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FILE: locals.kt
|
||||
public? final? fun withLocals(p: Int): Int {
|
||||
public? final? class Local {
|
||||
public? final? class Local : kotlin/Any {
|
||||
public? constructor(pp: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? val pp: Int
|
||||
|
||||
@@ -12,7 +12,7 @@ FILE: super.kt
|
||||
}
|
||||
|
||||
}
|
||||
public? final? class C : A, B {
|
||||
public? final? class C : A, B, kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? open? override fun bar(): kotlin/Unit {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
FILE: these.kt
|
||||
public? final? class Some {
|
||||
public? final? class Some : kotlin/Any {
|
||||
public? constructor(): super<kotlin/Any>()
|
||||
|
||||
public? final? fun foo(): Int {
|
||||
|
||||
@@ -34,7 +34,7 @@ FILE: unary.kt
|
||||
}
|
||||
|
||||
}
|
||||
public? final? class X {
|
||||
public? final? class X : kotlin/Any {
|
||||
public? constructor(i: Int): super<kotlin/Any>()
|
||||
|
||||
public? final? val i: Int
|
||||
@@ -71,7 +71,7 @@ FILE: unary.kt
|
||||
}
|
||||
|
||||
}
|
||||
public? final? class Y {
|
||||
public? final? class Y : kotlin/Any {
|
||||
public? constructor(arr: Array<Int>): super<kotlin/Any>()
|
||||
|
||||
public? final? val arr: Array<Int>
|
||||
|
||||
Reference in New Issue
Block a user