diff --git a/.idea/modules.xml b/.idea/modules.xml index c7519db2a4ee..047c43399672 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -838,6 +838,7 @@ + diff --git a/java/java-impl/intellij.java.impl.iml b/java/java-impl/intellij.java.impl.iml index 2a447907cebe..4376e49bee04 100644 --- a/java/java-impl/intellij.java.impl.iml +++ b/java/java-impl/intellij.java.impl.iml @@ -72,6 +72,7 @@ + diff --git a/java/java-tests/intellij.java.tests.iml b/java/java-tests/intellij.java.tests.iml index 7a85f316fb05..9a7cf061eddb 100644 --- a/java/java-tests/intellij.java.tests.iml +++ b/java/java-tests/intellij.java.tests.iml @@ -85,5 +85,6 @@ + \ No newline at end of file diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/PlatformModules.kt b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/PlatformModules.kt index 83a4e471b9f5..e8319ba6797d 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/PlatformModules.kt +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/PlatformModules.kt @@ -29,6 +29,7 @@ private val PLATFORM_API_MODULES: List = java.util.List.of( "intellij.platform.lang.core", "intellij.platform.lang", "intellij.platform.lvcs", + "intellij.platform.ml", "intellij.platform.ide", "intellij.platform.ide.core", "intellij.platform.projectModel", diff --git a/platform/lang-api/intellij.platform.lang.iml b/platform/lang-api/intellij.platform.lang.iml index 09fbf4b62ef2..354103e250f0 100644 --- a/platform/lang-api/intellij.platform.lang.iml +++ b/platform/lang-api/intellij.platform.lang.iml @@ -29,5 +29,6 @@ + \ No newline at end of file diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeature.kt b/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeature.kt deleted file mode 100644 index db54fb7a095b..000000000000 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeature.kt +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.codeInsight.completion.ml - -interface MLFeature { - val name: String - fun compute(): MLFeatureValue -} - -data class SimpleMLFeature(override val name: String, private val value: MLFeatureValue) : MLFeature { - override fun compute(): MLFeatureValue = value -} diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureValue.kt b/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureValue.kt index f50f7ac6d186..a1c3ef3f6b54 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureValue.kt +++ b/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureValue.kt @@ -1,6 +1,7 @@ // Copyright 2000-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.codeInsight.completion.ml +import com.intellij.internal.ml.MLFeatureValueBase import org.jetbrains.annotations.ApiStatus /* @@ -29,7 +30,7 @@ import org.jetbrains.annotations.ApiStatus * values to the clipboard. */ @ApiStatus.Internal -sealed class MLFeatureValue { +sealed class MLFeatureValue : MLFeatureValueBase { companion object { private val TRUE = BinaryValue(true) private val FALSE = BinaryValue(false) @@ -57,32 +58,13 @@ sealed class MLFeatureValue { @JvmStatic fun > className(value: T, useSimpleName: Boolean = true): MLFeatureValue = ClassNameValue(value, useSimpleName) - @JvmStatic - fun string(value: String): MLFeatureValue = StringValue(value) - - @JvmStatic - fun list(value: List<*>): MLFeatureValue = ListValue(value) - @JvmStatic fun version(value: String): MLFeatureValue = VersionValue(value) } - abstract val value: Any - abstract val isSafe: Boolean - - abstract class SafeValue : MLFeatureValue() { - override val isSafe: Boolean = true - } - - abstract class UnSafeValue : MLFeatureValue() { - override val isSafe: Boolean = false - } - - data class BinaryValue internal constructor(override val value: Boolean) : SafeValue() - data class FloatValue internal constructor(override val value: Double) : SafeValue() - data class CategoricalValue internal constructor(override val value: String) : SafeValue() - data class ClassNameValue internal constructor(override val value: Class<*>, val useSimpleName: Boolean) : UnSafeValue() - data class VersionValue internal constructor(override val value: String) : UnSafeValue() - data class StringValue internal constructor(override val value: String) : UnSafeValue() - data class ListValue internal constructor(override val value: List<*>) : UnSafeValue() + data class BinaryValue internal constructor(override val value: Boolean) : MLFeatureValue() + data class FloatValue internal constructor(override val value: Double) : MLFeatureValue() + data class CategoricalValue internal constructor(override val value: String) : MLFeatureValue() + data class ClassNameValue internal constructor(override val value: Class<*>, val useSimpleName: Boolean) : MLFeatureValue() + data class VersionValue internal constructor(override val value: String) : MLFeatureValue() } diff --git a/platform/ml-api/intellij.platform.ml.iml b/platform/ml-api/intellij.platform.ml.iml new file mode 100644 index 000000000000..62c9f579f941 --- /dev/null +++ b/platform/ml-api/intellij.platform.ml.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLContext.kt b/platform/ml-api/src/com/intellij/internal/ml/MLContext.kt similarity index 85% rename from platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLContext.kt rename to platform/ml-api/src/com/intellij/internal/ml/MLContext.kt index 67c0e00c6cd7..867a0525af94 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLContext.kt +++ b/platform/ml-api/src/com/intellij/internal/ml/MLContext.kt @@ -1,5 +1,5 @@ // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.codeInsight.completion.ml +package com.intellij.internal.ml import com.intellij.psi.PsiElement import org.jetbrains.annotations.ApiStatus diff --git a/platform/ml-api/src/com/intellij/internal/ml/MLFeature.kt b/platform/ml-api/src/com/intellij/internal/ml/MLFeature.kt new file mode 100644 index 000000000000..f5a5475e5510 --- /dev/null +++ b/platform/ml-api/src/com/intellij/internal/ml/MLFeature.kt @@ -0,0 +1,17 @@ +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.internal.ml + +import org.jetbrains.annotations.ApiStatus + +@ApiStatus.Internal +interface MLFeature { + val name: String + fun compute(): MLFeatureValueBase + + companion object { + fun simple(name: String, value: MLFeatureValueBase): MLFeature = object : MLFeature { + override val name: String = name + override fun compute(): MLFeatureValueBase = value + } + } +} diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureProvider.kt b/platform/ml-api/src/com/intellij/internal/ml/MLFeatureProvider.kt similarity index 88% rename from platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureProvider.kt rename to platform/ml-api/src/com/intellij/internal/ml/MLFeatureProvider.kt index 911a4a73a98d..54f081e89bb3 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/ml/MLFeatureProvider.kt +++ b/platform/ml-api/src/com/intellij/internal/ml/MLFeatureProvider.kt @@ -1,5 +1,5 @@ // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.codeInsight.completion.ml +package com.intellij.internal.ml import com.intellij.lang.LanguageExtension import org.jetbrains.annotations.ApiStatus @@ -12,7 +12,7 @@ interface MLFeatureProvider { fun isApplicable(context: MLContext): Boolean companion object { - private val EP_NAME = LanguageExtension("com.intellij.completion.ml.features") + private val EP_NAME = LanguageExtension("com.intellij.internal.ml.featureProvider") fun applicableProviders(context: MLContext): List = EP_NAME.allForLanguageOrAny(context.position.language).filter { it.isApplicable(context) } diff --git a/platform/ml-api/src/com/intellij/internal/ml/MLFeatureValueBase.kt b/platform/ml-api/src/com/intellij/internal/ml/MLFeatureValueBase.kt new file mode 100644 index 000000000000..3fef3dc3d16a --- /dev/null +++ b/platform/ml-api/src/com/intellij/internal/ml/MLFeatureValueBase.kt @@ -0,0 +1,9 @@ +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.internal.ml + +import org.jetbrains.annotations.ApiStatus + +@ApiStatus.Internal +interface MLFeatureValueBase { + val value: Any +} diff --git a/platform/platform-resources/src/META-INF/CompletionExtensionPoints.xml b/platform/platform-resources/src/META-INF/CompletionExtensionPoints.xml index 3d94100a844c..b72d024291ae 100644 --- a/platform/platform-resources/src/META-INF/CompletionExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/CompletionExtensionPoints.xml @@ -15,10 +15,6 @@ - - - - diff --git a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml index 2d576eb155d3..c51c8e97a934 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml @@ -487,5 +487,9 @@ + + + + diff --git a/plugins/completion-ml-ranking/intellij.completionMlRanking.iml b/plugins/completion-ml-ranking/intellij.completionMlRanking.iml index 4ee4452d5327..39935a355d21 100644 --- a/plugins/completion-ml-ranking/intellij.completionMlRanking.iml +++ b/plugins/completion-ml-ranking/intellij.completionMlRanking.iml @@ -46,5 +46,6 @@ + \ No newline at end of file diff --git a/plugins/completion-ml-ranking/intellij.completionMlRanking.tests.iml b/plugins/completion-ml-ranking/intellij.completionMlRanking.tests.iml index 93044ec66719..7e723130c3f3 100644 --- a/plugins/completion-ml-ranking/intellij.completionMlRanking.tests.iml +++ b/plugins/completion-ml-ranking/intellij.completionMlRanking.tests.iml @@ -13,5 +13,6 @@ + \ No newline at end of file diff --git a/plugins/completion-ml-ranking/src/com/intellij/completion/ml/features/MLFeaturesUtil.kt b/plugins/completion-ml-ranking/src/com/intellij/completion/ml/features/MLFeaturesUtil.kt index 42af051dfbd1..0fe2e1f5f0ff 100644 --- a/plugins/completion-ml-ranking/src/com/intellij/completion/ml/features/MLFeaturesUtil.kt +++ b/plugins/completion-ml-ranking/src/com/intellij/completion/ml/features/MLFeaturesUtil.kt @@ -14,7 +14,6 @@ internal object MLFeaturesUtil { is MLFeatureValue.CategoricalValue -> featureValue.value is MLFeatureValue.ClassNameValue -> getClassNameSafe(featureValue) is MLFeatureValue.VersionValue -> getVersionSafe(featureValue) - else -> if (featureValue.isSafe) featureValue.value else throw IllegalArgumentException("Feature value $featureValue is unsafe") } } diff --git a/plugins/evaluation-plugin/intellij.evaluationPlugin.iml b/plugins/evaluation-plugin/intellij.evaluationPlugin.iml index e4634fdc8389..040c3c3e119e 100644 --- a/plugins/evaluation-plugin/intellij.evaluationPlugin.iml +++ b/plugins/evaluation-plugin/intellij.evaluationPlugin.iml @@ -30,5 +30,6 @@ + \ No newline at end of file diff --git a/python/intellij.python.community.impl.iml b/python/intellij.python.community.impl.iml index f728a528bf21..be14917ec435 100644 --- a/python/intellij.python.community.impl.iml +++ b/python/intellij.python.community.impl.iml @@ -109,5 +109,6 @@ + \ No newline at end of file diff --git a/python/testSrc/intellij.python.community.tests.iml b/python/testSrc/intellij.python.community.tests.iml index ea1d619fb859..40d96c4cb6de 100644 --- a/python/testSrc/intellij.python.community.tests.iml +++ b/python/testSrc/intellij.python.community.tests.iml @@ -45,5 +45,6 @@ + \ No newline at end of file