Pass JvmTarget to KotlinTypeMapper
Also use KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT instead of false in FileRankingCalculator
This commit is contained in:
+2
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.codegen.signature
|
|||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -17,7 +18,7 @@ class KotlinToJvmSignatureMapperImpl : KotlinToJvmSignatureMapper {
|
|||||||
// We use empty BindingContext, because it is only used by KotlinTypeMapper for purposes irrelevant to the needs of this class
|
// We use empty BindingContext, because it is only used by KotlinTypeMapper for purposes irrelevant to the needs of this class
|
||||||
private val typeMapper = KotlinTypeMapper(
|
private val typeMapper = KotlinTypeMapper(
|
||||||
BindingContext.EMPTY, ClassBuilderMode.LIGHT_CLASSES,
|
BindingContext.EMPTY, ClassBuilderMode.LIGHT_CLASSES,
|
||||||
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, false, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -10,6 +10,7 @@ import com.intellij.util.containers.MultiMap
|
|||||||
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
|
import org.jetbrains.kotlin.codegen.ClassBuilderFactory
|
||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.SignatureCollectingClassBuilderFactory
|
import org.jetbrains.kotlin.codegen.SignatureCollectingClassBuilderFactory
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE
|
||||||
@@ -54,8 +55,8 @@ class BuilderFactoryForDuplicateSignatureDiagnostics(
|
|||||||
|
|
||||||
// Avoid errors when some classes are not loaded for some reason
|
// Avoid errors when some classes are not loaded for some reason
|
||||||
private val typeMapper = KotlinTypeMapper(
|
private val typeMapper = KotlinTypeMapper(
|
||||||
bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, moduleName, false, isReleaseCoroutines,
|
bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, moduleName, JvmTarget.DEFAULT,
|
||||||
isIrBackend
|
isReleaseCoroutines, isIrBackend
|
||||||
)
|
)
|
||||||
private val reportDiagnosticsTasks = ArrayList<() -> Unit>()
|
private val reportDiagnosticsTasks = ArrayList<() -> Unit>()
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,6 @@ class GenerationState private constructor(
|
|||||||
val languageVersionSettings = configuration.languageVersionSettings
|
val languageVersionSettings = configuration.languageVersionSettings
|
||||||
|
|
||||||
val target = configuration.get(JVMConfigurationKeys.JVM_TARGET) ?: JvmTarget.DEFAULT
|
val target = configuration.get(JVMConfigurationKeys.JVM_TARGET) ?: JvmTarget.DEFAULT
|
||||||
val isJvm8Target: Boolean = target == JvmTarget.JVM_1_8
|
|
||||||
|
|
||||||
val moduleName: String = moduleName ?: JvmCodegenUtil.getModuleName(module)
|
val moduleName: String = moduleName ?: JvmCodegenUtil.getModuleName(module)
|
||||||
val classBuilderMode: ClassBuilderMode = builderFactory.classBuilderMode
|
val classBuilderMode: ClassBuilderMode = builderFactory.classBuilderMode
|
||||||
@@ -187,7 +186,7 @@ class GenerationState private constructor(
|
|||||||
classBuilderMode,
|
classBuilderMode,
|
||||||
IncompatibleClassTrackerImpl(extraJvmDiagnosticsTrace),
|
IncompatibleClassTrackerImpl(extraJvmDiagnosticsTrace),
|
||||||
this.moduleName,
|
this.moduleName,
|
||||||
isJvm8Target,
|
target,
|
||||||
configuration.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines),
|
configuration.languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines),
|
||||||
isIrBackend
|
isIrBackend
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.codegen.inline.FictitiousArrayConstructor;
|
|||||||
import org.jetbrains.kotlin.codegen.signature.AsmTypeFactory;
|
import org.jetbrains.kotlin.codegen.signature.AsmTypeFactory;
|
||||||
import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter;
|
import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter;
|
||||||
import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter;
|
import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter;
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor;
|
import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
|
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
|
||||||
@@ -85,9 +86,9 @@ public class KotlinTypeMapper {
|
|||||||
private final ClassBuilderMode classBuilderMode;
|
private final ClassBuilderMode classBuilderMode;
|
||||||
private final IncompatibleClassTracker incompatibleClassTracker;
|
private final IncompatibleClassTracker incompatibleClassTracker;
|
||||||
private final String moduleName;
|
private final String moduleName;
|
||||||
private final boolean isJvm8Target;
|
private final JvmTarget jvmTarget;
|
||||||
private final boolean isReleaseCoroutines;
|
private final boolean isReleaseCoroutines;
|
||||||
private boolean isIrBackend;
|
private final boolean isIrBackend;
|
||||||
|
|
||||||
private final TypeMappingConfiguration<Type> typeMappingConfiguration = new TypeMappingConfiguration<Type>() {
|
private final TypeMappingConfiguration<Type> typeMappingConfiguration = new TypeMappingConfiguration<Type>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -157,17 +158,7 @@ public class KotlinTypeMapper {
|
|||||||
@NotNull ClassBuilderMode classBuilderMode,
|
@NotNull ClassBuilderMode classBuilderMode,
|
||||||
@NotNull IncompatibleClassTracker incompatibleClassTracker,
|
@NotNull IncompatibleClassTracker incompatibleClassTracker,
|
||||||
@NotNull String moduleName,
|
@NotNull String moduleName,
|
||||||
boolean isJvm8Target
|
@NotNull JvmTarget jvmTarget,
|
||||||
) {
|
|
||||||
this(bindingContext, classBuilderMode, incompatibleClassTracker, moduleName, isJvm8Target, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public KotlinTypeMapper(
|
|
||||||
@NotNull BindingContext bindingContext,
|
|
||||||
@NotNull ClassBuilderMode classBuilderMode,
|
|
||||||
@NotNull IncompatibleClassTracker incompatibleClassTracker,
|
|
||||||
@NotNull String moduleName,
|
|
||||||
boolean isJvm8Target,
|
|
||||||
boolean isReleaseCoroutines,
|
boolean isReleaseCoroutines,
|
||||||
boolean isIrBackend
|
boolean isIrBackend
|
||||||
) {
|
) {
|
||||||
@@ -175,7 +166,7 @@ public class KotlinTypeMapper {
|
|||||||
this.classBuilderMode = classBuilderMode;
|
this.classBuilderMode = classBuilderMode;
|
||||||
this.incompatibleClassTracker = incompatibleClassTracker;
|
this.incompatibleClassTracker = incompatibleClassTracker;
|
||||||
this.moduleName = moduleName;
|
this.moduleName = moduleName;
|
||||||
this.isJvm8Target = isJvm8Target;
|
this.jvmTarget = jvmTarget;
|
||||||
this.isReleaseCoroutines = isReleaseCoroutines;
|
this.isReleaseCoroutines = isReleaseCoroutines;
|
||||||
this.isIrBackend = isIrBackend;
|
this.isIrBackend = isIrBackend;
|
||||||
}
|
}
|
||||||
@@ -954,7 +945,8 @@ public class KotlinTypeMapper {
|
|||||||
return new CallableMethod(
|
return new CallableMethod(
|
||||||
owner, ownerForDefaultImpl, defaultImplDesc, signature, invokeOpcode,
|
owner, ownerForDefaultImpl, defaultImplDesc, signature, invokeOpcode,
|
||||||
thisClass, dispatchReceiverKotlinType, receiverParameterType, extensionReceiverKotlinType, calleeType, returnKotlinType,
|
thisClass, dispatchReceiverKotlinType, receiverParameterType, extensionReceiverKotlinType, calleeType, returnKotlinType,
|
||||||
isJvm8Target ? isInterfaceMember : invokeOpcode == INVOKEINTERFACE, isDefaultMethodInInterface
|
jvmTarget.compareTo(JvmTarget.JVM_1_8) >= 0 ? isInterfaceMember : invokeOpcode == INVOKEINTERFACE,
|
||||||
|
isDefaultMethodInInterface
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
|||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
@@ -417,7 +418,10 @@ abstract class FileRankingCalculator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun makeTypeMapper(bindingContext: BindingContext): KotlinTypeMapper {
|
private fun makeTypeMapper(bindingContext: BindingContext): KotlinTypeMapper {
|
||||||
return KotlinTypeMapper(bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, "debugger", false)
|
return KotlinTypeMapper(
|
||||||
|
bindingContext, ClassBuilderMode.LIGHT_CLASSES, IncompatibleClassTracker.DoNothing, "debugger", JvmTarget.DEFAULT,
|
||||||
|
KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT, false
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -429,4 +433,4 @@ private fun String.simpleName() = substringAfterLast('.').substringAfterLast('$'
|
|||||||
|
|
||||||
private fun PsiElement.getLine(): Int {
|
private fun PsiElement.getLine(): Int {
|
||||||
return DiagnosticUtils.getLineAndColumnInPsiFile(containingFile, textRange).line
|
return DiagnosticUtils.getLineAndColumnInPsiFile(containingFile, textRange).line
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-4
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
|||||||
import org.jetbrains.kotlin.codegen.FrameMap
|
import org.jetbrains.kotlin.codegen.FrameMap
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||||
@@ -27,8 +28,8 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||||
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.jvm.annotations.findJvmFieldAnnotation
|
import org.jetbrains.kotlin.resolve.jvm.annotations.findJvmFieldAnnotation
|
||||||
@@ -184,9 +185,9 @@ class ParcelableDeclarationChecker : DeclarationChecker {
|
|||||||
ClassBuilderMode.FULL,
|
ClassBuilderMode.FULL,
|
||||||
IncompatibleClassTracker.DoNothing,
|
IncompatibleClassTracker.DoNothing,
|
||||||
descriptor.module.name.asString(),
|
descriptor.module.name.asString(),
|
||||||
/* isJvm8Target */ false,
|
JvmTarget.DEFAULT,
|
||||||
/* isReleaseCoroutines */ KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
||||||
/* isIrBackend*/false
|
false
|
||||||
)
|
)
|
||||||
|
|
||||||
for (parameter in primaryConstructor?.valueParameters.orEmpty()) {
|
for (parameter in primaryConstructor?.valueParameters.orEmpty()) {
|
||||||
|
|||||||
@@ -20,16 +20,17 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
|
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||||
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.idea.util.module
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.uast.kotlin.KotlinUastResolveProviderService
|
import org.jetbrains.uast.kotlin.KotlinUastResolveProviderService
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
|
||||||
|
|
||||||
class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
|
class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
|
||||||
override fun getBindingContext(element: KtElement) = element.analyze(BodyResolveMode.PARTIAL)
|
override fun getBindingContext(element: KtElement) = element.analyze(BodyResolveMode.PARTIAL)
|
||||||
@@ -37,7 +38,7 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
|
|||||||
override fun getTypeMapper(element: KtElement): KotlinTypeMapper? {
|
override fun getTypeMapper(element: KtElement): KotlinTypeMapper? {
|
||||||
return KotlinTypeMapper(
|
return KotlinTypeMapper(
|
||||||
getBindingContext(element), ClassBuilderMode.LIGHT_CLASSES,
|
getBindingContext(element), ClassBuilderMode.LIGHT_CLASSES,
|
||||||
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, false, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -6,6 +6,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult
|
|||||||
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
import org.jetbrains.kotlin.codegen.ClassBuilderMode
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTracker
|
||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
@@ -56,7 +57,7 @@ class UastAnalysisHandlerExtension : AnalysisHandlerExtension {
|
|||||||
|
|
||||||
val typeMapper = KotlinTypeMapper(
|
val typeMapper = KotlinTypeMapper(
|
||||||
bindingContext, ClassBuilderMode.LIGHT_CLASSES,
|
bindingContext, ClassBuilderMode.LIGHT_CLASSES,
|
||||||
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, false, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
IncompatibleClassTracker.DoNothing, JvmAbi.DEFAULT_MODULE_NAME, JvmTarget.DEFAULT, KotlinTypeMapper.RELEASE_COROUTINES_DEFAULT,
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
this.typeMapper = typeMapper
|
this.typeMapper = typeMapper
|
||||||
|
|||||||
Reference in New Issue
Block a user