diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt index 2e4b6fdb66b..128bc7122af 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/DefaultParameterValueSubstitutor.kt @@ -160,7 +160,7 @@ class DefaultParameterValueSubstitutor(val state: GenerationState) { if (!state.classBuilderMode.generateBodies) { FunctionCodegen.generateLocalVariablesForParameters( - mv, signature, functionDescriptor, null, Label(), Label(), remainingParameters, isStatic, typeMapper + mv, signature, functionDescriptor, null, Label(), Label(), remainingParameters, isStatic, state ) mv.visitEnd() return @@ -245,7 +245,7 @@ class DefaultParameterValueSubstitutor(val state: GenerationState) { mv.visitLabel(methodEnd) FunctionCodegen.generateLocalVariablesForParameters( - mv, signature, functionDescriptor, null, methodBegin, methodEnd, remainingParameters, isStatic, typeMapper + mv, signature, functionDescriptor, null, methodBegin, methodEnd, remainingParameters, isStatic, state ) FunctionCodegen.endVisit(mv, null, methodElement) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 8528e288865..dd5cb80ae2a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -459,7 +459,7 @@ public class FunctionCodegen { new Label(), new Label(), contextKind, - typeMapper, + state, Collections.emptyList(), 0); @@ -695,7 +695,7 @@ public class FunctionCodegen { } generateLocalVariableTable( - mv, signature, functionDescriptor, thisType, methodBegin, methodEnd, context.getContextKind(), typeMapper, + mv, signature, functionDescriptor, thisType, methodBegin, methodEnd, context.getContextKind(), parentCodegen.state, destructuredParametersForSuspendLambda, (functionFakeIndex >= 0 ? 1 : 0) + (lambdaFakeIndex >= 0 ? 1 : 0) ); @@ -756,7 +756,7 @@ public class FunctionCodegen { @NotNull Label methodBegin, @NotNull Label methodEnd, @NotNull OwnerKind ownerKind, - @NotNull KotlinTypeMapper typeMapper, + @NotNull GenerationState state, @NotNull List destructuredParametersForSuspendLambda, int shiftForDestructuringVariables ) { @@ -776,7 +776,7 @@ public class FunctionCodegen { ) ), unwrapped, - thisType, methodBegin, methodEnd, ownerKind, typeMapper, destructuredParametersForSuspendLambda, + thisType, methodBegin, methodEnd, ownerKind, state, destructuredParametersForSuspendLambda, shiftForDestructuringVariables ); return; @@ -787,7 +787,7 @@ public class FunctionCodegen { jvmMethodSignature, functionDescriptor, thisType, methodBegin, methodEnd, functionDescriptor.getValueParameters(), destructuredParametersForSuspendLambda, - AsmUtil.isStaticMethod(ownerKind, functionDescriptor), typeMapper, shiftForDestructuringVariables + AsmUtil.isStaticMethod(ownerKind, functionDescriptor), state, shiftForDestructuringVariables ); } @@ -800,11 +800,11 @@ public class FunctionCodegen { @NotNull Label methodEnd, Collection valueParameters, boolean isStatic, - KotlinTypeMapper typeMapper + @NotNull GenerationState state ) { generateLocalVariablesForParameters( mv, jvmMethodSignature, functionDescriptor, - thisType, methodBegin, methodEnd, valueParameters, Collections.emptyList(), isStatic, typeMapper, + thisType, methodBegin, methodEnd, valueParameters, Collections.emptyList(), isStatic, state, 0); } @@ -818,7 +818,7 @@ public class FunctionCodegen { Collection valueParameters, @NotNull List destructuredParametersForSuspendLambda, boolean isStatic, - KotlinTypeMapper typeMapper, + @NotNull GenerationState state, int shiftForDestructuringVariables ) { Iterator valueParameterIterator = valueParameters.iterator(); @@ -836,6 +836,7 @@ public class FunctionCodegen { shift++; } + KotlinTypeMapper typeMapper = state.getTypeMapper(); for (int i = 0; i < params.size(); i++) { JvmMethodParameterSignature param = params.get(i); JvmMethodParameterKind kind = param.getKind(); @@ -852,7 +853,7 @@ public class FunctionCodegen { } else if (kind == JvmMethodParameterKind.RECEIVER) { parameterName = AsmUtil.getNameForReceiverParameter( - functionDescriptor, typeMapper.getBindingContext(), typeMapper.getLanguageVersionSettings()); + functionDescriptor, typeMapper.getBindingContext(), state.getLanguageVersionSettings()); } else { String lowercaseKind = kind.name().toLowerCase(); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/signature/KotlinToJvmSignatureMapperImpl.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/signature/KotlinToJvmSignatureMapperImpl.kt index 3c68ce964e7..f1b95265193 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/signature/KotlinToJvmSignatureMapperImpl.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/signature/KotlinToJvmSignatureMapperImpl.kt @@ -6,9 +6,7 @@ package org.jetbrains.kotlin.codegen.signature import org.jetbrains.kotlin.codegen.ClassBuilderMode -import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.resolve.BindingContext @@ -18,8 +16,8 @@ class KotlinToJvmSignatureMapperImpl : KotlinToJvmSignatureMapper { // We use empty BindingContext, because it is only used by KotlinTypeMapper for purposes irrelevant to the needs of this class private val typeMapper = KotlinTypeMapper( BindingContext.EMPTY, ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, - KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT // TODO use proper LanguageVersionSettings + JvmAbi.DEFAULT_MODULE_NAME, + KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT// TODO use proper LanguageVersionSettings ) override fun mapToJvmMethodSignature(function: FunctionDescriptor) = typeMapper.mapAsmMethod(function) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt index 65116204206..a99ec90a446 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/BuilderFactoryForDuplicateSignatureDiagnostics.kt @@ -10,7 +10,6 @@ import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.codegen.ClassBuilderFactory import org.jetbrains.kotlin.codegen.ClassBuilderMode import org.jetbrains.kotlin.codegen.SignatureCollectingClassBuilderFactory -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION @@ -56,8 +55,8 @@ class BuilderFactoryForDuplicateSignatureDiagnostics( // Avoid errors when some classes are not loaded for some reason private val typeMapper = KotlinTypeMapper( - bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, moduleName, JvmTarget.DEFAULT, - languageVersionSettings, isIrBackend + bindingContext, ClassBuilderMode.LIGHT_CLASSES, moduleName, languageVersionSettings, + isIrBackend = isIrBackend ) private val reportDiagnosticsTasks = ArrayList<() -> Unit>() diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt index c9724ad61cb..909210436cf 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/GenerationState.kt @@ -36,7 +36,6 @@ import org.jetbrains.kotlin.psi.KtScript import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.deprecation.CoroutineCompatibilitySupport import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver -import org.jetbrains.kotlin.resolve.deprecation.DeprecationSettings import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin @@ -192,10 +191,10 @@ class GenerationState private constructor( val typeMapper: KotlinTypeMapper = KotlinTypeMapper( this.bindingContext, classBuilderMode, - IncompatibleClassTrackerImpl(extraJvmDiagnosticsTrace), this.moduleName, - target, languageVersionSettings, + IncompatibleClassTrackerImpl(extraJvmDiagnosticsTrace), + target, isIrBackend ) val intrinsics: IntrinsicMethods = run { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt index 854aef3c218..65808030991 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt @@ -78,12 +78,12 @@ import kotlin.collections.* class KotlinTypeMapper @JvmOverloads constructor( val bindingContext: BindingContext, val classBuilderMode: ClassBuilderMode, - private val incompatibleClassTracker: IncompatibleClassTracker, private val moduleName: String, - val jvmTarget: JvmTarget, private val languageVersionSettings: LanguageVersionSettings, + private val incompatibleClassTracker: IncompatibleClassTracker = IncompatibleClassTracker.DoNothing, + val jvmTarget: JvmTarget = JvmTarget.DEFAULT, private val isIrBackend: Boolean = false, - private val typePreprocessor: Function1? = null + private val typePreprocessor: ((KotlinType) -> KotlinType?)? = null ) { private val isReleaseCoroutines = languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) @@ -116,10 +116,6 @@ class KotlinTypeMapper @JvmOverloads constructor( } } - fun getLanguageVersionSettings(): LanguageVersionSettings { - return languageVersionSettings - } - fun mapOwner(descriptor: DeclarationDescriptor): Type { return mapOwner(descriptor, true) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index e0a3dc5558d..71f2cd0581b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -134,11 +134,9 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG override val typeMapper: KotlinTypeMapper by lazyPub { KotlinTypeMapper( BindingContext.EMPTY, ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, moduleName, - JvmTarget.JVM_1_8, - KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT, // TODO use proper LanguageVersionSettings - false, - KotlinType::cleanFromAnonymousTypes + moduleName, KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT, // TODO use proper LanguageVersionSettings + jvmTarget = JvmTarget.JVM_1_8, + typePreprocessor = KotlinType::cleanFromAnonymousTypes ) } }) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt index 3537f1a8b45..e6030cace68 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/FileRankingCalculator.kt @@ -10,9 +10,7 @@ import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.psi.PsiElement import com.sun.jdi.* import org.jetbrains.kotlin.codegen.ClassBuilderMode -import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.diagnostics.DiagnosticUtils import org.jetbrains.kotlin.idea.caches.resolve.analyze @@ -344,7 +342,9 @@ abstract class FileRankingCalculator(private val checkClassFqName: Boolean = tru private fun makeTypeMapper(bindingContext: BindingContext): KotlinTypeMapper { return KotlinTypeMapper( - bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, "debugger", JvmTarget.DEFAULT, + bindingContext, + ClassBuilderMode.LIGHT_CLASSES, + "debugger", KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT // TODO use proper LanguageVersionSettings ) } diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ParcelableDeclarationChecker.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ParcelableDeclarationChecker.kt index 26b9850a6ff..0159d6b4fa8 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ParcelableDeclarationChecker.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ParcelableDeclarationChecker.kt @@ -12,9 +12,7 @@ import org.jetbrains.kotlin.android.synthetic.diagnostic.DefaultErrorMessagesAnd import org.jetbrains.kotlin.android.synthetic.diagnostic.ErrorsAndroid import org.jetbrains.kotlin.codegen.ClassBuilderMode import org.jetbrains.kotlin.codegen.FrameMap -import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -181,9 +179,7 @@ class ParcelableDeclarationChecker : DeclarationChecker { val typeMapper = KotlinTypeMapper( bindingContext, ClassBuilderMode.FULL, - IncompatibleClassTracker.DoNothing, descriptor.module.name.asString(), - JvmTarget.DEFAULT, languageVersionSettings ) diff --git a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt index afa9042fc48..b9cdae8b32e 100644 --- a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt +++ b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt @@ -23,9 +23,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.util.CachedValueProvider.Result import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.codegen.ClassBuilderMode -import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze @@ -48,8 +46,7 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService { override fun getTypeMapper(element: KtElement): KotlinTypeMapper? { return KotlinTypeMapper( getBindingContext(element), ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, - element.languageVersionSettings + JvmAbi.DEFAULT_MODULE_NAME, element.languageVersionSettings ) } diff --git a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182 b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182 index d9453dca886..7846d6f5d2c 100644 --- a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182 +++ b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182 @@ -44,9 +44,8 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService { override fun getTypeMapper(element: KtElement): KotlinTypeMapper? { return KotlinTypeMapper( getBindingContext(element), ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, - element.languageVersionSettings, - false + JvmAbi.DEFAULT_MODULE_NAME, + element.languageVersionSettings ) } diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt index a48d7b811c3..3109a12e05f 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt @@ -4,9 +4,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.codegen.ClassBuilderMode -import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.container.ComponentProvider @@ -61,7 +59,7 @@ class UastAnalysisHandlerExtension : AnalysisHandlerExtension { val typeMapper = KotlinTypeMapper( bindingContext, ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, + JvmAbi.DEFAULT_MODULE_NAME, KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT // TODO use proper LanguageVersionSettings ) this.typeMapper = typeMapper diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt.182 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt.182 index 7c6ce147dc5..ffadcff53d1 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt.182 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/internal/CliKotlinUastResolveProviderService.kt.182 @@ -57,9 +57,8 @@ class UastAnalysisHandlerExtension : AnalysisHandlerExtension { val typeMapper = KotlinTypeMapper( bindingContext, ClassBuilderMode.LIGHT_CLASSES, - IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, - KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT, // TODO use proper LanguageVersionSettings - false + JvmAbi.DEFAULT_MODULE_NAME, + KotlinTypeMapper.LANGUAGE_VERSION_SETTINGS_DEFAULT // TODO use proper LanguageVersionSettings ) this.typeMapper = typeMapper return typeMapper