KT-14274: resolve type alias constructors calls in supertypes list as type alias constructors.

Support @Deprecated for type aliases, including type alias constructors.
This commit is contained in:
Dmitry Petrov
2016-10-10 18:21:19 +03:00
parent bee0e783f8
commit 8d634f6003
25 changed files with 285 additions and 43 deletions
@@ -111,17 +111,18 @@ class TypeAliasConstructorDescriptorImpl private constructor(
fun create(
typeAliasDescriptor: TypeAliasDescriptor,
constructor: ClassConstructorDescriptor,
substitutor: TypeSubstitutor
substitutor: TypeSubstitutor?
): TypeAliasConstructorDescriptor? {
val actualSubstitutor = substitutor ?: TypeSubstitutor.EMPTY
val typeAliasConstructor =
TypeAliasConstructorDescriptorImpl(typeAliasDescriptor, constructor, null, constructor.annotations,
constructor.kind, typeAliasDescriptor.source)
val valueParameters =
FunctionDescriptorImpl.getSubstitutedValueParameters(typeAliasConstructor, constructor.valueParameters, substitutor, false)
?: return null
val valueParameters = FunctionDescriptorImpl.getSubstitutedValueParameters(typeAliasConstructor, constructor.valueParameters, actualSubstitutor, false)
?: return null
val returnType = substitutor.substitute(constructor.returnType, Variance.INVARIANT)
val returnType = actualSubstitutor.substitute(constructor.returnType, Variance.INVARIANT)
?: return null
val containingDeclaration = constructor.containingDeclaration
@@ -137,10 +138,12 @@ class TypeAliasConstructorDescriptorImpl private constructor(
valueParameters,
returnType,
Modality.FINAL,
constructor.visibility)
typeAliasDescriptor.visibility)
return typeAliasConstructor
}
}
}