From 10b68df2688d433ba53788182cd4685b03135fed Mon Sep 17 00:00:00 2001 From: Ilia Permiashkin Date: Mon, 30 Jun 2025 17:18:06 +0000 Subject: [PATCH] IJPL-194260 Umlauts in code names cause spellchecker false positive Merge-request: IJ-MR-167314 Merged-by: Ilia Permiashkin GitOrigin-RevId: 8b35392555b59cf4c94e8767acdb46218fe57668 --- .../jetbrains/kotlin/idea/grazie/KotlinGrazieSupportTest.kt | 4 ++++ plugins/kotlin/idea/tests/testData/grazie/Umlauts.kt | 5 +++++ .../spellchecker/inspections/IdentifierSplitter.java | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 plugins/kotlin/idea/tests/testData/grazie/Umlauts.kt diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/grazie/KotlinGrazieSupportTest.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/grazie/KotlinGrazieSupportTest.kt index e8a36088eef4..1d7a7c0cc88b 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/grazie/KotlinGrazieSupportTest.kt +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/grazie/KotlinGrazieSupportTest.kt @@ -28,6 +28,10 @@ class KotlinGrazieSupportTest28 : GrazieTestBase() { runHighlightTestForFile("grazie/StringLiterals.kt") } + fun `test umlauts doesn't produce false positives`() { + runHighlightTestForFile("grazie/Umlauts.kt") + } + fun `test text extraction in string literals`() { val file = myFixture.configureByText("a.kt", "val s = \"foo $" + "{injection} bar\" ") val content = TextExtractor.findTextAt(file, 10, TextContent.TextDomain.ALL) diff --git a/plugins/kotlin/idea/tests/testData/grazie/Umlauts.kt b/plugins/kotlin/idea/tests/testData/grazie/Umlauts.kt new file mode 100644 index 000000000000..12f0841f365c --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/grazie/Umlauts.kt @@ -0,0 +1,5 @@ +package ide.language.kotlin + +fun `ähnliche Werte sollen gruppiert werden`() { + +} \ No newline at end of file diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java index eda966174711..d6e03c0b1160 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java @@ -20,7 +20,7 @@ public class IdentifierSplitter extends BaseSplitter { return INSTANCE; } - private static final @NonNls Pattern WORD = Pattern.compile("\\b\\p{L}*'?\\p{L}*"); + private static final @NonNls Pattern WORD = Pattern.compile("(?U)\\b\\p{L}*'?\\p{L}*"); private static final @NonNls Pattern WORD_IN_QUOTES = Pattern.compile("'([^']*)'"); @Override