Fix "/ by zero" in FirResolveBench & switch progress OFF in smoke tests

This commit is contained in:
Mikhail Glukhikh
2019-03-18 17:12:02 +03:00
parent 741bdccca5
commit 16f9eecb29
3 changed files with 12 additions and 5 deletions
@@ -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) {
@@ -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)
} }
} }