Make checker tests independent of plugin version
Relates to #KT-37702 #KTI-433
This commit is contained in:
@@ -1,69 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2019 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.idea.highlighter
|
|
||||||
|
|
||||||
import com.intellij.lang.annotation.AnnotationHolder
|
|
||||||
import com.intellij.lang.annotation.Annotator
|
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
|
||||||
import com.intellij.openapi.progress.ProcessCanceledException
|
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
import org.jetbrains.kotlin.checkers.utils.DebugInfoUtil
|
|
||||||
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent
|
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
|
||||||
import org.jetbrains.kotlin.psi.KtCodeFragment
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.psi.KtReferenceExpression
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Quick showing possible problems with Kotlin internals in IDEA with tooltips
|
|
||||||
*/
|
|
||||||
class DebugInfoAnnotator : Annotator {
|
|
||||||
|
|
||||||
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
|
|
||||||
if (!isDebugInfoEnabled || !ProjectRootsUtil.isInProjectOrLibSource(element)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (element is KtFile && element !is KtCodeFragment) {
|
|
||||||
try {
|
|
||||||
val bindingContext = element.analyzeWithContent()
|
|
||||||
DebugInfoUtil.markDebugAnnotations(element, bindingContext, object : DebugInfoUtil.DebugInfoReporter() {
|
|
||||||
override fun reportElementWithErrorType(expression: KtReferenceExpression) {
|
|
||||||
holder.createErrorAnnotation(expression, "[DEBUG] Resolved to error element").textAttributes =
|
|
||||||
KotlinHighlightingColors.RESOLVED_TO_ERROR
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun reportMissingUnresolved(expression: KtReferenceExpression) {
|
|
||||||
holder.createErrorAnnotation(
|
|
||||||
expression,
|
|
||||||
"[DEBUG] Reference is not resolved to anything, but is not marked unresolved"
|
|
||||||
).textAttributes = KotlinHighlightingColors.DEBUG_INFO
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun reportUnresolvedWithTarget(expression: KtReferenceExpression, target: String) {
|
|
||||||
holder.createErrorAnnotation(expression, "[DEBUG] Reference marked as unresolved is actually resolved to $target")
|
|
||||||
.textAttributes = KotlinHighlightingColors.DEBUG_INFO
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (e: ProcessCanceledException) {
|
|
||||||
throw e
|
|
||||||
} catch (e: Throwable) {
|
|
||||||
// TODO
|
|
||||||
holder.createErrorAnnotation(element, e.javaClass.canonicalName + ": " + e.message)
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
val isDebugInfoEnabled: Boolean
|
|
||||||
get() = ApplicationManager.getApplication().isUnitTestMode ||
|
|
||||||
(ApplicationManager.getApplication().isInternal &&
|
|
||||||
(KotlinPluginUtil.isSnapshotVersion() || KotlinPluginUtil.isDevVersion()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.checkers.utils.DebugInfoUtil
|
|||||||
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
import org.jetbrains.kotlin.idea.KotlinPluginUtil
|
||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.idea.util.application.isApplicationInternalMode
|
import org.jetbrains.kotlin.idea.util.application.isApplicationInternalMode
|
||||||
|
import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
|
||||||
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 org.jetbrains.kotlin.psi.KtReferenceExpression
|
import org.jetbrains.kotlin.psi.KtReferenceExpression
|
||||||
@@ -75,7 +76,9 @@ class DebugInfoHighlightingPass(file: KtFile, document: Document) : AbstractBind
|
|||||||
class Factory : TextEditorHighlightingPassFactory {
|
class Factory : TextEditorHighlightingPassFactory {
|
||||||
override fun createHighlightingPass(file: PsiFile, editor: Editor): TextEditorHighlightingPass? {
|
override fun createHighlightingPass(file: PsiFile, editor: Editor): TextEditorHighlightingPass? {
|
||||||
return if (file is KtFile &&
|
return if (file is KtFile &&
|
||||||
(isApplicationInternalMode() && (KotlinPluginUtil.isSnapshotVersion() || KotlinPluginUtil.isDevVersion())) &&
|
(isUnitTestMode() ||
|
||||||
|
isApplicationInternalMode() &&
|
||||||
|
(KotlinPluginUtil.isSnapshotVersion() || KotlinPluginUtil.isDevVersion())) &&
|
||||||
ProjectRootsUtil.isInProjectOrLibSource(file)
|
ProjectRootsUtil.isInProjectOrLibSource(file)
|
||||||
) {
|
) {
|
||||||
DebugInfoHighlightingPass(file, editor.document)
|
DebugInfoHighlightingPass(file, editor.document)
|
||||||
|
|||||||
Reference in New Issue
Block a user