J2K JvmResolveUtil & GenerationUtils: convert & prettify

This commit is contained in:
Alexander Udalov
2016-09-29 19:08:38 +03:00
parent 12205016bc
commit 54dfe760c0
2 changed files with 77 additions and 111 deletions
@@ -14,59 +14,42 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.codegen;
package org.jetbrains.kotlin.codegen
import kotlin.collections.CollectionsKt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.cli.common.output.outputUtils.OutputUtilsKt;
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.descriptors.PackagePartProvider;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.cli.common.output.outputUtils.writeAllTo
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.descriptors.PackagePartProvider
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
import java.io.File;
import java.util.Collections;
import java.util.List;
object GenerationUtils {
@JvmStatic
fun compileFileTo(ktFile: KtFile, environment: KotlinCoreEnvironment, output: File): ClassFileFactory =
compileFile(ktFile, environment).apply {
writeAllTo(output)
}
public class GenerationUtils {
private GenerationUtils() {
}
@JvmStatic
fun compileFile(ktFile: KtFile, environment: KotlinCoreEnvironment): ClassFileFactory =
compileFiles(listOf(ktFile), environment).factory
@NotNull
public static ClassFileFactory compileFileTo(@NotNull KtFile ktFile, @NotNull KotlinCoreEnvironment environment, @NotNull File output) {
ClassFileFactory factory = compileFile(ktFile, environment);
OutputUtilsKt.writeAllTo(factory, output);
return factory;
}
@JvmStatic
fun compileFiles(files: List<KtFile>, environment: KotlinCoreEnvironment?): GenerationState {
val packagePartProvider = if (environment == null) PackagePartProvider.Empty else JvmPackagePartProvider(environment)
val configuration = environment?.configuration ?: KotlinTestUtils.newConfiguration()
@NotNull
public static ClassFileFactory compileFile(@NotNull KtFile ktFile, @NotNull KotlinCoreEnvironment environment) {
return compileFiles(Collections.singletonList(ktFile), environment).getFactory();
}
val analysisResult = JvmResolveUtil.analyzeAndCheckForErrors(files.first().project, files, configuration, packagePartProvider)
analysisResult.throwIfError()
@NotNull
public static GenerationState compileFiles(@NotNull List<KtFile> files, @Nullable KotlinCoreEnvironment environment) {
PackagePartProvider packagePartProvider =
environment == null ? PackagePartProvider.Empty.INSTANCE : new JvmPackagePartProvider(environment);
CompilerConfiguration configuration =
environment == null ? KotlinTestUtils.newConfiguration() : environment.getConfiguration();
AnalysisResult analysisResult =
JvmResolveUtil.analyzeAndCheckForErrors(CollectionsKt.first(files).getProject(), files, configuration, packagePartProvider);
analysisResult.throwIfError();
GenerationState state = new GenerationState(
CollectionsKt.first(files).getProject(), ClassBuilderFactories.TEST,
analysisResult.getModuleDescriptor(), analysisResult.getBindingContext(),
val state = GenerationState(
files.first().project, ClassBuilderFactories.TEST, analysisResult.moduleDescriptor, analysisResult.bindingContext,
files, configuration
);
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION);
return state;
)
KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION)
return state
}
}
@@ -14,81 +14,64 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.resolve.lazy;
package org.jetbrains.kotlin.resolve.lazy
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.descriptors.PackagePartProvider;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.AnalyzingUtils;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.descriptors.PackagePartProvider
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.AnalyzingUtils
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
import java.util.Collection;
import java.util.Collections;
object JvmResolveUtil {
@JvmStatic
fun analyzeAndCheckForErrors(file: KtFile, environment: KotlinCoreEnvironment): AnalysisResult =
analyzeAndCheckForErrors(setOf(file), environment)
public class JvmResolveUtil {
@NotNull
public static AnalysisResult analyzeAndCheckForErrors(@NotNull KtFile file, @NotNull KotlinCoreEnvironment environment) {
return analyzeAndCheckForErrors(Collections.singleton(file), environment);
}
@JvmStatic
fun analyzeAndCheckForErrors(files: Collection<KtFile>, environment: KotlinCoreEnvironment): AnalysisResult =
analyzeAndCheckForErrors(environment.project, files, environment.configuration, JvmPackagePartProvider(environment))
@NotNull
public static AnalysisResult analyzeAndCheckForErrors(
@NotNull Collection<KtFile> files,
@NotNull KotlinCoreEnvironment environment
) {
return analyzeAndCheckForErrors(
environment.getProject(), files, environment.getConfiguration(), new JvmPackagePartProvider(environment)
);
}
@NotNull
public static AnalysisResult analyzeAndCheckForErrors(
@NotNull Project project,
@NotNull Collection<KtFile> files,
@NotNull CompilerConfiguration configuration,
@NotNull PackagePartProvider packagePartProvider
) {
for (KtFile file : files) {
AnalyzingUtils.checkForSyntacticErrors(file);
@JvmStatic
fun analyzeAndCheckForErrors(
project: Project,
files: Collection<KtFile>,
configuration: CompilerConfiguration,
packagePartProvider: PackagePartProvider
): AnalysisResult {
for (file in files) {
AnalyzingUtils.checkForSyntacticErrors(file)
}
AnalysisResult analysisResult = analyze(project, files, configuration, packagePartProvider);
AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext());
return analysisResult;
return analyze(project, files, configuration, packagePartProvider).apply {
AnalyzingUtils.throwExceptionOnErrors(bindingContext)
}
}
@NotNull
public static AnalysisResult analyze(@NotNull KotlinCoreEnvironment environment) {
return analyze(Collections.<KtFile>emptySet(), environment);
}
@JvmStatic
fun analyze(environment: KotlinCoreEnvironment): AnalysisResult =
analyze(emptySet(), environment)
@NotNull
public static AnalysisResult analyze(@NotNull KtFile file, @NotNull KotlinCoreEnvironment environment) {
return analyze(Collections.singleton(file), environment);
}
@JvmStatic
fun analyze(file: KtFile, environment: KotlinCoreEnvironment): AnalysisResult =
analyze(setOf(file), environment)
@NotNull
public static AnalysisResult analyze(@NotNull Collection<KtFile> files, @NotNull KotlinCoreEnvironment environment) {
return analyze(environment.getProject(), files, environment.getConfiguration(), new JvmPackagePartProvider(environment));
}
@JvmStatic
fun analyze(files: Collection<KtFile>, environment: KotlinCoreEnvironment): AnalysisResult =
analyze(environment.project, files, environment.configuration, JvmPackagePartProvider(environment))
@NotNull
private static AnalysisResult analyze(
@NotNull Project project,
@NotNull Collection<KtFile> files,
@NotNull CompilerConfiguration configuration,
@NotNull PackagePartProvider packagePartProvider
) {
private fun analyze(
project: Project,
files: Collection<KtFile>,
configuration: CompilerConfiguration,
packagePartProvider: PackagePartProvider
): AnalysisResult {
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
project, files, new CliLightClassGenerationSupport.CliBindingTrace(), configuration, packagePartProvider
);
project, files, CliLightClassGenerationSupport.CliBindingTrace(), configuration, packagePartProvider
)
}
}