CIDR: Avoid Java errors during KTS analysis in CIDR
There is no Java support in CIDR. Therefore: - analyze KTS in CIDR using Common platform - disable error highlighting for KTS in CIDR Issue #KT-29953 Fixed
This commit is contained in:
@@ -9,4 +9,8 @@ package org.jetbrains.kotlin.idea.util
|
|||||||
|
|
||||||
import com.intellij.util.PlatformUtils
|
import com.intellij.util.PlatformUtils
|
||||||
|
|
||||||
val isRunningInCidrIde by lazy { PlatformUtils.isCidr() }
|
// Currently CIDR IDEs (CLion and AppCode) have no Java support.
|
||||||
|
// Use this property to bypass Java-specific logic in CIDR.
|
||||||
|
val isRunningInCidrIde: Boolean by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||||
|
PlatformUtils.isCidr()
|
||||||
|
}
|
||||||
|
|||||||
+3
-2
@@ -50,12 +50,12 @@ import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
|||||||
import org.jetbrains.kotlin.idea.project.outOfBlockModificationCount
|
import org.jetbrains.kotlin.idea.project.outOfBlockModificationCount
|
||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
|
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.contains
|
import org.jetbrains.kotlin.psi.psiUtil.contains
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
||||||
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.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.sumByLong
|
import org.jetbrains.kotlin.utils.addToStdlib.sumByLong
|
||||||
@@ -97,7 +97,8 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
|
|||||||
syntheticFiles: Collection<KtFile> = listOf()
|
syntheticFiles: Collection<KtFile> = listOf()
|
||||||
): ProjectResolutionFacade {
|
): ProjectResolutionFacade {
|
||||||
val sdk = dependenciesModuleInfo.sdk
|
val sdk = dependenciesModuleInfo.sdk
|
||||||
val platform = JvmPlatform // TODO: Js scripts?
|
val platform = /* Fallback to Common platform in CIDR (Java is not supported there) */
|
||||||
|
DefaultIdeTargetPlatformKindProvider.defaultCompilerPlatform // TODO: Js scripts?
|
||||||
val settings = PlatformAnalysisSettings(
|
val settings = PlatformAnalysisSettings(
|
||||||
platform, sdk, true,
|
platform, sdk, true,
|
||||||
LanguageFeature.ReleaseCoroutines.defaultState == LanguageFeature.State.ENABLED
|
LanguageFeature.ReleaseCoroutines.defaultState == LanguageFeature.State.ENABLED
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink
|
|||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
|
import org.jetbrains.kotlin.idea.util.isRunningInCidrIde
|
||||||
import org.jetbrains.kotlin.psi.KtCodeFragment
|
import org.jetbrains.kotlin.psi.KtCodeFragment
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
@@ -65,6 +66,7 @@ object KotlinHighlightingUtil {
|
|||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
private fun shouldHighlightScript(ktFile: KtFile): Boolean {
|
private fun shouldHighlightScript(ktFile: KtFile): Boolean {
|
||||||
|
if (isRunningInCidrIde) return false // There is no Java support in CIDR. So do not highlight errors in KTS if running in CIDR.
|
||||||
if (ktFile.virtualFile.scriptDependencies == null) return false
|
if (ktFile.virtualFile.scriptDependencies == null) return false
|
||||||
if (ktFile.virtualFile.getUserData(IdeScriptReportSink.Reports)?.any { it.severity == ScriptReport.Severity.FATAL } == true) {
|
if (ktFile.virtualFile.getUserData(IdeScriptReportSink.Reports)?.any { it.severity == ScriptReport.Severity.FATAL } == true) {
|
||||||
return false
|
return false
|
||||||
|
|||||||
Reference in New Issue
Block a user