From fed86a57e387b9f347cd5c1b45d00da48cbbf220 Mon Sep 17 00:00:00 2001 From: Pavel Mikhailovskii Date: Wed, 4 Jan 2023 11:28:08 +0000 Subject: [PATCH] Fix isValidJavaFqName --- .../tests/org/jetbrains/kotlin/name/FqNameTest.java | 10 +++++++++- .../src/org/jetbrains/kotlin/name/FqNamesUtil.kt | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/name/FqNameTest.java b/compiler/tests/org/jetbrains/kotlin/name/FqNameTest.java index 28c6cd8f5e3..57750af1e40 100644 --- a/compiler/tests/org/jetbrains/kotlin/name/FqNameTest.java +++ b/compiler/tests/org/jetbrains/kotlin/name/FqNameTest.java @@ -54,12 +54,19 @@ public class FqNameTest { public void isValidJavaFqName() { Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("")); Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("a")); - Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("1")); + Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("a1")); Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("a.a")); Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("org.jetbrains")); Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("$")); + Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("_")); Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("org.A$B")); + Assert.assertTrue(FqNamesUtilKt.isValidJavaFqName("ๆ™ดใ‚Œใฎๆ—ฅ")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName(" ")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName(" a")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("a ")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("1")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("1a")); Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName(".")); Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("..")); Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("a.")); @@ -69,5 +76,6 @@ public class FqNameTest { Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("a.b.")); Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("a.b...)")); Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("a.b.")); + Assert.assertFalse(FqNamesUtilKt.isValidJavaFqName("๐Ÿ˜€")); } } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/FqNamesUtil.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/FqNamesUtil.kt index e56121cef92..7ddf4f9a0ea 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/FqNamesUtil.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/FqNamesUtil.kt @@ -55,7 +55,7 @@ fun isValidJavaFqName(qualifiedName: String?): Boolean { for (c in qualifiedName) { when (state) { State.BEGINNING, State.AFTER_DOT -> { - if (!Character.isJavaIdentifierPart(c)) return false + if (!Character.isJavaIdentifierStart(c)) return false state = State.MIDDLE } State.MIDDLE -> {