[FIR] Count alias reference with type arguments as qualifier w/out value

This commit is contained in:
Mikhail Glukhikh
2020-01-22 13:14:39 +03:00
parent e39df5bb91
commit c37394ec83
3 changed files with 5 additions and 2 deletions
@@ -207,6 +207,7 @@ class FirCallResolver(
referencedSymbol is FirClassLikeSymbol<*> -> {
val classId = referencedSymbol.classId
return FirResolvedQualifierImpl(nameReference.source, classId.packageFqName, classId.relativeClassName).apply {
typeArguments.addAll(qualifiedAccess.typeArguments)
resultType = if (classId.isLocal) {
typeForQualifierByDeclaration(referencedSymbol.fir, resultType, session)
?: resultType.resolvedTypeFromPrototype(
@@ -320,7 +320,9 @@ fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifi
val classSymbol = symbolProvider.getClassLikeSymbolByFqName(classId)
?: return FirErrorTypeRefImpl(source = null, diagnostic = FirSimpleDiagnostic("No type for qualifier", DiagnosticKind.Other))
val declaration = classSymbol.phasedFir
typeForQualifierByDeclaration(declaration, resultType, session)?.let { return it }
if (declaration !is FirTypeAlias || resolvedQualifier.typeArguments.isEmpty()) {
typeForQualifierByDeclaration(declaration, resultType, session)?.let { return it }
}
}
// TODO: Handle no value type here
return resultType.resolvedTypeFromPrototype(