mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] erroneous error on kotlin injections in foreign languages
^KTIJ-32613 fixed IJ-CR-192902 (cherry picked from commit f87c8ea0c39924653b3de96de25494c9311963e7) IJ-CR-192960 GitOrigin-RevId: ea9ffd57379215e98a6da6f65d1ddadfefe6b5ac
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5e6f1b483a
commit
1c396b9e95
@@ -20,6 +20,7 @@
|
||||
<highlightVisitor implementation="org.jetbrains.kotlin.idea.highlighting.visitor.KotlinDiagnosticHighlightVisitor"/>
|
||||
<highlightVisitor implementation="org.jetbrains.kotlin.idea.highlighting.visitor.KotlinUnusedDeclarationHighlightingVisitor"/>
|
||||
<highlightVisitor implementation="org.jetbrains.kotlin.idea.highlighting.visitor.KotlinUnresolvedKDocHighlightVisitor"/>
|
||||
<highlightErrorFilter implementation="org.jetbrains.kotlin.idea.highlighting.visitor.KotlinHighlightInjectionErrorFilter"/>
|
||||
|
||||
<highlightUsagesHandlerFactory implementation="org.jetbrains.kotlin.idea.highlighting.KotlinHighlightExitPointsHandlerFactory"/>
|
||||
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.highlighting.visitor
|
||||
|
||||
import com.intellij.codeInsight.highlighting.HighlightErrorFilter
|
||||
import com.intellij.lang.injection.InjectedLanguageManager
|
||||
import com.intellij.psi.PsiErrorElement
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
|
||||
internal class KotlinHighlightInjectionErrorFilter: HighlightErrorFilter() {
|
||||
override fun shouldHighlightErrorElement(element: PsiErrorElement): Boolean {
|
||||
if (element.language == KotlinLanguage.INSTANCE &&
|
||||
element.errorDescription == "Package directive and imports are forbidden in code fragments" &&
|
||||
InjectedLanguageManager.getInstance(element.project).isInjectedFragment(element.containingFile)
|
||||
) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
+20
@@ -68,4 +68,24 @@ class K2KotlinInjectionTest: KotlinInjectionTestBase() {
|
||||
myFixture.checkHighlighting()
|
||||
}
|
||||
}
|
||||
|
||||
fun testInjectKotlinInJava() {
|
||||
myFixture.configureByText(
|
||||
"a.java",
|
||||
"""
|
||||
|
||||
import org.intellij.lang.annotations.Language;
|
||||
|
||||
class Main {
|
||||
{
|
||||
@Language("kotlin")
|
||||
var kotlinCode = "package foo; class A";
|
||||
}
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
myFixture.checkHighlighting()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user