diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt index d11b4e6e6d5..aae0b44a9f6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt @@ -355,7 +355,7 @@ class TypeResolver( type(resolveTypeForTypeParameter(c, annotations, descriptor, qualifierPart.expression, qualifierPart.typeArguments)) } is ClassDescriptor -> resolveTypeForClass(c, annotations, descriptor, element, qualifierResolutionResult) - is TypeAliasDescriptor -> resolveTypeForTypeAlias(c, annotations, descriptor, element as KtUserType, qualifierResolutionResult) + is TypeAliasDescriptor -> resolveTypeForTypeAlias(c, annotations, descriptor, element, qualifierResolutionResult) else -> error("Unexpected classifier type: ${descriptor.javaClass}") } } @@ -434,7 +434,7 @@ class TypeResolver( c: TypeResolutionContext, annotations: Annotations, descriptor: TypeAliasDescriptor, - type: KtUserType, + type: KtElement, qualifierResolutionResult: QualifiedExpressionResolver.TypeQualifierResolutionResult ): PossiblyBareType { val typeConstructor = descriptor.typeConstructor @@ -487,7 +487,7 @@ class TypeResolver( private class TracingTypeAliasExpansionReportStrategy( val trace: BindingTrace, - val type: KtUserType?, + val type: KtElement?, val typeArgumentsOrTypeName: KtElement?, val typeAliasDescriptor: TypeAliasDescriptor, typeParameters: List, diff --git a/compiler/testData/diagnostics/tests/typealias/classReference.kt b/compiler/testData/diagnostics/tests/typealias/classReference.kt new file mode 100644 index 00000000000..33c74a0eb4a --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/classReference.kt @@ -0,0 +1,3 @@ +typealias S = String + +val s = S::class diff --git a/compiler/testData/diagnostics/tests/typealias/classReference.txt b/compiler/testData/diagnostics/tests/typealias/classReference.txt new file mode 100644 index 00000000000..6c5c4df4a43 --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/classReference.txt @@ -0,0 +1,4 @@ +package + +public typealias S = kotlin.String +public val s: kotlin.reflect.KClass diff --git a/compiler/testData/diagnostics/tests/typealias/methodReference.kt b/compiler/testData/diagnostics/tests/typealias/methodReference.kt new file mode 100644 index 00000000000..c0914863e45 --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/methodReference.kt @@ -0,0 +1,7 @@ +class C { + fun foo() {} +} + +typealias CA = C + +val cf = CA::foo diff --git a/compiler/testData/diagnostics/tests/typealias/methodReference.txt b/compiler/testData/diagnostics/tests/typealias/methodReference.txt new file mode 100644 index 00000000000..636b490c290 --- /dev/null +++ b/compiler/testData/diagnostics/tests/typealias/methodReference.txt @@ -0,0 +1,12 @@ +package + +public typealias CA = C +public val cf: kotlin.reflect.KFunction1 + +public final class C { + public constructor C() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index bf87263933f..3457caee061 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -19647,6 +19647,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("classReference.kt") + public void testClassReference() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/classReference.kt"); + doTest(fileName); + } + @TestMetadata("conflictingProjections.kt") public void testConflictingProjections() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/conflictingProjections.kt"); @@ -19731,6 +19737,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("methodReference.kt") + public void testMethodReference() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/methodReference.kt"); + doTest(fileName); + } + @TestMetadata("nested.kt") public void testNested() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/typealias/nested.kt");