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