Replaced passing compiler special mode to JetTypeMapper with special enum type. Enum type means if builtin types should be mapped to Java standard classes in generated bytecode.

This commit is contained in:
Evgeny Gerashchenko
2012-07-05 17:14:50 +04:00
parent 5becb4efb1
commit f7290d178b
15 changed files with 87 additions and 36 deletions
@@ -29,6 +29,7 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.cli.jvm.compiler.K2JVMCompileEnvironmentConfiguration;
import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
import org.jetbrains.jet.cli.jvm.repl.ReplFromTerminal;
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
import org.jetbrains.jet.codegen.CompilationException;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
@@ -72,9 +73,10 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
JetCoreEnvironment environment = JetCoreEnvironment.createCoreEnvironmentForJVM(rootDisposable, compilerConfiguration, mode);
boolean builtins = mode == CompilerSpecialMode.BUILTINS;
K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration(
environment, messageCollector, arguments.script, builtins
? BuiltinsScopeExtensionMode.ONLY_STANDARD_CLASSES
: BuiltinsScopeExtensionMode.ALL, builtins);
environment, messageCollector, arguments.script,
builtins ? BuiltinsScopeExtensionMode.ONLY_STANDARD_CLASSES : BuiltinsScopeExtensionMode.ALL,
builtins,
builtins ? BuiltinToJavaTypesMapping.DISABLED : BuiltinToJavaTypesMapping.ENABLED);
messageCollector.report(CompilerMessageSeverity.LOGGING, "Configuring the compilation environment",
CompilerMessageLocation.NO_LOCATION);
@@ -28,6 +28,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.jvm.CompilerConfigurationUtl;
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GeneratedClassLoader;
import org.jetbrains.jet.codegen.GenerationState;
@@ -148,7 +149,8 @@ public class CompileEnvironmentUtil {
GenerationState generationState = KotlinToJVMBytecodeCompiler
.analyzeAndGenerate(new K2JVMCompileEnvironmentConfiguration(scriptEnvironment, messageCollector, false,
BuiltinsScopeExtensionMode.ALL, false), false);
BuiltinsScopeExtensionMode.ALL, false,
BuiltinToJavaTypesMapping.ENABLED), false);
if (generationState == null) {
throw new CompileEnvironmentException("Module script " + moduleScriptFile + " analyze failed");
}
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.Disposer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.cli.common.CompileEnvironmentConfiguration;
import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
/**
@@ -30,6 +31,7 @@ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConf
private final boolean script;
private final BuiltinsScopeExtensionMode builtinsScopeExtensionMode;
private final boolean stubs;
private final BuiltinToJavaTypesMapping builtinToJavaTypesMapping;
/**
* NOTE: It's very important to call dispose for every object of this class or there will be memory leaks.
@@ -37,12 +39,13 @@ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConf
* @see Disposer
*/
public K2JVMCompileEnvironmentConfiguration(@NotNull JetCoreEnvironment environment, @NotNull MessageCollector messageCollector,
boolean script, BuiltinsScopeExtensionMode builtinsScopeExtensionMode, boolean stubs) {
boolean script, BuiltinsScopeExtensionMode builtinsScopeExtensionMode, boolean stubs, BuiltinToJavaTypesMapping builtinToJavaTypesMapping) {
super(messageCollector);
this.environment = environment;
this.script = script;
this.builtinsScopeExtensionMode = builtinsScopeExtensionMode;
this.stubs = stubs;
this.builtinToJavaTypesMapping = builtinToJavaTypesMapping;
}
public JetCoreEnvironment getEnvironment() {
@@ -61,4 +64,8 @@ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConf
public boolean isStubs() {
return stubs;
}
public BuiltinToJavaTypesMapping getBuiltinToJavaTypesMapping() {
return builtinToJavaTypesMapping;
}
}
@@ -320,7 +320,7 @@ public class KotlinToJVMBytecodeCompiler {
};
GenerationState generationState = new GenerationState(project, ClassBuilderFactories.binaries(stubs), backendProgress,
exhaust, environment.getSourceFiles(),
configuration.getEnvironment().getCompilerSpecialMode());
configuration.getBuiltinToJavaTypesMapping());
generationState.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION);
List<CompilerPlugin> plugins = configuration.getCompilerPlugins();
@@ -35,6 +35,7 @@ import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.common.messages.MessageCollectorToString;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
import org.jetbrains.jet.codegen.ClassBuilderFactories;
import org.jetbrains.jet.codegen.CompilationErrorHandler;
import org.jetbrains.jet.codegen.GenerationState;
@@ -239,7 +240,7 @@ public class ReplInterpreter {
GenerationState generationState = new GenerationState(jetCoreEnvironment.getProject(), ClassBuilderFactories.binaries(false), backendProgress,
AnalyzeExhaust.success(trace.getBindingContext()), Collections.singletonList(psiFile),
jetCoreEnvironment.getCompilerSpecialMode());
BuiltinToJavaTypesMapping.ENABLED);
generationState.compileScript(psiFile.getScript(), scriptClassName, earierScripts, CompilationErrorHandler.THROW_EXCEPTION);
for (String file : generationState.getFactory().files()) {