diff --git a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index 70a0fc50da6..3d7f5a78d7c 100644 --- a/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -26,6 +26,8 @@ class CodeConformanceTest : TestCase() { companion object { private val JAVA_FILE_PATTERN = Pattern.compile(".+\\.java") private val SOURCES_FILE_PATTERN = Pattern.compile("(.+\\.java|.+\\.kt|.+\\.js)") + private val SOURCES_BUNCH_FILE_PATTERN = Pattern.compile("(.+\\.java|.+\\.kt|.+\\.js)(\\.\\w+)?") + private const val MAX_STEPS_COUNT = 100 private val EXCLUDED_FILES_AND_DIRS = listOf( "android.tests.dependencies", "buildSrc", @@ -97,6 +99,46 @@ class CodeConformanceTest : TestCase() { } } + private fun isCorrectExtension(filename: String, extensions: Set): Boolean { + val additionalExtensions = listOf( + "after", "new", "before", "expected", + "todo", "delete", "touch", "prefix", "postfix", "map", + "fragment", "after2", "result", "log", "messages", "conflicts", "match", "imports", "txt", "xml" + ) + val possibleAdditionalExtensions = extensions.plus(additionalExtensions) + val fileExtensions = filename.split("\\.").drop(1) + if (fileExtensions.size < 2) { + return true + } + val extension = fileExtensions.last() + + return !(extension !in possibleAdditionalExtensions && extension.toIntOrNull() ?: MAX_STEPS_COUNT >= MAX_STEPS_COUNT) + } + + fun testForgottenBunchDirectivesAndFiles() { + val root = File("").absoluteFile + val extensions = File(root, ".bunch").readLines().map { it.split("_") }.flatten().toSet() + val failBuilder = mutableListOf() + for (sourceFile in FileUtil.findFilesByMask(SOURCES_BUNCH_FILE_PATTERN, root)) { + if (EXCLUDED_FILES_AND_DIRS.any { FileUtil.isAncestor(it, sourceFile, false) }) continue + + val matches = Regex("BUNCH: (\\w+)").findAll(sourceFile.readText()) + .map { it.groupValues[1] }.toSet().filterNot { it in extensions } + for (bunch in matches) { + val filename = FileUtil.toSystemIndependentName(sourceFile.absoluteFile.toRelativeString(root)) + failBuilder.add("$filename has unregistered $bunch bunch directive") + } + + if (!isCorrectExtension(sourceFile.name, extensions)) { + val filename = FileUtil.toSystemIndependentName(sourceFile.absoluteFile.toRelativeString(root)) + failBuilder.add("$filename has unknown bunch extension") + } + } + if (failBuilder.isNotEmpty()) { + fail("\n" + failBuilder.joinToString("\n")) + } + } + fun testNoBadSubstringsInProjectCode() { class TestData(val message: String, val filter: (String) -> Boolean) { val result: MutableList = ArrayList() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ScratchFileModuleInfoProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ScratchFileModuleInfoProvider.kt index e67ce9d1950..50772d95b08 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ScratchFileModuleInfoProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ScratchFileModuleInfoProvider.kt @@ -39,19 +39,6 @@ class ScratchFileModuleInfoProvider(val project: Project) : ProjectComponent { val ktFile = scratchFile.getPsiFile() as? KtFile ?: return val file = ktFile.virtualFile ?: return - // BUNCH: 181 scratch files are created with .kt extension - if (file.extension == KotlinFileType.EXTENSION) { - runWriteAction { - var newName = file.nameWithoutExtension + STD_SCRIPT_EXT - var i = 1 - while (file.parent.findChild(newName) != null) { - newName = file.nameWithoutExtension + "_" + i + STD_SCRIPT_EXT - i++ - } - file.rename(this, newName) - } - } - if (file.extension != STD_SCRIPT_SUFFIX) { LOG.error("Kotlin Scratch file should have .kts extension. Cannot add scratch panel for ${file.path}") return diff --git a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/IdentifiersTestBase.kt.173 b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/IdentifiersTestBase.kt.173 deleted file mode 100644 index e69de29bb2d..00000000000