KT-14641: Nested type alias reference via an instance is an error.

This commit is contained in:
Dmitry Petrov
2016-11-09 11:57:26 +03:00
parent a662d777e8
commit 94d7bd7a6b
13 changed files with 70 additions and 28 deletions
@@ -144,19 +144,25 @@ abstract class DescriptorRenderer {
modifiers = DescriptorRendererModifier.ALL
}
fun getClassKindPrefix(klass: ClassDescriptor): String {
if (klass.isCompanionObject) {
return "companion object"
}
return when (klass.kind) {
ClassKind.CLASS -> "class"
ClassKind.INTERFACE -> "interface"
ClassKind.ENUM_CLASS -> "enum class"
ClassKind.OBJECT -> "object"
ClassKind.ANNOTATION_CLASS -> "annotation class"
ClassKind.ENUM_ENTRY -> "enum entry"
}
}
fun getClassifierKindPrefix(classifier: ClassifierDescriptorWithTypeParameters): String =
when (classifier) {
is TypeAliasDescriptor ->
"typealias"
is ClassDescriptor ->
if (classifier.isCompanionObject) {
"companion object"
}
else when (classifier.kind) {
ClassKind.CLASS -> "class"
ClassKind.INTERFACE -> "interface"
ClassKind.ENUM_CLASS -> "enum class"
ClassKind.OBJECT -> "object"
ClassKind.ANNOTATION_CLASS -> "annotation class"
ClassKind.ENUM_ENTRY -> "enum entry"
}
else ->
throw AssertionError("Unexpected classifier: $classifier")
}
}
}
@@ -931,7 +931,7 @@ internal class DescriptorRendererImpl(
}
private fun renderClassKindPrefix(klass: ClassDescriptor, builder: StringBuilder) {
builder.append(renderKeyword(DescriptorRenderer.getClassKindPrefix(klass)))
builder.append(renderKeyword(DescriptorRenderer.getClassifierKindPrefix(klass)))
}