diff --git a/experiments/student-backend/src/org/kotlinnative/translator/TranslationState.kt b/experiments/student-backend/src/org/kotlinnative/translator/TranslationState.kt index 005d1ca3ffb..f9e0178e9cb 100644 --- a/experiments/student-backend/src/org/kotlinnative/translator/TranslationState.kt +++ b/experiments/student-backend/src/org/kotlinnative/translator/TranslationState.kt @@ -1,31 +1,10 @@ package org.kotlinnative.translator -import com.intellij.openapi.Disposable -import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys -import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation -import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity -import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport -import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles -import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.cli.jvm.config.getModuleName -import org.jetbrains.kotlin.cli.jvm.config.jvmClasspathRoots -import org.jetbrains.kotlin.config.CommonConfigurationKeys -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.JVMConfigurationKeys -import org.jetbrains.kotlin.config.addKotlinSourceRoots -import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM -import org.jetbrains.kotlin.utils.PathUtil import org.kotlinnative.translator.codegens.ClassCodegen import org.kotlinnative.translator.codegens.FunctionCodegen import org.kotlinnative.translator.codegens.ObjectCodegen import org.kotlinnative.translator.codegens.PropertyCodegen -import org.kotlinnative.translator.exceptions.TranslationException import org.kotlinnative.translator.llvm.LLVMBuilder import org.kotlinnative.translator.llvm.LLVMVariable import java.util.* @@ -34,9 +13,9 @@ import java.util.* class TranslationState private constructor ( - val environment: KotlinCoreEnvironment, val bindingContext: BindingContext, - val mainFunction: String, arm: Boolean + val mainFunction: String, + arm: Boolean ) { var externalFunctions = HashMap() var functions = HashMap() @@ -56,62 +35,9 @@ private constructor var POINTER_ALIGN = 4 var POINTER_SIZE = 4 - fun createTranslationState(sources1: List, disposer: Disposable, mainFunction: String, arm: Boolean = false): TranslationState { - - val configuration = CompilerConfiguration() - val messageCollector = object : MessageCollector { - private var hasError = false - - override fun hasErrors(): Boolean = hasError - - override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) { - if (severity.isError) { - System.err.println("[${severity.toString()}]${location.path} ${location.line}:${location.column} $message") - hasError = true - } - } - } - - configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) - configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME) - - configuration.addKotlinSourceRoots(sources) - - val environment = KotlinCoreEnvironment.createForProduction(disposer, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) - val bindingContext = analyze(environment)?.bindingContext ?: throw TranslationException("Can't initialize binding context for project") - - return TranslationState(environment, bindingContext, mainFunction, arm) + fun createTranslationState(bindingContext:BindingContext, mainFunction: String, arm: Boolean = false): TranslationState { + return TranslationState(bindingContext, mainFunction, arm) } - - private fun analyze(environment: KotlinCoreEnvironment): AnalysisResult? { - val collector = environment.configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) - - val analyzer = AnalyzerWithCompilerReport(collector) - analyzer.analyzeAndReport(environment.getSourceFiles(), object : AnalyzerWithCompilerReport.Analyzer { - override fun analyze(): AnalysisResult { - val sharedTrace = CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace() - val moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.project, environment.getModuleName()) - - return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext( - moduleContext, - environment.getSourceFiles(), - sharedTrace, - environment.configuration.get(JVMConfigurationKeys.MODULES), - environment.configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS), - JvmPackagePartProvider(environment)) - } - - override fun reportEnvironmentErrors() { - val files = environment.configuration.jvmClasspathRoots - val runtimes = files.map { it.canonicalFile }.filter { it.name == PathUtil.KOTLIN_JAVA_RUNTIME_JAR && it.exists() } - collector.report(CompilerMessageSeverity.ERROR, runtimes.joinToString { it.path }, CompilerMessageLocation.NO_LOCATION) - System.err.println(runtimes.joinToString { it.toString() }) - } - }) - - return if (analyzer.hasErrors()) null else analyzer.analysisResult - } - } } \ No newline at end of file diff --git a/experiments/student-backend/src/org/kotlinnative/translator/codegens/PropertyCodegen.kt b/experiments/student-backend/src/org/kotlinnative/translator/codegens/PropertyCodegen.kt index ca21816d604..9f75145baa2 100644 --- a/experiments/student-backend/src/org/kotlinnative/translator/codegens/PropertyCodegen.kt +++ b/experiments/student-backend/src/org/kotlinnative/translator/codegens/PropertyCodegen.kt @@ -1,8 +1,8 @@ package org.kotlinnative.translator.codegens -import org.jetbrains.kotlin.js.descriptorUtils.nameIfStandardType import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.student.descriptorUtils.nameIfStandardType import org.kotlinnative.translator.TranslationState import org.kotlinnative.translator.VariableManager import org.kotlinnative.translator.llvm.LLVMBuilder diff --git a/experiments/student-backend/src/org/kotlinnative/translator/llvm/generators.kt b/experiments/student-backend/src/org/kotlinnative/translator/llvm/generators.kt index ea1b234f28a..9fb9f398a39 100644 --- a/experiments/student-backend/src/org/kotlinnative/translator/llvm/generators.kt +++ b/experiments/student-backend/src/org/kotlinnative/translator/llvm/generators.kt @@ -1,9 +1,9 @@ package org.kotlinnative.translator.llvm import org.jetbrains.kotlin.builtins.isFunctionTypeOrSubtype -import org.jetbrains.kotlin.js.descriptorUtils.nameIfStandardType import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe +import org.jetbrains.kotlin.student.descriptorUtils.nameIfStandardType import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.isUnit import org.kotlinnative.translator.TranslationState