[FIR] Implement TYPEALIAS_SHOULD_EXPAND_TO_CLASS

This commit is contained in:
Ivan Kochurkin
2021-06-16 17:21:32 +03:00
committed by teamcityserver
parent e8a790993b
commit 937846b62d
11 changed files with 74 additions and 18 deletions
@@ -9,7 +9,7 @@ typealias TTNullableTString = TNullableTString
fun f3() = TTNullableTString::class
inline fun <reified T> f4(b: Boolean): Any {
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias X = T<!>
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Y = T?<!>
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias X = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>T<!><!>
<!TOPLEVEL_TYPEALIASES_ONLY!>typealias Y = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>T?<!><!>
return if (b) <!UNRESOLVED_REFERENCE!>X<!>::class else <!UNRESOLVED_REFERENCE!>Y<!>::class
}
@@ -1,16 +0,0 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
typealias ToTypeParam1<T> = T
typealias ToTypeParam2<T> = ToTypeParam1<T>
typealias ToTypeParam3<T1, T2> = ToTypeParam2<T1>
typealias ToTypeParam4 = ToTypeParam1<Any>
typealias ToFun1 = () -> Unit
typealias ToFun2<T> = (T) -> Unit
class Outer {
typealias ToTypeParam1<T> = T
typealias ToTypeParam2<T> = ToTypeParam1<T>
typealias ToTypeParam3<T1, T2> = ToTypeParam2<T1>
typealias ToTypeParam4 = ToTypeParam1<Any>
}
@@ -1,5 +1,8 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER -TOPLEVEL_TYPEALIASES_ONLY
typealias Dyn = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS, UNSUPPORTED!>dynamic<!>
typealias ToTypeParam1<T> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>T<!>
typealias ToTypeParam2<T> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>ToTypeParam1<T><!>
typealias ToTypeParam3<T1, T2> = <!TYPEALIAS_SHOULD_EXPAND_TO_CLASS!>ToTypeParam2<T1><!>
@@ -10,9 +10,11 @@ public final class Outer {
public typealias ToTypeParam3</*0*/ T1, /*1*/ T2> = Outer.ToTypeParam2<T1>
public typealias ToTypeParam4 = Outer.ToTypeParam1<kotlin.Any>
}
public typealias Dyn = [ERROR : dynamic type in wrong context]
public typealias ToFun1 = () -> kotlin.Unit
public typealias ToFun2</*0*/ T> = (T) -> kotlin.Unit
public typealias ToTypeParam1</*0*/ T> = T
public typealias ToTypeParam2</*0*/ T> = ToTypeParam1<T>
public typealias ToTypeParam3</*0*/ T1, /*1*/ T2> = ToTypeParam2<T1>
public typealias ToTypeParam4 = ToTypeParam1<kotlin.Any>