Move dangerous ClassId.fromString() to test

This commit is contained in:
Pavel V. Talanov
2015-04-06 19:17:30 +03:00
parent 336886f115
commit 09947d8f58
2 changed files with 18 additions and 21 deletions
@@ -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);
}
}
@@ -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)
}