Extract some classes from descriptors module to :core:common
This is needed to remove dependencies from fir modules to `:core:descriptors` module What was extracted: - Modality - ClassKind - org.jetbrains.kotlin.name package
This commit is contained in:
@@ -265,6 +265,7 @@ extra["compilerModules"] = arrayOf(
|
|||||||
":kotlin-build-common",
|
":kotlin-build-common",
|
||||||
":core:metadata",
|
":core:metadata",
|
||||||
":core:metadata.jvm",
|
":core:metadata.jvm",
|
||||||
|
":core:descriptors.common",
|
||||||
":core:descriptors",
|
":core:descriptors",
|
||||||
":core:descriptors.jvm",
|
":core:descriptors.jvm",
|
||||||
":core:descriptors.runtime",
|
":core:descriptors.runtime",
|
||||||
@@ -296,6 +297,7 @@ extra["compilerModulesForJps"] = listOf(
|
|||||||
":kotlin-compiler-runner",
|
":kotlin-compiler-runner",
|
||||||
":daemon-common",
|
":daemon-common",
|
||||||
":daemon-common-new",
|
":daemon-common-new",
|
||||||
|
":core:descriptors.common",
|
||||||
":core:descriptors",
|
":core:descriptors",
|
||||||
":core:descriptors.jvm",
|
":core:descriptors.jvm",
|
||||||
":idea:idea-jps-common",
|
":idea:idea-jps-common",
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBinding
|
|||||||
import static org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.isAccessor;
|
import static org.jetbrains.kotlin.codegen.state.KotlinTypeMapper.isAccessor;
|
||||||
import static org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION;
|
import static org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION;
|
||||||
import static org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION;
|
import static org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION;
|
||||||
import static org.jetbrains.kotlin.descriptors.ModalityKt.isOverridable;
|
import static org.jetbrains.kotlin.descriptors.ModalityUtilsKt.isOverridable;
|
||||||
import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.getSourceFromDescriptor;
|
import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.getSourceFromDescriptor;
|
||||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
|
import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
|
||||||
import static org.jetbrains.kotlin.resolve.inline.InlineOnlyKt.isInlineOnlyPrivateInBytecode;
|
import static org.jetbrains.kotlin.resolve.inline.InlineOnlyKt.isInlineOnlyPrivateInBytecode;
|
||||||
|
|||||||
@@ -641,7 +641,7 @@ public class BodyResolver {
|
|||||||
trace.report(SEALED_SUPERTYPE_IN_LOCAL_CLASS.on(typeReference));
|
trace.report(SEALED_SUPERTYPE_IN_LOCAL_CLASS.on(typeReference));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ModalityKt.isFinalOrEnum(classDescriptor)) {
|
else if (ModalityUtilsKt.isFinalOrEnum(classDescriptor)) {
|
||||||
trace.report(FINAL_SUPERTYPE.on(typeReference));
|
trace.report(FINAL_SUPERTYPE.on(typeReference));
|
||||||
}
|
}
|
||||||
else if (KotlinBuiltIns.isEnum(classDescriptor)) {
|
else if (KotlinBuiltIns.isEnum(classDescriptor)) {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
id("jps-compatible")
|
||||||
|
}
|
||||||
|
|
||||||
|
jvmTarget = "1.6"
|
||||||
|
javaHome = rootProject.extra["JDK_16"] as String
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile(project(":core:util.runtime"))
|
||||||
|
compile(project(":core:type-system"))
|
||||||
|
compile(kotlinStdlib())
|
||||||
|
compile(project(":kotlin-annotations-jvm"))
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
"main" { projectDefault() }
|
||||||
|
"test" {}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType<JavaCompile> {
|
||||||
|
sourceCompatibility = "1.6"
|
||||||
|
targetCompatibility = "1.6"
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.descriptors
|
||||||
|
|
||||||
|
// For sealed classes, isOverridable is false but isOverridableByMembers is true
|
||||||
|
enum class Modality {
|
||||||
|
// THE ORDER OF ENTRIES MATTERS HERE
|
||||||
|
FINAL,
|
||||||
|
// NB: class can be sealed but not function or property
|
||||||
|
SEALED,
|
||||||
|
OPEN,
|
||||||
|
ABSTRACT;
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
// NB: never returns SEALED
|
||||||
|
fun convertFromFlags(abstract: Boolean, open: Boolean): Modality {
|
||||||
|
if (abstract) return ABSTRACT
|
||||||
|
if (open) return OPEN
|
||||||
|
return FINAL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ jvmTarget = "1.6"
|
|||||||
javaHome = rootProject.extra["JDK_16"] as String
|
javaHome = rootProject.extra["JDK_16"] as String
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
compile(project(":core:descriptors.common"))
|
||||||
compile(project(":core:util.runtime"))
|
compile(project(":core:util.runtime"))
|
||||||
compile(project(":core:type-system"))
|
compile(project(":core:type-system"))
|
||||||
compile(kotlinStdlib())
|
compile(kotlinStdlib())
|
||||||
|
|||||||
-20
@@ -18,26 +18,6 @@ package org.jetbrains.kotlin.descriptors
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
|
||||||
// For sealed classes, isOverridable is false but isOverridableByMembers is true
|
|
||||||
enum class Modality {
|
|
||||||
// THE ORDER OF ENTRIES MATTERS HERE
|
|
||||||
FINAL,
|
|
||||||
// NB: class can be sealed but not function or property
|
|
||||||
SEALED,
|
|
||||||
OPEN,
|
|
||||||
ABSTRACT;
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
// NB: never returns SEALED
|
|
||||||
fun convertFromFlags(abstract: Boolean, open: Boolean): Modality {
|
|
||||||
if (abstract) return ABSTRACT
|
|
||||||
if (open) return OPEN
|
|
||||||
return FINAL
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val CallableMemberDescriptor.isOverridable: Boolean
|
val CallableMemberDescriptor.isOverridable: Boolean
|
||||||
get() = visibility != Visibilities.PRIVATE
|
get() = visibility != Visibilities.PRIVATE
|
||||||
&& modality != Modality.FINAL
|
&& modality != Modality.FINAL
|
||||||
@@ -58,7 +58,7 @@ public abstract class AbstractClassTypeConstructor extends AbstractTypeConstruct
|
|||||||
@Override
|
@Override
|
||||||
public final boolean isFinal() {
|
public final boolean isFinal() {
|
||||||
ClassDescriptor descriptor = getDeclarationDescriptor();
|
ClassDescriptor descriptor = getDeclarationDescriptor();
|
||||||
return ModalityKt.isFinalClass(descriptor) && !descriptor.isExpect();
|
return ModalityUtilsKt.isFinalClass(descriptor) && !descriptor.isExpect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ public final class JsDescriptorUtils {
|
|||||||
|
|
||||||
public static boolean sideEffectsPossibleOnRead(@NotNull PropertyDescriptor property) {
|
public static boolean sideEffectsPossibleOnRead(@NotNull PropertyDescriptor property) {
|
||||||
return DynamicCallsKt.isDynamic(property) || !isDefaultAccessor(property.getGetter()) ||
|
return DynamicCallsKt.isDynamic(property) || !isDefaultAccessor(property.getGetter()) ||
|
||||||
ModalityKt.isOverridableOrOverrides(property) || isStaticInitializationPossible(property);
|
ModalityUtilsKt.isOverridableOrOverrides(property) || isStaticInitializationPossible(property);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isStaticInitializationPossible(PropertyDescriptor property) {
|
private static boolean isStaticInitializationPossible(PropertyDescriptor property) {
|
||||||
@@ -144,7 +144,7 @@ public final class JsDescriptorUtils {
|
|||||||
isDefaultAccessor(propertyDescriptor.getGetter()) &&
|
isDefaultAccessor(propertyDescriptor.getGetter()) &&
|
||||||
isDefaultAccessor(propertyDescriptor.getSetter()) &&
|
isDefaultAccessor(propertyDescriptor.getSetter()) &&
|
||||||
!TranslationUtils.shouldAccessViaFunctions(propertyDescriptor) &&
|
!TranslationUtils.shouldAccessViaFunctions(propertyDescriptor) &&
|
||||||
!ModalityKt.isOverridableOrOverrides(propertyDescriptor);
|
!ModalityUtilsKt.isOverridableOrOverrides(propertyDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public final class TranslationUtils {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private static JsPropertyInitializer translateExtensionFunctionAsEcma5DataDescriptor(@NotNull JsExpression functionExpression,
|
private static JsPropertyInitializer translateExtensionFunctionAsEcma5DataDescriptor(@NotNull JsExpression functionExpression,
|
||||||
@NotNull FunctionDescriptor descriptor, @NotNull TranslationContext context) {
|
@NotNull FunctionDescriptor descriptor, @NotNull TranslationContext context) {
|
||||||
JsObjectLiteral meta = createDataDescriptor(functionExpression, ModalityKt.isOverridable(descriptor), false);
|
JsObjectLiteral meta = createDataDescriptor(functionExpression, ModalityUtilsKt.isOverridable(descriptor), false);
|
||||||
return new JsPropertyInitializer(context.getNameForDescriptor(descriptor).makeRef(), meta);
|
return new JsPropertyInitializer(context.getNameForDescriptor(descriptor).makeRef(), meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,9 +420,9 @@ public final class TranslationUtils {
|
|||||||
|
|
||||||
public static boolean isOverridableFunctionWithDefaultParameters(@NotNull FunctionDescriptor descriptor) {
|
public static boolean isOverridableFunctionWithDefaultParameters(@NotNull FunctionDescriptor descriptor) {
|
||||||
return hasOrInheritsParametersWithDefaultValue(descriptor) &&
|
return hasOrInheritsParametersWithDefaultValue(descriptor) &&
|
||||||
!(descriptor instanceof ConstructorDescriptor) &&
|
!(descriptor instanceof ConstructorDescriptor) &&
|
||||||
descriptor.getContainingDeclaration() instanceof ClassDescriptor &&
|
descriptor.getContainingDeclaration() instanceof ClassDescriptor &&
|
||||||
ModalityKt.isOverridable(descriptor);
|
ModalityUtilsKt.isOverridable(descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ dependencies {
|
|||||||
embedded(project(":core:metadata"))
|
embedded(project(":core:metadata"))
|
||||||
embedded(project(":core:metadata.jvm"))
|
embedded(project(":core:metadata.jvm"))
|
||||||
embedded(project(":core:descriptors"))
|
embedded(project(":core:descriptors"))
|
||||||
|
embedded(project(":core:descriptors.common"))
|
||||||
embedded(project(":core:descriptors.jvm"))
|
embedded(project(":core:descriptors.jvm"))
|
||||||
embedded(project(":core:deserialization"))
|
embedded(project(":core:deserialization"))
|
||||||
embedded(project(":core:descriptors.runtime"))
|
embedded(project(":core:descriptors.runtime"))
|
||||||
@@ -158,6 +159,7 @@ val relocateCoreSources by task<Copy> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
from("$core/descriptors/src")
|
from("$core/descriptors/src")
|
||||||
|
from("$core/descriptors.common/src")
|
||||||
from("$core/descriptors.jvm/src")
|
from("$core/descriptors.jvm/src")
|
||||||
from("$core/descriptors.runtime/src")
|
from("$core/descriptors.runtime/src")
|
||||||
from("$core/deserialization/src")
|
from("$core/deserialization/src")
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ val projectsToShadow by extra(listOf(
|
|||||||
":core:metadata",
|
":core:metadata",
|
||||||
":core:metadata.jvm",
|
":core:metadata.jvm",
|
||||||
":core:descriptors",
|
":core:descriptors",
|
||||||
|
":core:descriptors.common",
|
||||||
":core:descriptors.jvm",
|
":core:descriptors.jvm",
|
||||||
":core:deserialization",
|
":core:deserialization",
|
||||||
":idea:jvm-debugger:eval4j",
|
":idea:jvm-debugger:eval4j",
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ include ":benchmarks",
|
|||||||
":native:kotlin-klib-commonizer-embeddable",
|
":native:kotlin-klib-commonizer-embeddable",
|
||||||
":jps-plugin",
|
":jps-plugin",
|
||||||
":kotlin-jps-plugin",
|
":kotlin-jps-plugin",
|
||||||
|
":core:descriptors.common",
|
||||||
":core:descriptors",
|
":core:descriptors",
|
||||||
":core:type-system",
|
":core:type-system",
|
||||||
":core:descriptors.jvm",
|
":core:descriptors.jvm",
|
||||||
|
|||||||
Reference in New Issue
Block a user