[FIR] Implement Int -> Long conversions for literals and operators over them

^KT-38895
^KT-50996 Fixed
^KT-51000 Fixed
^KT-51003 Fixed
^KT-51018 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-01-25 12:41:04 +03:00
committed by teamcity
parent cc86ca2a0f
commit 52b72a7dac
98 changed files with 1318 additions and 232 deletions
@@ -381,6 +381,8 @@ interface TypeSystemContext : TypeSystemOptimizationContext {
fun TypeConstructorMarker.isClassTypeConstructor(): Boolean
fun TypeConstructorMarker.isInterface(): Boolean
fun TypeConstructorMarker.isIntegerLiteralTypeConstructor(): Boolean
fun TypeConstructorMarker.isIntegerLiteralConstantTypeConstructor(): Boolean
fun TypeConstructorMarker.isIntegerConstantOperatorTypeConstructor(): Boolean
fun TypeConstructorMarker.isLocalType(): Boolean
fun TypeConstructorMarker.isAnonymous(): Boolean
fun TypeConstructorMarker.getTypeParameterClassifier(): TypeParameterMarker?
@@ -45,6 +45,14 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy
return this is IntegerLiteralTypeConstructor
}
override fun TypeConstructorMarker.isIntegerLiteralConstantTypeConstructor(): Boolean {
return isIntegerLiteralTypeConstructor()
}
override fun TypeConstructorMarker.isIntegerConstantOperatorTypeConstructor(): Boolean {
return false
}
override fun TypeConstructorMarker.isLocalType(): Boolean {
require(this is TypeConstructor, this::errorMessage)
return declarationDescriptor?.classId?.isLocal == true