Analysis API: fix constructor return type for FE1.0 implementation

This commit is contained in:
Ilya Kirillov
2021-11-25 13:26:18 +01:00
parent 6e555e1d28
commit a70c336c2c
3 changed files with 8 additions and 18 deletions
@@ -18,10 +18,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypes
import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration
import org.jetbrains.kotlin.psi.psiUtil.unwrapParenthesesLabelsAndAnnotations
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.inference.returnTypeOrNothing
import org.jetbrains.kotlin.resolve.calls.smartcasts.MultipleSmartCasts
@@ -115,6 +112,13 @@ class KtFe10ExpressionTypeProvider(
}
}
if (declaration is KtConstructor<*>) {
val bindingContext = analysisContext.analyze(declaration)
val kotlinType = bindingContext[BindingContext.CONSTRUCTOR, declaration]?.returnType
?: ErrorUtils.createErrorType("Return type for constructor \"${declaration.containingClass()?.name}\" cannot be resolved")
return kotlinType.toKtType(analysisContext)
}
return analysisContext.builtIns.unitType.toKtType(analysisContext)
}