diff --git a/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts b/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts index e2b93279d68..d2d13aee439 100644 --- a/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts +++ b/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts @@ -6,8 +6,6 @@ plugins { } group = "org.jetbrains.kotlin.fir" -val jmhVersion = "1.21" -val testDataPath = "$rootDir/compiler/fir/lightTree/testData/coroutines" repositories { mavenCentral() @@ -35,10 +33,6 @@ dependencies { testRuntimeOnly(project(":kotlin-reflect")) testRuntimeOnly(project(":core:descriptors.runtime")) - implementation("org.openjdk.jmh", "jmh-core", jmhVersion) - implementation("org.openjdk.jmh", "jmh-generator-bytecode", jmhVersion) - implementation("org.openjdk.jmh", "jmh-generator-annprocess", jmhVersion) - testCompileOnly(intellijCore()) testRuntimeOnly(intellijCore()) } @@ -62,68 +56,6 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { projectTest { workingDir = rootDir - exclude("**/benchmark/**") } testsJar() - -val compactClasspath by tasks.registering(Jar::class) { - archiveAppendix.set("classpath") - inputs.files(sourceSets["main"].runtimeClasspath + sourceSets["test"].runtimeClasspath) - doFirst { - manifest { - attributes["Class-Path"] = (sourceSets["main"].runtimeClasspath + sourceSets["test"].runtimeClasspath).files - .joinToString(separator = " ", transform = { it.toURI().toURL().toString() }) - } - } -} - -val jmhBytecode by tasks.registering(JavaExec::class) { - tasks["classes"].mustRunAfter(tasks["clean"]) - tasks["compactClasspath"].mustRunAfter(tasks["classes"]) - dependsOn(tasks["clean"]) - dependsOn(tasks["classes"]) - dependsOn(tasks["compactClasspath"]) - - classpath = files(tasks["compactClasspath"].outputs.files.singleFile.absolutePath) - main = "org.openjdk.jmh.generators.bytecode.JmhBytecodeGenerator" - args( - "${project.buildDir}/classes/kotlin/test", "${project.buildDir}/generated-sources/jmh/", - "${project.buildDir}/classes/kotlin/test", "default" - ) -} - -//tasks { -// compileTestJava { -// source(fileTree("${project.buildDir}/generated-sources/jmh/")) -// destinationDir = file("${project.buildDir}/generated-classes/jmh/") -// } -//} - -val jmhCompile by tasks.registering(JavaCompile::class) { - /*classpath = sourceSets["test"].runtimeClasspath + files("${project.buildDir}/generated-sources/jmh/") - - source(fileTree("${project.buildDir}/generated-sources/jmh/")) - destinationDir = file("${project.buildDir}/generated-classes/jmh/")*/ -} - -val jmhExec by tasks.registering(JavaExec::class) { - dependsOn(":createIdeaHomeForTests") - dependsOn(tasks["compileTestJava"]) - - doFirst { - classpath = files( - tasks["compactClasspath"].outputs.files.singleFile.absolutePath, - "${project.buildDir}/generated-classes/jmh/", - "${project.buildDir}/classes/kotlin/test" - ) - } - - main = "org.openjdk.jmh.Main" - - workingDir = rootDir - systemProperty("idea.home.path", project.ideaHomePathForTests().absolutePath) - systemProperty("idea.use.native.fs.for.win", false) - systemProperty("idea.max.intellisense.filesize", 5000 * 1024) - configurations.plusAssign(project.configurations["api"]) -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmark.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmark.kt deleted file mode 100644 index 3e056ca5a18..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmark.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark - -import com.intellij.openapi.util.io.FileUtil -import com.intellij.openapi.vfs.CharsetToolkit -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.TreeGenerator -import org.jetbrains.kotlin.fir.lightTree.walkTopDown -import org.jetbrains.kotlin.fir.lightTree.walkTopDownWithTestData -import org.openjdk.jmh.annotations.* -import java.io.File -import java.util.concurrent.TimeUnit - -/** - * This class is base for all benchmarks. - * - * To run benchmarks use gradle and consistently run next tasks: - * 1. jmhBytecode - * 2. jmhExec - */ -@BenchmarkMode(Mode.SingleShotTime) -@Warmup(iterations = 10, batchSize = 1) -@Measurement(iterations = 10, batchSize = 1) -@OutputTimeUnit(TimeUnit.MILLISECONDS) -@Fork(1) -@State(Scope.Benchmark) -abstract class AbstractBenchmark { - private val files = mutableMapOf() - abstract val generator: TreeGenerator - - protected fun readFiles(ignoreTestData: Boolean, path: String) { - println("BASE PATH: $path") - val saveText: (File) -> Unit = { file -> - val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim() - files[file] = text - } - if (ignoreTestData) { - path.walkTopDown(saveText) - } else { - path.walkTopDownWithTestData(saveText) - } - } - - protected fun forEachFile(f: (String, File) -> Unit) { - for ((file, text) in files) { - f(text, file) - } - } - - protected fun getFilesCount(): Int { - return files.size - } -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmarkForGivenPath.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmarkForGivenPath.kt deleted file mode 100644 index 54bcc21c366..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/AbstractBenchmarkForGivenPath.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark - -import org.openjdk.jmh.annotations.* - -abstract class AbstractBenchmarkForGivenPath( - private val path: String, - private val ignoreTestData: Boolean = true -) : AbstractBenchmark() { - @Setup - fun setUp() { - generator.setUp() - readFiles(ignoreTestData, path) - println("FILES COUNT: ${getFilesCount()}") - } - - @TearDown - fun tearDown() { - generator.tearDown() - } - - @Benchmark - fun testBuildOnlyBaseTreeForGivenPath() { - forEachFile { text, file -> generator.generateBaseTree(text, file) } - } - - @Benchmark - fun testBuildFirForGivenPath() { - forEachFile { text, file -> generator.generateFir(text, file) } - } -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/AbstractKotlinBenchmark.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/AbstractKotlinBenchmark.kt deleted file mode 100644 index cee569bc80d..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/AbstractKotlinBenchmark.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.createdFiles - -import org.jetbrains.kotlin.fir.lightTree.benchmark.* -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.LightTree2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.Psi2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.TreeGenerator -import org.openjdk.jmh.annotations.* -import java.io.File -import java.util.concurrent.TimeUnit - -abstract class AbstractKotlinBenchmark : AbstractBenchmark() { - @Param( - /* CLASSES */ - "1Class", "10Classes", "100Classes", "1000Classes", "10_000Classes", "100_000Classes", - "1Cin1C", "10Cin1C", "100Cin1C", "1000Cin1C", "10_000Cin1C", "100_000Cin1C", - "1Cin10C", "10Cin10C", "100Cin10C", "1000Cin10C", "10_000Cin10C", - "1Cin100C", "10Cin100C", "100Cin100C", "1000Cin100C", - "1Cin1000C", "10Cin1000C", "100Cin1000C", - "1Cin10_000C", "10Cin10_000C", "1Cin100_000C", - /* FUNCTIONS */ - "1Fun", "10Fun", "100Fun", "1000Fun", "10_000Fun", "100_000Fun", - "1Fin1C", "1Fin10C", "1Fin100C", "1Fin1000C", "1Fin10_000C", "1Fin100_000C", - "10Fin1C", "10Fin10C", "10Fin100C", "10Fin1000C", "10Fin10_000C", - "100Fin1C", "100Fin10C", "100Fin100C", "100Fin1000C", - /* PROPERTIES */ - "1Var", "10Var", "100Var", "1000Var", "10_000Var", "100_000Var", - "1Vin1C", "1Vin10C", "1Vin100C", "1Vin1000C", "1Vin10_000C", "1Vin100_000C", - "10Vin1C", "10Vin10C", "10Vin100C", "10Vin1000C", "10Vin10_000C", - "100Vin1C", "100Vin10C", "100Vin100C", "100Vin1000C" - ) - var methodName: String = "" - - private var text: String = "" - private var file: File = File("$methodName.kt") - - @Setup - fun setUp() { - generator.setUp() - - val testMethod = TestCases::class.java.getMethod(methodName) - text = testMethod.invoke(TestCases()) as String - } - - @TearDown - fun tearDown() { - generator.tearDown() - } - - @Benchmark - fun testCreatedFiles() { - generator.generateFir(text, file) - } -} - -open class LightTree2FirKotlinBenchmark(override val generator: TreeGenerator = LightTree2FirGenerator()) : - AbstractKotlinBenchmark() - -open class Psi2FirKotlinBenchmark(override val generator: TreeGenerator = Psi2FirGenerator()) : - AbstractKotlinBenchmark() diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCases.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCases.kt deleted file mode 100644 index bf33eb8b27e..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCases.kt +++ /dev/null @@ -1,542 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.createdFiles - -class TestCases { - /* CLASSES */ - fun `1Class`(): String { - return TestCasesGenerator().generateData({ createClass(1) }).getText() - } - - fun `10Classes`(): String { - return TestCasesGenerator().generateData({ createClass(10) }).getText() - } - - fun `100Classes`(): String { - return TestCasesGenerator().generateData({ createClass(100) }).getText() - } - - fun `1000Classes`(): String { - return TestCasesGenerator().generateData({ createClass(1000) }).getText() - } - - fun `10_000Classes`(): String { - return TestCasesGenerator().generateData({ createClass(10000) }).getText() - } - - fun `100_000Classes`(): String { - return TestCasesGenerator().generateData({ createClass(100000) }).getText() - } - - fun `1Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(1) - }) - }).getText() - } - - fun `10Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(10) - }) - }).getText() - } - - fun `100Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(100) - }) - }).getText() - } - - fun `1000Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(1000) - }) - }).getText() - } - - fun `10_000Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(10_000) - }) - }).getText() - } - - fun `100_000Cin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createClass(100_000) - }) - }).getText() - } - - fun `1Cin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createClass(1) - }) - }).getText() - } - - fun `10Cin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createClass(10) - }) - }).getText() - } - - fun `100Cin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createClass(100) - }) - }).getText() - } - - fun `1000Cin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createClass(1000) - }) - }).getText() - } - - fun `10_000Cin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createClass(10_000) - }) - }).getText() - } - - fun `1Cin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createClass(1) - }) - }).getText() - } - - fun `10Cin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createClass(10) - }) - }).getText() - } - - fun `100Cin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createClass(100) - }) - }).getText() - } - - fun `1000Cin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createClass(1000) - }) - }).getText() - } - - fun `1Cin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createClass(1) - }) - }).getText() - } - - fun `10Cin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createClass(10) - }) - }).getText() - } - - fun `100Cin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createClass(100) - }) - }).getText() - } - - fun `1Cin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createClass(1) - }) - }).getText() - } - - fun `10Cin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createClass(10) - }) - }).getText() - } - - fun `1Cin100_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100_000, { - createClass(1) - }) - }).getText() - } - - /* FUNCTIONS */ - fun `1Fun`(): String { - return TestCasesGenerator().generateData({ createFun(1) }).getText() - } - - fun `10Fun`(): String { - return TestCasesGenerator().generateData({ createFun(10) }).getText() - } - - fun `100Fun`(): String { - return TestCasesGenerator().generateData({ createFun(100) }).getText() - } - - fun `1000Fun`(): String { - return TestCasesGenerator().generateData({ createFun(1000) }).getText() - } - - fun `10_000Fun`(): String { - return TestCasesGenerator().generateData({ createFun(10000) }).getText() - } - - fun `100_000Fun`(): String { - return TestCasesGenerator().generateData({ createFun(100000) }).getText() - } - - fun `1Fin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createFun(1) - }) - }).getText() - } - - fun `1Fin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createFun(1) - }) - }).getText() - } - - fun `1Fin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createFun(1) - }) - }).getText() - } - - fun `1Fin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createFun(1) - }) - }).getText() - } - - fun `1Fin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createFun(1) - }) - }).getText() - } - - fun `1Fin100_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100_000, { - createFun(1) - }) - }).getText() - } - - fun `10Fin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createFun(10) - }) - }).getText() - } - - fun `10Fin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createFun(10) - }) - }).getText() - } - - fun `10Fin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createFun(10) - }) - }).getText() - } - - fun `10Fin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createFun(10) - }) - }).getText() - } - - fun `10Fin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createFun(10) - }) - }).getText() - } - - fun `100Fin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createFun(100) - }) - }).getText() - } - - fun `100Fin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createFun(100) - }) - }).getText() - } - - fun `100Fin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createFun(100) - }) - }).getText() - } - - fun `100Fin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createFun(100) - }) - }).getText() - } - - /* PROPERTIES */ - fun `1Var`(): String { - return TestCasesGenerator().generateData({ createProperty(1) }).getText() - } - - fun `10Var`(): String { - return TestCasesGenerator().generateData({ createProperty(10) }).getText() - } - - fun `100Var`(): String { - return TestCasesGenerator().generateData({ createProperty(100) }).getText() - } - - fun `1000Var`(): String { - return TestCasesGenerator().generateData({ createProperty(1000) }).getText() - } - - fun `10_000Var`(): String { - return TestCasesGenerator().generateData({ createProperty(10000) }).getText() - } - - fun `100_000Var`(): String { - return TestCasesGenerator().generateData({ createProperty(100000) }).getText() - } - - fun `1Vin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createProperty(1) - }) - }).getText() - } - - fun `1Vin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createProperty(1) - }) - }).getText() - } - - fun `1Vin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createProperty(1) - }) - }).getText() - } - - fun `1Vin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createProperty(1) - }) - }).getText() - } - - fun `1Vin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createProperty(1) - }) - }).getText() - } - - fun `1Vin100_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100_000, { - createProperty(1) - }) - }).getText() - } - - fun `10Vin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createProperty(10) - }) - }).getText() - } - - fun `10Vin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createProperty(10) - }) - }).getText() - } - - fun `10Vin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createProperty(10) - }) - }).getText() - } - - fun `10Vin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createProperty(10) - }) - }).getText() - } - - fun `10Vin10_000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10_000, { - createProperty(10) - }) - }).getText() - } - - fun `100Vin1C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1, { - createProperty(100) - }) - }).getText() - } - - fun `100Vin10C`(): String { - return TestCasesGenerator().generateData( - { - createClass(10, { - createProperty(100) - }) - }).getText() - } - - fun `100Vin100C`(): String { - return TestCasesGenerator().generateData( - { - createClass(100, { - createProperty(100) - }) - }).getText() - } - - fun `100Vin1000C`(): String { - return TestCasesGenerator().generateData( - { - createClass(1000, { - createProperty(100) - }) - }).getText() - } -} \ No newline at end of file diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCasesGenerator.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCasesGenerator.kt deleted file mode 100644 index 56b99c21966..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/createdFiles/TestCasesGenerator.kt +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.createdFiles - -import org.jetbrains.kotlin.utils.Printer -import kotlin.random.Random - -class TestCasesGenerator { - private val charPool: List = ('a'..'z') + ('A'..'Z') - private val types = listOf("Int", "Double", "Boolean", "String") - - private val builder = StringBuilder() - private val printer: Printer - - init { - printer = Printer(builder, " ") - } - - fun generateData(vararg pipeline: TestCasesGenerator.() -> Unit): TestCasesGenerator { - printer.apply { - pipeline.forEach { it() } - } - return this - } - - fun createClass(count: Int, vararg pipeline: TestCasesGenerator.() -> Unit) { - for (i in 1..count) { - printer.println("class ${randomString(Random.nextLong(5, 15))} {") - printer.pushIndent() - printer.apply { - pipeline.forEach { it() } - } - printer.popIndent() - printer.println("}") - } - } - - fun createFun(count: Int, vararg pipeline: TestCasesGenerator.() -> Unit) { - for (i in 1..count) { - printer.println("fun ${randomString(Random.nextLong(5, 15))}() {") - printer.pushIndent() - printer.apply { - pipeline.forEach { it() } - } - printer.popIndent() - printer.println("}") - } - } - - fun createProperty(count: Int) { - for (i in 1..count) { - val typeAndValue = getRandomTypeAndValue() - printer.println( - "val ${randomString(Random.nextLong(5, 15))}: " + - "${typeAndValue.first} = ${typeAndValue.second} \n" - ) - } - } - - private fun randomString(length: Long): String { - return (1..length) - .map { Random.nextInt(0, charPool.size) } - .map(charPool::get) - .joinToString("") - } - - private fun getRandomTypeAndValue(): Pair { - val type = types[Random.nextInt(0, types.size)] - return when (type) { - "Int" -> Pair(type, Random.nextInt().toString()) - "Double" -> Pair(type, Random.nextDouble().toString()) - "Boolean" -> Pair(type, Random.nextBoolean().toString()) - "String" -> Pair(type, randomString(Random.nextLong(5, 15))) - else -> throw UnsupportedOperationException("Unsupported type") - } - } - - fun getText(): String { - return builder.toString() - } -} - -fun main() { - TestCasesGenerator().generateData( - { - createClass(10, - { - createClass(100, - { - createClass(100) - }) - }) - } - ) -} - diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/firModule/AbstractFirModuleBenchmark.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/firModule/AbstractFirModuleBenchmark.kt deleted file mode 100644 index 6b4bd343f63..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/firModule/AbstractFirModuleBenchmark.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.firModule - -import org.jetbrains.kotlin.fir.lightTree.benchmark.* -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.LightTree2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.Psi2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.TreeGenerator - -abstract class AbstractFirModuleBenchmark : - AbstractBenchmarkForGivenPath( - System.getProperty("user.dir") + "/compiler/fir", - true - ) - -open class LightTree2FirBenchmarkFirModule(override val generator: TreeGenerator = LightTree2FirGenerator()) : - AbstractFirModuleBenchmark() - -open class Psi2FirBenchmarkFirModule(override val generator: TreeGenerator = Psi2FirGenerator()) : - AbstractFirModuleBenchmark() diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/LightTree2FirGenerator.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/LightTree2FirGenerator.kt deleted file mode 100644 index 7f91fddfdb3..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/LightTree2FirGenerator.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.generators - -import com.intellij.psi.impl.DebugUtil -import org.jetbrains.kotlin.fir.FirRenderer -import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase -import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider -import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir -import org.jetbrains.kotlin.fir.session.FirSessionFactory -import org.openjdk.jmh.annotations.Scope -import org.openjdk.jmh.annotations.State -import java.io.File - -@State(Scope.Benchmark) -open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() { - override fun generateBaseTree(text: String, file: File) { - val lightTreeConverter = LightTree2Fir( - session = FirSessionFactory.createEmptySession(), - scopeProvider = StubFirScopeProvider - ) - val lightTree = lightTreeConverter.buildLightTree(text) - DebugUtil.lightTreeToString(lightTree, false) - } - - override fun generateFir(text: String, file: File) { - val lightTreeConverter = LightTree2Fir( - session = FirSessionFactory.createEmptySession(), - scopeProvider = StubFirScopeProvider - ) - val firFile = lightTreeConverter.buildFirFile(text, file.name, file.path) - StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString() - } - - override fun setUp() { - super.setUp() - } - - override fun tearDown() { - super.tearDown() - } -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/Psi2FirGenerator.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/Psi2FirGenerator.kt deleted file mode 100644 index 7a21781e51b..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/Psi2FirGenerator.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.generators - -import com.intellij.openapi.util.io.FileUtil -import com.intellij.psi.impl.DebugUtil -import com.intellij.util.PathUtil -import org.jetbrains.kotlin.fir.FirRenderer -import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase -import org.jetbrains.kotlin.psi.KtFile -import org.openjdk.jmh.annotations.Scope -import org.openjdk.jmh.annotations.State -import java.io.File - -@State(Scope.Benchmark) -open class Psi2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() { - override fun generateBaseTree(text: String, file: File) { - val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile - DebugUtil.psiTreeToString(ktFile, false) - } - - override fun generateFir(text: String, file: File) { - val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile - val firFile = ktFile.toFirFile() - StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString() - } - - override fun setUp() { - super.setUp() - } - - override fun tearDown() { - super.tearDown() - } -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/TreeGenerator.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/TreeGenerator.kt deleted file mode 100644 index 18af5e229aa..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/generators/TreeGenerator.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.generators - -import java.io.File - -interface TreeGenerator { - fun generateBaseTree(text: String, file: File) - fun generateFir(text: String, file: File) - fun setUp() - fun tearDown() -} diff --git a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/totalKotlin/AbstractTotalKotlinBenchmark.kt b/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/totalKotlin/AbstractTotalKotlinBenchmark.kt deleted file mode 100644 index f04e52f33f9..00000000000 --- a/compiler/fir/raw-fir/light-tree2fir/tests/org/jetbrains/kotlin/fir/lightTree/benchmark/totalKotlin/AbstractTotalKotlinBenchmark.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.lightTree.benchmark.totalKotlin - -import org.jetbrains.kotlin.fir.lightTree.benchmark.* -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.LightTree2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.Psi2FirGenerator -import org.jetbrains.kotlin.fir.lightTree.benchmark.generators.TreeGenerator -import org.openjdk.jmh.annotations.* - -abstract class AbstractTotalKotlinBenchmark : - AbstractBenchmarkForGivenPath(System.getProperty("user.dir")) - -open class LightTree2FirTotalKotlinBenchmark(override val generator: TreeGenerator = LightTree2FirGenerator()) : - AbstractTotalKotlinBenchmark() - -open class Psi2FirTotalKotlinBenchmark(override val generator: TreeGenerator = Psi2FirGenerator()) : - AbstractTotalKotlinBenchmark() \ No newline at end of file