Fix "/ by zero" in FirResolveBench & switch progress OFF in smoke tests
This commit is contained in:
@@ -77,6 +77,6 @@ class FirResolveTestTotalKotlin : AbstractFirResolveWithSessionTestCase() {
|
|||||||
|
|
||||||
println("Raw FIR up, files: ${firFiles.size}")
|
println("Raw FIR up, files: ${firFiles.size}")
|
||||||
|
|
||||||
doFirResolveTestBench(firFiles, totalTransformer.transformers)
|
doFirResolveTestBench(firFiles, totalTransformer.transformers, withProgress = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,10 +14,16 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
|||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
|
import kotlin.math.max
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.system.measureNanoTime
|
import kotlin.system.measureNanoTime
|
||||||
|
|
||||||
fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransformer<Nothing?>>, gc: Boolean = true) {
|
fun doFirResolveTestBench(
|
||||||
|
firFiles: List<FirFile>,
|
||||||
|
transformers: List<FirTransformer<Nothing?>>,
|
||||||
|
gc: Boolean = true,
|
||||||
|
withProgress: Boolean = false
|
||||||
|
) {
|
||||||
|
|
||||||
if (gc) {
|
if (gc) {
|
||||||
System.gc()
|
System.gc()
|
||||||
@@ -34,7 +40,8 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
|
|||||||
try {
|
try {
|
||||||
for ((stage, transformer) in transformers.withIndex()) {
|
for ((stage, transformer) in transformers.withIndex()) {
|
||||||
println("Starting stage #$stage. $transformer")
|
println("Starting stage #$stage. $transformer")
|
||||||
for (firFile in firFiles.progress(" ~ ")) {
|
val firFileSequence = if (withProgress) firFiles.progress(" ~ ") else firFiles.asSequence()
|
||||||
|
for (firFile in firFileSequence) {
|
||||||
val time = measureNanoTime {
|
val time = measureNanoTime {
|
||||||
try {
|
try {
|
||||||
transformer.transformFile(firFile, null)
|
transformer.transformFile(firFile, null)
|
||||||
@@ -120,7 +127,7 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
|
fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
|
||||||
val intStep = (this.size * step).toInt()
|
val intStep = max(1, (this.size * step).toInt())
|
||||||
var progress = 0
|
var progress = 0
|
||||||
return asSequence().onEach {
|
return asSequence().onEach {
|
||||||
if (progress % intStep == 0) {
|
if (progress % intStep == 0) {
|
||||||
|
|||||||
+1
-1
@@ -101,6 +101,6 @@ class FirTotalKotlinResolveInIdeTest : ModuleTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
println("Raw fir up, files: ${firFiles.size}")
|
println("Raw fir up, files: ${firFiles.size}")
|
||||||
doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers)
|
doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers, withProgress = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user