FIR: make FunctionType class-like, refactor built-ins resolution

This breaks total kotlin resolve test because of incorrect rendering
of ConeClassErrorType (we are trying to read its symbol)
This commit is contained in:
Simon Ogorodnik
2019-02-12 14:04:31 +03:00
committed by Mikhail Glukhikh
parent 3edd82b602
commit 9ebefa3ba6
50 changed files with 144 additions and 126 deletions
@@ -1,9 +1,9 @@
FILE: F.kt
public? open class A {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? class B : A {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,9 +1,9 @@
FILE: NestedOfAliasedType.kt
public? abstract class A {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? abstract class Nested {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,6 +1,6 @@
FILE: NestedSuperType.kt
public? abstract class My {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? abstract class NestedOne : My {
public? constructor(): super<My>()
@@ -1,9 +1,9 @@
FILE: complexTypes.kt
<T, out S> public? final? class C {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
<R, in P> public? final? inner class D {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,6 +1,6 @@
FILE: derivedClass.kt
<T> public? open class Base {
public? constructor(x: T): super<kotlin.Any>()
public? constructor(x: T): super<kotlin/Any>()
public? final? property x(val): T
public? get(): T
@@ -1,25 +1,25 @@
FILE: enums.kt
public? final? enum class Order {
public? constructor(): super<kotlin.Enum>()
public? constructor(): super<kotlin/Enum>()
public? final enum entry FIRST {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final enum entry SECOND {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final enum entry THIRD {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
}
public? final? enum class Planet {
public? constructor(m: Double, r: Double): super<kotlin.Enum>()
public? constructor(m: Double, r: Double): super<kotlin/Enum>()
public? final? property m(val): Double
public? get(): Double
@@ -30,7 +30,7 @@ FILE: enums.kt
public? final enum entry MERCURY : Planet {
public? constructor(): super<Planet>(Double(1.0), Double(2.0))
public? open? override function sayHello(): kotlin.Unit {
public? open? override function sayHello(): kotlin/Unit {
println#(String(Hello!!!))
}
@@ -39,7 +39,7 @@ FILE: enums.kt
public? final enum entry VENERA : Planet {
public? constructor(): super<Planet>(Double(3.0), Double(4.0))
public? open? override function sayHello(): kotlin.Unit {
public? open? override function sayHello(): kotlin/Unit {
println#(String(Ola!!!))
}
@@ -48,7 +48,7 @@ FILE: enums.kt
public? final enum entry EARTH : Planet {
public? constructor(): super<Planet>(Double(5.0), Double(6.0))
public? open? override function sayHello(): kotlin.Unit {
public? open? override function sayHello(): kotlin/Unit {
println#(String(Privet!!!))
}
@@ -57,10 +57,10 @@ FILE: enums.kt
public? final? property g(val): Double = div#(times#(G#, m#), times#(r#, r#))
public? get(): Double
public? abstract function sayHello(): kotlin.Unit
public? abstract function sayHello(): kotlin/Unit
public? final? companion object Companion {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? final? const property G(val): <implicit> = Double(6.67E-11)
public? get(): <implicit>
@@ -2,15 +2,15 @@ FILE: enums2.kt
public? final? interface Some {
}
public? final? object O1 : Some {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? object O2 : Some {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? enum class SomeEnum {
public? constructor(x: Some): super<kotlin.Enum>()
public? constructor(x: Some): super<kotlin/Enum>()
public? final? property x(val): Some
public? get(): Some
@@ -1,13 +1,13 @@
FILE: expectActual.kt
public? final? expect class MyClass {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? expect function foo(): String
public? final? expect property x(val): Int
public? get(): Int
public? final? actual class MyClass {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? actual function foo(): <implicit> {
@@ -5,7 +5,7 @@ FILE: genericFunctions.kt
return@@@safeAs as?/T(this#)
}
public? abstract class Summator {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
<T> public? abstract function plus(first: T, second: T): T
@@ -1,13 +1,13 @@
FILE: nestedClass.kt
public? abstract class Base {
public? constructor(s: String): super<kotlin.Any>()
public? constructor(s: String): super<kotlin/Any>()
public? final? property s(val): String
public? get(): String
}
public? final? class Outer {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? final? class Derived : Base {
public? constructor(s: String): super<Base>(s#)
@@ -3,7 +3,7 @@ FILE: noPrimaryConstructor.kt
public? final? property x(val): String
public? get(): String
public? constructor(x: String): super<kotlin.Any>() {
public? constructor(x: String): super<kotlin/Any>() {
this#.x# = x#
}
@@ -7,7 +7,7 @@ FILE: simpleClass.kt
}
public? final? class SomeClass : SomeInterface {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
private final? property baz(val): <implicit> = Int(42)
private get(): <implicit>
@@ -20,15 +20,15 @@ FILE: simpleClass.kt
public? get(): Boolean {
return Boolean(true)
}
public? set(value: Boolean): kotlin.Unit {
public? set(value: Boolean): kotlin/Unit {
}
public? final? lateinit property fau(var): Double
public? get(): Double
public? set(value: Double): kotlin.Unit
public? set(value: Double): kotlin/Unit
}
public? final? inline class InlineClass {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,5 +1,5 @@
FILE: simpleFun.kt
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
}
public? final? suspend function bar(): kotlin.Unit {
public? final? suspend function bar(): kotlin/Unit {
}
@@ -3,6 +3,6 @@ FILE: simpleTypeAlias.kt
}
public? final typealias C = B
public? final? class D : C {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,12 +1,12 @@
FILE: typeAliasWithGeneric.kt
public? open class A {
public? constructor(): super<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? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -2,17 +2,17 @@ FILE: typeParameterVsNested.kt
public? final? interface Some {
}
<T : Some> public? abstract class My {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? final? inner class T {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? abstract property x(val): T
public? get(): T
public? abstract function foo(arg: T): kotlin.Unit
public? abstract function foo(arg: T): kotlin/Unit
public? abstract property y(val): My.T
public? get(): My.T
@@ -8,7 +8,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> {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? class SomeList : AbstractList<Int> {
@@ -4,6 +4,6 @@ FILE: where.kt
public? final? interface B {
}
<T : A, B> public? final? class C {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,6 +1,6 @@
FILE: annotated.kt
@Target(AnnotationTarget#.EXPRESSION#) @Retention(AnnotationRetention#.SOURCE#) public? final? annotation class Ann {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? function foo(arg: Int): Int {
@@ -23,10 +23,10 @@ FILE: annotated.kt
return@@@foo Int(42)
}
public? final? data class Two {
public? constructor(x: Int, y: Int): super<kotlin.Any>()
public? constructor(x: Int, y: Int): super<kotlin/Any>()
}
public? final? function bar(two: Two): kotlin.Unit {
public? final? function bar(two: Two): kotlin/Unit {
val <destruct>: <implicit> = two#
@Ann() val x: <implicit> = component1(<destruct>#)
@Ann() val y: <implicit> = component2(<destruct>#)
@@ -5,7 +5,7 @@ FILE: arrayAccess.kt
return@@@foo Int(1)
}
public? final? class Wrapper {
public? constructor(v: IntArray): super<kotlin.Any>()
public? constructor(v: IntArray): super<kotlin/Any>()
public? final? property v(val): IntArray
public? get(): IntArray
@@ -1,12 +1,12 @@
FILE: arrayAssignment.kt
public? final? function test(): kotlin.Unit {
public? final? function test(): kotlin/Unit {
val x: <implicit> = intArrayOf#(Int(1), Int(2), Int(3))
x#[Int(1)] = Int(0)
}
public? final? function foo(): <implicit> {
return@@@foo Int(1)
}
public? final? function test2(): kotlin.Unit {
public? final? function test2(): kotlin/Unit {
val <array-set>: <implicit> = intArrayOf#(Int(1), Int(2), Int(3))
<array-set>#[foo#()] = Int(1)
}
@@ -1,17 +1,17 @@
FILE: callableReferences.kt
public? final? class A {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
}
public? final? property bar(val): <implicit> = Int(0)
public? get(): <implicit>
}
public? final? function qux A.(): kotlin.Unit {
public? final? function qux A.(): kotlin/Unit {
}
public? final? function baz(): kotlin.Unit {
public? final? function baz(): kotlin/Unit {
}
public? final? property test1(val): <implicit> = A#()::foo#
public? get(): <implicit>
@@ -9,17 +9,17 @@ FILE: calls.kt
return@@@testRegular distance#(Int(3), Int(4))
}
public? final? class My {
public? constructor(x: Int): super<kotlin.Any>()
public? constructor(x: Int): super<kotlin/Any>()
public? final? property x(var): Int
public? get(): Int
public? set(value: Int): kotlin.Unit
public? set(value: Int): kotlin/Unit
public? final? operator function invoke(): <implicit> {
return@@@invoke x#
}
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
}
public? final? function copy(): <implicit> {
@@ -30,7 +30,7 @@ FILE: calls.kt
public? final? function testInvoke(): Int {
return@@@testInvoke invoke#(My#(Int(13)))
}
public? final? function testQualified(first: My, second: My?): kotlin.Unit {
public? final? function testQualified(first: My, second: My?): kotlin/Unit {
println#(first#.x#)
println#(second#?.x#)
first#.foo#()
@@ -1,9 +1,9 @@
FILE: classReference.kt
public? final? class A {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
public? final? function test(): kotlin.Unit {
public? final? function test(): kotlin/Unit {
<getClass>(A#)
<getClass>(test#.A#)
<getClass>(A#())
@@ -1,38 +1,38 @@
FILE: collectionLiterals.kt
public? final? annotation class Ann1 {
public? constructor(arr: IntArray): super<kotlin.Any>()
public? constructor(arr: IntArray): super<kotlin/Any>()
public? final? property arr(val): IntArray
public? get(): IntArray
}
public? final? annotation class Ann2 {
public? constructor(arr: DoubleArray): super<kotlin.Any>()
public? constructor(arr: DoubleArray): super<kotlin/Any>()
public? final? property arr(val): DoubleArray
public? get(): DoubleArray
}
public? final? annotation class Ann3 {
public? constructor(arr: Array<String>): super<kotlin.Any>()
public? constructor(arr: Array<String>): super<kotlin/Any>()
public? final? property arr(val): Array<String>
public? get(): Array<String>
}
@Ann1(<implicitArrayOf>()) @Ann2(<implicitArrayOf>()) @Ann3(<implicitArrayOf>()) public? final? class Zero {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@Ann1(<implicitArrayOf>(Int(1), Int(2))) public? final? class First {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@Ann2(<implicitArrayOf>(Double(3.14))) public? final? class Second {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@Ann3(<implicitArrayOf>(String(Alpha), String(Omega))) public? final? class Third {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
}
@@ -1,6 +1,6 @@
FILE: destructuring.kt
public? final? data class Some {
public? constructor(first: Int, second: Double, third: String): super<kotlin.Any>()
public? constructor(first: Int, second: Double, third: String): super<kotlin/Any>()
public? final? property first(val): Int
public? get(): Int
@@ -12,7 +12,7 @@ FILE: destructuring.kt
public? get(): String
}
public? final? function foo(some: Some): kotlin.Unit {
public? final? function foo(some: Some): kotlin/Unit {
val <destruct>: <implicit> = some#
var x: <implicit> = component1(<destruct>#)
var y: <implicit> = component2(<destruct>#)
@@ -1,5 +1,5 @@
FILE: for.kt
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
val <range>: <implicit> = rangeTo#(Int(1), Int(10))
val <iterator>: <implicit> = <range>#.iterator#()
while(<iterator>#.hasNext#()) {
@@ -8,7 +8,7 @@ FILE: for.kt
}
}
public? final? function bar(list: List<String>): kotlin.Unit {
public? final? function bar(list: List<String>): kotlin/Unit {
val <range>: <implicit> = list#.subList#(Int(0), Int(10))
val <iterator>: <implicit> = <range>#.iterator#()
while(<iterator>#.hasNext#()) {
@@ -25,7 +25,7 @@ FILE: for.kt
}
public? final? data class Some {
public? constructor(x: Int, y: Int): super<kotlin.Any>()
public? constructor(x: Int, y: Int): super<kotlin/Any>()
public? final? property x(val): Int
public? get(): Int
@@ -34,7 +34,7 @@ FILE: for.kt
public? get(): Int
}
public? final? function baz(set: Set<Some>): kotlin.Unit {
public? final? function baz(set: Set<Some>): kotlin/Unit {
val <range>: <implicit> = set#
val <iterator>: <implicit> = <range>#.iterator#()
while(<iterator>#.hasNext#()) {
@@ -2,7 +2,7 @@ FILE: genericCalls.kt
<T> public? final? function nullableValue(): T? {
return@@@nullableValue Null(null)
}
public? final? function test(): kotlin.Unit {
public? final? function test(): kotlin/Unit {
val n: <implicit> = nullableValue#<Int>()
val x: <implicit> = nullableValue#<Double>()
val s: <implicit> = nullableValue#<String>()
@@ -1,6 +1,6 @@
FILE: init.kt
public? final? class WithInit {
public? constructor(x: Int): super<kotlin.Any>()
public? constructor(x: Int): super<kotlin/Any>()
public? final? property x(val): Int
public? get(): Int
@@ -1,6 +1,6 @@
FILE: lambda.kt
public? final? data class Tuple {
public? constructor(x: Int, y: Int): super<kotlin.Any>()
public? constructor(x: Int, y: Int): super<kotlin/Any>()
public? final? property x(val): Int
public? get(): Int
@@ -64,7 +64,7 @@ FILE: lambda.kt
}
)
}
public? final? function test(list: List<Int>): kotlin.Unit {
public? final? function test(list: List<Int>): kotlin/Unit {
val map: <implicit> = mutableMapOf#<Int, String>()
list#.forEach#(forEach@function <implicit>.<anonymous>(): <implicit> {
return {
@@ -1,7 +1,7 @@
FILE: locals.kt
public? final? function withLocals(p: Int): Int {
public? final? class Local {
public? constructor(pp: Int): super<kotlin.Any>()
public? constructor(pp: Int): super<kotlin/Any>()
public? final? property pp(val): Int
public? get(): Int
@@ -1,16 +1,16 @@
FILE: modifications.kt
public? final? function simple(): kotlin.Unit {
public? final? function simple(): kotlin/Unit {
var x: <implicit> = Int(10)
x# += Int(20)
x# -= Int(5)
x# /= Int(5)
x# *= Int(10)
}
public? final? function modify List<String>.(): kotlin.Unit {
public? final? function modify List<String>.(): kotlin/Unit {
this# += String(Alpha)
this# += String(Omega)
}
public? final? function modify Any.(): kotlin.Unit {
public? final? function modify Any.(): kotlin/Unit {
val <complex-set>: <implicit> = as/List<Int>(this#)
<complex-set># += Int(42)
}
@@ -1,5 +1,5 @@
FILE: simpleReturns.kt
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
return@@@foo Unit
}
public? final? function bar(): String {
@@ -1,25 +1,25 @@
FILE: super.kt
public? final? interface A {
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
}
}
public? final? interface B {
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
}
public? final? function bar(): kotlin.Unit {
public? final? function bar(): kotlin/Unit {
}
}
public? final? class C : A, B {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? open? override function bar(): kotlin.Unit {
public? open? override function bar(): kotlin/Unit {
super<<implicit>>.bar#()
}
public? open? override function foo(): kotlin.Unit {
public? open? override function foo(): kotlin/Unit {
super<A>.foo#()
super<B>.foo#()
}
@@ -1,6 +1,6 @@
FILE: these.kt
public? final? class Some {
public? constructor(): super<kotlin.Any>()
public? constructor(): super<kotlin/Any>()
public? final? function foo(): Int {
return@@@foo Int(1)
@@ -1,5 +1,5 @@
FILE: try.kt
public? final? function some(): kotlin.Unit {
public? final? function some(): kotlin/Unit {
try {
throw KotlinNullPointerException#()
}
@@ -1,5 +1,5 @@
FILE: unary.kt
public? final? function test(): kotlin.Unit {
public? final? function test(): kotlin/Unit {
var x: <implicit> = Int(0)
val x1: <implicit> = {
val <unary>: <implicit> = x#
@@ -35,13 +35,13 @@ FILE: unary.kt
}
public? final? class X {
public? constructor(i: Int): super<kotlin.Any>()
public? constructor(i: Int): super<kotlin/Any>()
public? final? property i(val): Int
public? get(): Int
}
public? final? function test2(x: X): kotlin.Unit {
public? final? function test2(x: X): kotlin/Unit {
val x1: <implicit> = {
val <unary>: <implicit> = x#.i#
x#.i# = inc#(<unary>#)
@@ -56,7 +56,7 @@ FILE: unary.kt
}
}
public? final? function test3(arr: Array<Int>): kotlin.Unit {
public? final? function test3(arr: Array<Int>): kotlin/Unit {
val x1: <implicit> = {
val <unary>: <implicit> = arr#[Int(0)]
arr#[Int(0)] = inc#(<unary>#)
@@ -72,13 +72,13 @@ FILE: unary.kt
}
public? final? class Y {
public? constructor(arr: Array<Int>): super<kotlin.Any>()
public? constructor(arr: Array<Int>): super<kotlin/Any>()
public? final? property arr(val): Array<Int>
public? get(): Array<Int>
}
public? final? function test4(y: Y): kotlin.Unit {
public? final? function test4(y: Y): kotlin/Unit {
val x1: <implicit> = {
val <unary>: <implicit> = y#.arr#[Int(0)]
val <array-set>: <implicit> = y#.arr#
@@ -1,5 +1,5 @@
FILE: variables.kt
public? final? function foo(): kotlin.Unit {
public? final? function foo(): kotlin/Unit {
val x: <implicit> = Int(1)
var y: <implicit> = plus#(x#, Int(1))
val z: <implicit> = times#(y#, Int(2))
@@ -1,5 +1,5 @@
FILE: while.kt
public? final? function foo(limit: Int): kotlin.Unit {
public? final? function foo(limit: Int): kotlin/Unit {
var k: <implicit> = Int(0)
some@while(<(k#, limit#)) {
val <unary>: <implicit> = k#
@@ -31,7 +31,7 @@ FILE: while.kt
}
}
public? final? function bar(limit: Int): kotlin.Unit {
public? final? function bar(limit: Int): kotlin/Unit {
var k: <implicit> = limit#
do {
val <unary>: <implicit> = k#