From 09947d8f5892added583b842cfcc0e2d9c3b31de Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 6 Apr 2015 19:17:30 +0300 Subject: [PATCH] Move dangerous ClassId.fromString() to test --- .../org/jetbrains/kotlin/name/ClassId.java | 11 -------- .../refactoring/rename/AbstractRenameTest.kt | 28 ++++++++++++------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/name/ClassId.java b/core/descriptors/src/org/jetbrains/kotlin/name/ClassId.java index bcf526057d7..8b11e881f83 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/name/ClassId.java +++ b/core/descriptors/src/org/jetbrains/kotlin/name/ClassId.java @@ -113,15 +113,4 @@ public final class ClassId { if (packageFqName.isRoot()) return "/" + relativeClassName; return packageFqName.toString().replace('.', '/') + "/" + relativeClassName; } - - @NotNull - public static ClassId fromString(@NotNull String string) { - int lastSlash = string.lastIndexOf("/"); - if (lastSlash == -1) { - throw new IllegalArgumentException("Class id should contain slash: " + string); - } - FqName relativeClassName = new FqName(string.substring(lastSlash + 1)); - FqName packageFqName = new FqName(string.substring(0, lastSlash).replace('/', '.')); - return new ClassId(packageFqName, relativeClassName, false); - } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt index 1cbd199797f..995aa7ee85e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt @@ -42,10 +42,7 @@ import org.jetbrains.kotlin.idea.refactoring.move.getString import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.test.KotlinMultiFileTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase -import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqNameUnsafe -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.name.isSubpackageOf +import org.jetbrains.kotlin.name.* import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies @@ -108,7 +105,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { } private fun renameJavaClassTest(renameParamsObject: JsonObject, context: TestContext) { - val classFQN = ClassId.fromString(renameParamsObject.getString("classId")).asSingleFqName().asString() + val classFQN = renameParamsObject.getString("classId").toClassId().asSingleFqName().asString() val newName = renameParamsObject.getString("newName") doTestCommittingDocuments { rootDir, rootAfter -> @@ -120,7 +117,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { } private fun renameJavaMethodTest(renameParamsObject: JsonObject, context: TestContext) { - val classFQN = ClassId.fromString(renameParamsObject.getString("classId")).asSingleFqName().asString() + val classFQN = renameParamsObject.getString("classId").toClassId().asSingleFqName().asString() val methodSignature = renameParamsObject.getString("methodSignature") val newName = renameParamsObject.getString("newName") @@ -166,7 +163,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { doTestCommittingDocuments { rootDir, rootAfter -> val mainFile = rootDir.findChild(mainFilePath)!! - val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!! + val document = FileDocumentManager.getInstance().getDocument(mainFile)!! val jetFile = PsiDocumentManager.getInstance(context.project).getPsiFile(document) as JetFile val fileFqn = jetFile.getPackageFqName() @@ -185,13 +182,13 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { private fun doRenameInKotlinClass( renameParamsObject: JsonObject, context: TestContext, findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor ) { - val classId = ClassId.fromString(renameParamsObject.getString("classId")) + val classId = renameParamsObject.getString("classId").toClassId() val newName = renameParamsObject.getString("newName") val mainFilePath = renameParamsObject.getNullableString("mainFile") ?: "${getTestDirName(false)}.kt" doTestCommittingDocuments { rootDir, rootAfter -> val mainFile = rootDir.findChild(mainFilePath)!! - val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!! + val document = FileDocumentManager.getInstance().getDocument(mainFile)!! val jetFile = PsiDocumentManager.getInstance(context.project).getPsiFile(document) as JetFile val module = jetFile.analyzeFullyAndGetResult().moduleDescriptor @@ -228,7 +225,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { action(rootDir, rootAfter) PsiDocumentManager.getInstance(getProject()!!).commitAllDocuments() - FileDocumentManager.getInstance()?.saveAllDocuments() + FileDocumentManager.getInstance().saveAllDocuments() }, getTestDirName(true)) } @@ -241,3 +238,14 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { return PluginTestCaseBase.getTestDataPathBase() } } + + +private fun String.toClassId(): ClassId { + val lastSlash = lastIndexOf("/") + if (lastSlash == -1) { + throw IllegalArgumentException("Class id should contain slash: $this") + } + val relativeClassName = FqName(substring(lastSlash + 1)) + val packageFqName = FqName(substring(0, lastSlash).replace('/', '.')) + return ClassId(packageFqName, relativeClassName, false) +}