FIR: add incremental compilation tests

This commit is contained in:
Ilya Chernikov
2020-11-30 10:32:29 +01:00
parent 6cc39788fd
commit 7d29ae7cce
5 changed files with 2659 additions and 1 deletions
@@ -23,7 +23,8 @@ data class BuildLogFinder(
private val isGradleEnabled: Boolean = false,
private val isJsEnabled: Boolean = false,
private val isScopeExpansionEnabled: Boolean = false,
private val isKlibEnabled: Boolean = false
private val isKlibEnabled: Boolean = false,
private val isFirEnabled: Boolean = false
) {
companion object {
private const val JS_LOG = "js-build.log"
@@ -48,6 +49,7 @@ data class BuildLogFinder(
isGradleEnabled && GRADLE_LOG in files -> GRADLE_LOG
isJsEnabled && JS_JPS_LOG in files -> JS_JPS_LOG
isDataContainerBuildLogEnabled && DATA_CONTAINER_LOG in files -> DATA_CONTAINER_LOG
isFirEnabled && FIR_LOG in files -> FIR_LOG
SIMPLE_LOG in files -> SIMPLE_LOG
else -> null
}
@@ -350,6 +350,9 @@ object KotlinToJVMBytecodeCompiler {
)
performanceManager?.notifyAnalysisFinished()
// TODO: maybe we should not do it in presence of errors, but tests at the moment expect lookups to be reported
session.firLookupTracker?.flushLookups()
if (syntaxErrors || firDiagnostics.any { it.severity == Severity.ERROR }) {
return false
}
@@ -0,0 +1,32 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.incremental.testingUtils.BuildLogFinder
import java.io.File
abstract class AbstractIncrementalFirJvmCompilerRunnerTest : AbstractIncrementalJvmCompilerRunnerTest() {
override fun createCompilerArguments(destinationDir: File, testDir: File): K2JVMCompilerArguments =
super.createCompilerArguments(destinationDir, testDir).apply {
useFir = true
useIR = true
}
override val buildLogFinder: BuildLogFinder
get() = BuildLogFinder(isGradleEnabled = true, isFirEnabled = true) // TODO: investigate cases that need isGradleEnabled - the combination looks fragile
}
@@ -1593,6 +1593,7 @@ fun main(args: Array<String>) {
}
testClass<AbstractIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
testClass<AbstractIncrementalJvmOldBackendCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM))
testClass<AbstractIncrementalFirJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
testClass<AbstractIncrementalJsCompilerRunnerTest> {
model("incremental/pureKotlin", extension = null, recursive = false)