Support type aliases in stub builder
This commit is contained in:
@@ -7,4 +7,6 @@ public final class TypeAliases public constructor() {
|
||||
public final fun foo(a: dependency.A /* = () -> kotlin.Unit */, b: test.TypeAliases.B /* = (dependency.A /* = () -> kotlin.Unit */) -> kotlin.Unit */, ta: test.Outer<kotlin.String, kotlin.Double>.Inner<kotlin.Int>.TA<kotlin.Boolean> /* = kotlin.collections.Map<kotlin.collections.Map<kotlin.String, out kotlin.Double>, kotlin.collections.Map<kotlin.Int, out kotlin.Boolean>> */): kotlin.Unit { /* compiled code */ }
|
||||
|
||||
public typealias B = (dependency.A) -> kotlin.Unit
|
||||
|
||||
private typealias Parametrized<E, F> = kotlin.collections.Map<E, F>
|
||||
}
|
||||
|
||||
@@ -8,10 +8,16 @@ class Outer<E, F> {
|
||||
}
|
||||
}
|
||||
|
||||
annotation class Ann
|
||||
class TypeAliases {
|
||||
|
||||
typealias B = (A) -> Unit
|
||||
|
||||
fun foo(a: A, b: B, ta: Outer<String, Double>.Inner<Int>.TA<Boolean>) {
|
||||
b.invoke(a)
|
||||
}
|
||||
|
||||
// TODO: annotations are unsupported yet
|
||||
@Ann
|
||||
private typealias Parametrized<E, F> = Map<E, F>
|
||||
}
|
||||
|
||||
@@ -24,4 +24,6 @@ private fun probablyNothing(): Nothing = throw IllegalStateException()
|
||||
|
||||
private val certainlyNothing: kotlin.Nothing = throw IllegalStateException()
|
||||
|
||||
class Nothing
|
||||
private typealias Alias<E> = (E) -> E
|
||||
|
||||
class Nothing
|
||||
|
||||
@@ -117,3 +117,17 @@ PsiJetFileStubImpl[package=foo.TopLevelMembers]
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Int]
|
||||
TYPEALIAS:[fqName=foo.TopLevelMembers.Alias, isTopLevel=true, name=Alias]
|
||||
MODIFIER_LIST:[private]
|
||||
TYPE_PARAMETER_LIST:
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=E]
|
||||
TYPE_REFERENCE:
|
||||
FUNCTION_TYPE:
|
||||
VALUE_PARAMETER_LIST:
|
||||
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=null]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=E]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=E]
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package dependency
|
||||
|
||||
typealias A = () -> Unit
|
||||
|
||||
fun foo(a: A) {
|
||||
a.invoke()
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package test
|
||||
|
||||
import dependency.*
|
||||
|
||||
class Outer<E, F> {
|
||||
inner class Inner<G> {
|
||||
typealias TA<H> = Map<Map<E, F>, Map<G, H>>
|
||||
}
|
||||
}
|
||||
|
||||
annotation class Ann
|
||||
class TypeAliases {
|
||||
|
||||
typealias B = (A) -> Unit
|
||||
|
||||
fun foo(a: A, b: B, ta: Outer<String, Double>.Inner<Int>.TA<Boolean>) {
|
||||
b.invoke(a)
|
||||
}
|
||||
|
||||
// TODO: annotations are unsupported yet
|
||||
@Ann
|
||||
private typealias Parametrized<E, F> = Map<E, F>
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
PsiJetFileStubImpl[package=test]
|
||||
PACKAGE_DIRECTIVE:
|
||||
REFERENCE_EXPRESSION:[referencedName=test]
|
||||
IMPORT_LIST:
|
||||
CLASS:[fqName=test.TypeAliases, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=TypeAliases, superNames=[]]
|
||||
MODIFIER_LIST:[public final]
|
||||
PRIMARY_CONSTRUCTOR:
|
||||
MODIFIER_LIST:[public]
|
||||
VALUE_PARAMETER_LIST:
|
||||
CLASS_BODY:
|
||||
FUN:[fqName=test.TypeAliases.foo, hasBlockBody=true, hasBody=true, hasTypeParameterListBeforeFunctionName=false, isExtension=false, isTopLevel=false, name=foo]
|
||||
MODIFIER_LIST:[public final]
|
||||
VALUE_PARAMETER_LIST:
|
||||
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=a]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=dependency]
|
||||
REFERENCE_EXPRESSION:[referencedName=A]
|
||||
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=b]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=test]
|
||||
REFERENCE_EXPRESSION:[referencedName=TypeAliases]
|
||||
REFERENCE_EXPRESSION:[referencedName=B]
|
||||
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=ta]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=test]
|
||||
REFERENCE_EXPRESSION:[referencedName=Outer]
|
||||
TYPE_ARGUMENT_LIST:
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=String]
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Double]
|
||||
REFERENCE_EXPRESSION:[referencedName=Inner]
|
||||
TYPE_ARGUMENT_LIST:
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Int]
|
||||
REFERENCE_EXPRESSION:[referencedName=TA]
|
||||
TYPE_ARGUMENT_LIST:
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Boolean]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Unit]
|
||||
TYPEALIAS:[fqName=test.TypeAliases.B, isTopLevel=false, name=B]
|
||||
MODIFIER_LIST:[public]
|
||||
TYPE_REFERENCE:
|
||||
FUNCTION_TYPE:
|
||||
VALUE_PARAMETER_LIST:
|
||||
VALUE_PARAMETER:[fqName=null, hasDefaultValue=false, hasValOrVar=false, isMutable=false, name=null]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=dependency]
|
||||
REFERENCE_EXPRESSION:[referencedName=A]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=Unit]
|
||||
TYPEALIAS:[fqName=test.TypeAliases.Parametrized, isTopLevel=false, name=Parametrized]
|
||||
MODIFIER_LIST:[private]
|
||||
TYPE_PARAMETER_LIST:
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=E]
|
||||
TYPE_PARAMETER:[fqName=null, isInVariance=false, isOutVariance=false, name=F]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=kotlin]
|
||||
REFERENCE_EXPRESSION:[referencedName=collections]
|
||||
REFERENCE_EXPRESSION:[referencedName=Map]
|
||||
TYPE_ARGUMENT_LIST:
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=E]
|
||||
TYPE_PROJECTION:[projectionKind=NONE]
|
||||
TYPE_REFERENCE:
|
||||
USER_TYPE:
|
||||
REFERENCE_EXPRESSION:[referencedName=F]
|
||||
Reference in New Issue
Block a user