Add AnalysisHandlerExtension extension point for K2MetadataCompiler

AnalysisHandlerExtension allows compiler plugins to:
1. Intercept and override the default analysis.
2. Utilize the compiler infrastructure to do custom analysis.

A well know plugin on the JVM platform is KAPT.
This commit is contained in:
Ting-Yuan Huang
2021-03-15 20:58:23 -07:00
committed by TeamCityServer
parent e0c28e27d2
commit 4db79285c1
2 changed files with 32 additions and 4 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.cli.metadata
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.analyzer.common.CommonDependenciesContainer
import org.jetbrains.kotlin.analyzer.common.CommonResolverForModuleFactory
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -33,7 +34,16 @@ internal fun runCommonAnalysisForSerialization(
return null
}
return runCommonAnalysis(environment, dependOnBuiltins, dependencyContainer)
var analyzer: AnalyzerWithCompilerReport
do {
analyzer = runCommonAnalysis(environment, dependOnBuiltins, dependencyContainer)
val result = analyzer.analysisResult
if (result is AnalysisResult.RetryWithAdditionalRoots) {
environment.addKotlinSourceRoots(result.additionalKotlinRoots)
}
} while (result is AnalysisResult.RetryWithAdditionalRoots)
return if (analyzer.analysisResult.shouldGenerateCode) analyzer else null
}
private fun runCommonAnalysis(