[FIR] Remove BodyBuildingMode.STUBS from RawFirBuilder

This commit is contained in:
Dmitriy Novozhilov
2021-09-03 17:49:21 +03:00
committed by teamcityserver
parent 116a1c1e46
commit 8904d6fde9
10 changed files with 17 additions and 41 deletions
@@ -29,7 +29,7 @@ class TotalKotlinTest : AbstractRawFirBuilderTestCase() {
if (onlyPsi) {
DebugUtil.psiTreeToString(ktFile, false)
} else {
val firFile = ktFile.toFirFile(BodyBuildingMode.STUBS)
val firFile = ktFile.toFirFile()
StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString()
}
}
@@ -31,9 +31,6 @@ abstract class AbstractBenchmark {
private val files = mutableMapOf<File, String>()
abstract val generator: TreeGenerator
@Param("true", "false")
var stubMode: Boolean = false
protected fun readFiles(ignoreTestData: Boolean, path: String) {
println("BASE PATH: $path")
val saveText: (File) -> Unit = { file ->
@@ -56,4 +53,4 @@ abstract class AbstractBenchmark {
protected fun getFilesCount(): Int {
return files.size
}
}
}
@@ -30,6 +30,6 @@ abstract class AbstractBenchmarkForGivenPath(
@Benchmark
fun testBuildFirForGivenPath() {
forEachFile { text, file -> generator.generateFir(text, file, stubMode) }
forEachFile { text, file -> generator.generateFir(text, file) }
}
}
}
@@ -53,7 +53,7 @@ abstract class AbstractKotlinBenchmark : AbstractBenchmark() {
@Benchmark
fun testCreatedFiles() {
generator.generateFir(text, file, stubMode)
generator.generateFir(text, file)
}
}
@@ -61,4 +61,4 @@ open class LightTree2FirKotlinBenchmark(override val generator: TreeGenerator =
AbstractKotlinBenchmark()
open class Psi2FirKotlinBenchmark(override val generator: TreeGenerator = Psi2FirGenerator()) :
AbstractKotlinBenchmark()
AbstractKotlinBenchmark()
@@ -26,7 +26,7 @@ open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase
DebugUtil.lightTreeToString(lightTree, false)
}
override fun generateFir(text: String, file: File, stubMode: Boolean) {
override fun generateFir(text: String, file: File) {
val lightTreeConverter = LightTree2Fir(
session = FirSessionFactory.createEmptySession(),
scopeProvider = StubFirScopeProvider
@@ -10,7 +10,6 @@ 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.fir.builder.BodyBuildingMode
import org.jetbrains.kotlin.psi.KtFile
import org.openjdk.jmh.annotations.Scope
import org.openjdk.jmh.annotations.State
@@ -23,9 +22,9 @@ open class Psi2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() {
DebugUtil.psiTreeToString(ktFile, false)
}
override fun generateFir(text: String, file: File, stubMode: Boolean) {
override fun generateFir(text: String, file: File) {
val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile
val firFile = ktFile.toFirFile(BodyBuildingMode.stubs(stubMode))
val firFile = ktFile.toFirFile()
StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString()
}
@@ -36,4 +35,4 @@ open class Psi2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() {
override fun tearDown() {
super.tearDown()
}
}
}
@@ -9,7 +9,7 @@ import java.io.File
interface TreeGenerator {
fun generateBaseTree(text: String, file: File)
fun generateFir(text: String, file: File, stubMode: Boolean)
fun generateFir(text: String, file: File)
fun setUp()
fun tearDown()
}
}
@@ -474,7 +474,6 @@ open class RawFirBuilder(
mode == BodyBuildingMode.LAZY_BODIES -> buildLazyExpression {
source = this@toFirBackingField?.initializer?.toFirSourceElement()
}
mode == BodyBuildingMode.STUBS -> buildExpressionStub()
else -> this@toFirBackingField?.initializer.toFirExpression("Should have initializer")
}
val returnType = this?.returnTypeReference.toFirOrImplicitType()
@@ -1450,7 +1449,6 @@ open class RawFirBuilder(
mode == BodyBuildingMode.LAZY_BODIES -> buildLazyExpression {
source = initializer?.toFirSourceElement()
}
mode == BodyBuildingMode.STUBS -> buildExpressionStub()
else -> initializer.toFirExpression("Should have initializer")
}
@@ -1538,7 +1536,6 @@ open class RawFirBuilder(
if (hasDelegate()) {
fun extractDelegateExpression() = when (mode) {
BodyBuildingMode.NORMAL -> this@toFirProperty.delegate?.expression.toFirExpression("Should have delegate")
BodyBuildingMode.STUBS -> buildExpressionStub()
BodyBuildingMode.LAZY_BODIES -> this@toFirProperty.delegate?.expression?.let {
buildLazyExpression { source = it.toFirSourceElement() }
} ?: buildErrorExpression {
@@ -2442,11 +2439,6 @@ enum class BodyBuildingMode {
*/
NORMAL,
/**
* Build [org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub] for expressions
*/
STUBS,
/**
* Build [org.jetbrains.kotlin.fir.expressions.impl.FirLazyBlock] for function bodies, constructors & getters/setters
* Build [org.jetbrains.kotlin.fir.expressions.impl.FirLazyExpression] for property initializers
@@ -32,7 +32,7 @@ import kotlin.system.measureNanoTime
@RunWith(JUnit3RunnerWithInners::class)
class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
private fun testTotalKotlinWithGivenMode(stubMode: Boolean) {
fun testTotalKotlinWithExpressionTrees() {
val root = File(testDataPath)
var counter = 0
var time = 0L
@@ -63,7 +63,7 @@ class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
val ktFile = createKtFile(file.toRelativeString(root))
val firFile: FirFile
time += measureNanoTime {
firFile = ktFile.toFirFile(BodyBuildingMode.stubs(stubMode))
firFile = ktFile.toFirFile()
}
totalLength += StringBuilder().also { FirRenderer(it).visitFile(firFile) }.length
counter++
@@ -93,9 +93,7 @@ class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
when (expression) {
is FirExpressionStub -> {
expressionStubs++
if (!stubMode) {
println(expression.psi?.text)
}
println(expression.psi?.text)
}
else -> normalExpressions++
}
@@ -160,22 +158,12 @@ class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
println("KT EXPRESSIONS: $ktExpressions")
println("KT DECLARATIONS: $ktDeclarations")
println("KT REFERENCES: $ktReferences")
if (!stubMode) {
assertEquals("# of expression stubs", 0, expressionStubs)
}
assertEquals("# of expression stubs", 0, expressionStubs)
assertEquals("# of error expressions", 0, errorExpressions)
assertEquals("# of error declarations", 0, errorDeclarations)
assertEquals("# of error references", 0, errorReferences)
}
fun testTotalKotlinWithExpressionTrees() {
testTotalKotlinWithGivenMode(stubMode = false)
}
fun testTotalKotlinWithDeclarationsOnly() {
testTotalKotlinWithGivenMode(stubMode = true)
}
private fun testConsistency(checkConsistency: FirFile.() -> Unit) {
val root = File(testDataPath)
for (file in root.walkTopDown()) {
@@ -137,7 +137,7 @@ object KtDeclarationAndFirDeclarationEqualityChecker {
createEmptySession(),
DummyScopeProvider,
psiMode = PsiHandlingMode.IDE,
bodyBuildingMode = BodyBuildingMode.STUBS
bodyBuildingMode = BodyBuildingMode.NORMAL
).buildTypeReference(this)
}