FIR: implement early type alias expansion

This commit is contained in:
Simon Ogorodnik
2018-03-21 18:30:28 +03:00
committed by Mikhail Glukhikh
parent d15fb1963b
commit 25ae12fe07
16 changed files with 187 additions and 90 deletions
@@ -0,0 +1,7 @@
package b
class A
typealias TA = A
// analyzePriority: 1
@@ -0,0 +1,7 @@
package a
import b.TA
class MyClass : TA
// analyzePriority: 0
@@ -0,0 +1,3 @@
FILE: TypeAliasExpansion.kt
(resolved) public? final class MyClass() : R/b/TA = b/A/ {
}
+9 -9
View File
@@ -1,27 +1,27 @@
FILE: simpleClass.kt
(resolved) public? abstract interface SomeInterface() {
public? final? function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/
public? final? function foo(x: R/error: Symbol not found/, y: R/error: Symbol not found/): R/error: Symbol not found/
public? final? property bar(val): R/error: Failed to resolve qualified type/
public? get(): R/error: Failed to resolve qualified type/
public? final? property bar(val): R/error: Symbol not found/
public? get(): R/error: Symbol not found/
}
(resolved) public? final class SomeClass() : R/SomeInterface/ {
private final? property baz(val): R/error: Not supported: FirImplicitTypeImpl/ = STUB
public? get(): R/error: Not supported: FirImplicitTypeImpl/
public? open? override function foo(x: R/error: Failed to resolve qualified type/, y: R/error: Failed to resolve qualified type/): R/error: Failed to resolve qualified type/ {
public? open? override function foo(x: R/error: Symbol not found/, y: R/error: Symbol not found/): R/error: Symbol not found/ {
}
public? open? override property bar(var): R/error: Failed to resolve qualified type/
public? open? override property bar(var): R/error: Symbol not found/
public? get(): R/error: Not supported: FirImplicitTypeImpl/ {
STUB
}
public? set(value: R/error: Failed to resolve qualified type/): R/error: Not supported: FirImplicitTypeImpl/ {
public? set(value: R/error: Symbol not found/): R/error: Not supported: FirImplicitTypeImpl/ {
}
public? final? property fau(var): R/error: Failed to resolve qualified type/
public? get(): R/error: Failed to resolve qualified type/
public? set(value: R/error: Failed to resolve qualified type/): R/kotlin/Unit/
public? final? property fau(var): R/error: Symbol not found/
public? get(): R/error: Symbol not found/
public? set(value: R/error: Symbol not found/): R/kotlin/Unit/
}
+2 -2
View File
@@ -2,6 +2,6 @@ open class A
interface B<S, T : A>
typealias C<T> = B<T, A>
class D : C<A>
typealias C<T> = B<T, A>
+1 -1
View File
@@ -3,6 +3,6 @@ FILE: typeAliasWithGeneric.kt
}
(resolved) <(resolved) S, (resolved) T : R/A/> public? abstract interface B() {
}
(resolved) <(resolved) T> public? final typealias C = R/B<T, A>/
(resolved) public? final class D() : R/C<A> = B<T, A>/ {
}
(resolved) <(resolved) T> public? final typealias C = R/B<T, A>/