From 1c396b9e95d1215c60d656e66fc25fa50bccd3ac Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 23 Feb 2026 14:32:37 +0100 Subject: [PATCH] [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 --- .../intellij.kotlin.highlighting.xml | 1 + .../KotlinHighlightInjectionErrorFilter.kt | 19 ++++++++++++++++++ .../k2/injection/K2KotlinInjectionTest.kt | 20 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/visitor/KotlinHighlightInjectionErrorFilter.kt diff --git a/plugins/kotlin/highlighting/highlighting-k2/resources/intellij.kotlin.highlighting.xml b/plugins/kotlin/highlighting/highlighting-k2/resources/intellij.kotlin.highlighting.xml index 324aaf097850..11e31570602f 100644 --- a/plugins/kotlin/highlighting/highlighting-k2/resources/intellij.kotlin.highlighting.xml +++ b/plugins/kotlin/highlighting/highlighting-k2/resources/intellij.kotlin.highlighting.xml @@ -20,6 +20,7 @@ + diff --git a/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/visitor/KotlinHighlightInjectionErrorFilter.kt b/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/visitor/KotlinHighlightInjectionErrorFilter.kt new file mode 100644 index 000000000000..f6c8a541551a --- /dev/null +++ b/plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/visitor/KotlinHighlightInjectionErrorFilter.kt @@ -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 + } +} diff --git a/plugins/kotlin/injection/k2/tests/test/org/jetbrains/kotlin/idea/k2/injection/K2KotlinInjectionTest.kt b/plugins/kotlin/injection/k2/tests/test/org/jetbrains/kotlin/idea/k2/injection/K2KotlinInjectionTest.kt index 2d209f15c4bc..92acb97075e6 100644 --- a/plugins/kotlin/injection/k2/tests/test/org/jetbrains/kotlin/idea/k2/injection/K2KotlinInjectionTest.kt +++ b/plugins/kotlin/injection/k2/tests/test/org/jetbrains/kotlin/idea/k2/injection/K2KotlinInjectionTest.kt @@ -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() + + } }