[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:
Anna Kozlova
2026-02-24 19:12:10 +00:00
committed by intellij-monorepo-bot
parent 5e6f1b483a
commit 1c396b9e95
3 changed files with 40 additions and 0 deletions
@@ -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"/>
@@ -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
}
}
@@ -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()
}
}