diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt index 80b58569f89..08a8938fb45 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt @@ -1091,7 +1091,7 @@ private class ConstantExpressionEvaluatorVisitor( expectedType: KotlinType ): CompileTimeConstant<*> { if (parameters.isUnsignedNumberLiteral && !checkAccessibilityOfUnsignedTypes()) { - return UnsignedErrorValueTypeConstant(value, parameters) + return UnsignedErrorValueTypeConstant(value, constantExpressionEvaluator.module, parameters) } if (parameters.isUnsignedLongNumberLiteral) { diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/CompileTimeConstant.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/CompileTimeConstant.kt index 8be4f74610a..0c87f08dfde 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/CompileTimeConstant.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/CompileTimeConstant.kt @@ -32,6 +32,8 @@ interface CompileTimeConstant { val parameters: CompileTimeConstant.Parameters + val moduleDescriptor: ModuleDescriptor + fun toConstantValue(expectedType: KotlinType): ConstantValue fun getValue(expectedType: KotlinType): T = toConstantValue(expectedType).value @@ -68,15 +70,15 @@ interface CompileTimeConstant { } class TypedCompileTimeConstant( - val constantValue: ConstantValue, - module: ModuleDescriptor, - override val parameters: CompileTimeConstant.Parameters + val constantValue: ConstantValue, + override val moduleDescriptor: ModuleDescriptor, + override val parameters: CompileTimeConstant.Parameters ) : CompileTimeConstant { override val isError: Boolean get() = constantValue is ErrorValue - val type: KotlinType = constantValue.getType(module) + val type: KotlinType = constantValue.getType(moduleDescriptor) override fun toConstantValue(expectedType: KotlinType): ConstantValue = constantValue @@ -114,6 +116,7 @@ fun hasUnsignedTypesInModuleDependencies(module: ModuleDescriptor): Boolean { class UnsignedErrorValueTypeConstant( private val value: Number, + override val moduleDescriptor: ModuleDescriptor, override val parameters: CompileTimeConstant.Parameters ) : CompileTimeConstant { val errorValue = ErrorValue.ErrorValueWithMessage( @@ -134,7 +137,7 @@ class UnsignedErrorValueTypeConstant( class IntegerValueTypeConstant( private val value: Number, - module: ModuleDescriptor, + override val moduleDescriptor: ModuleDescriptor, override val parameters: CompileTimeConstant.Parameters, private val newInferenceEnabled: Boolean, val convertedFromSigned: Boolean = false @@ -174,9 +177,9 @@ class IntegerValueTypeConstant( private val typeConstructor = if (newInferenceEnabled) { - IntegerLiteralTypeConstructor(value.toLong(), module, parameters) + IntegerLiteralTypeConstructor(value.toLong(), moduleDescriptor, parameters) } else { - IntegerValueTypeConstructor(value.toLong(), module, parameters) + IntegerValueTypeConstructor(value.toLong(), moduleDescriptor, parameters) } override fun toConstantValue(expectedType: KotlinType): ConstantValue {