Introduced BuiltinsScopeExtensionMode enum. Using it instead of CompilerSpecialMode to create JavaBridgeConfiguration.

This commit is contained in:
Evgeny Gerashchenko
2012-07-05 14:45:54 +04:00
parent 7191a0bdd1
commit 6e7d08b478
40 changed files with 162 additions and 108 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
import org.jetbrains.jet.cli.jvm.repl.ReplFromTerminal;
import org.jetbrains.jet.codegen.CompilationException;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import org.jetbrains.jet.utils.PathUtil;
@@ -69,8 +70,10 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
}
JetCoreEnvironment environment = JetCoreEnvironment.createCoreEnvironmentForJVM(rootDisposable, compilerConfiguration, mode);
K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration(environment, messageCollector,
arguments.script);
K2JVMCompileEnvironmentConfiguration configuration = new K2JVMCompileEnvironmentConfiguration(
environment, messageCollector, arguments.script, mode == CompilerSpecialMode.BUILTINS
? BuiltinsScopeExtensionMode.ONLY_STANDARD_CLASSES
: BuiltinsScopeExtensionMode.ALL);
messageCollector.report(CompilerMessageSeverity.LOGGING, "Configuring the compilation environment",
CompilerMessageLocation.NO_LOCATION);
@@ -32,6 +32,7 @@ import org.jetbrains.jet.codegen.ClassFileFactory;
import org.jetbrains.jet.codegen.GeneratedClassLoader;
import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -141,11 +142,13 @@ public class CompileEnvironmentUtil {
}
};
CompilerConfiguration configuration = CompilerConfigurationUtl.getDefaultConfiguration(CompilerSpecialMode.REGULAR);
JetCoreEnvironment scriptEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(disposable, configuration, CompilerSpecialMode.REGULAR);
JetCoreEnvironment scriptEnvironment = JetCoreEnvironment.createCoreEnvironmentForJVM(disposable, configuration,
CompilerSpecialMode.REGULAR);
scriptEnvironment.addSources(moduleScriptFile);
GenerationState generationState = KotlinToJVMBytecodeCompiler
.analyzeAndGenerate(new K2JVMCompileEnvironmentConfiguration(scriptEnvironment, messageCollector, false), false);
.analyzeAndGenerate(new K2JVMCompileEnvironmentConfiguration(scriptEnvironment, messageCollector, false,
BuiltinsScopeExtensionMode.ALL), false);
if (generationState == null) {
throw new CompileEnvironmentException("Module script " + moduleScriptFile + " analyze failed");
}
@@ -20,8 +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 java.util.List;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
/**
* @author abreslav
@@ -29,6 +28,7 @@ import java.util.List;
public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConfiguration {
private final JetCoreEnvironment environment;
private final boolean script;
private final BuiltinsScopeExtensionMode builtinsScopeExtensionMode;
/**
* NOTE: It's very important to call dispose for every object of this class or there will be memory leaks.
@@ -36,10 +36,11 @@ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConf
* @see Disposer
*/
public K2JVMCompileEnvironmentConfiguration(@NotNull JetCoreEnvironment environment,
@NotNull MessageCollector messageCollector, boolean script) {
@NotNull MessageCollector messageCollector, boolean script, BuiltinsScopeExtensionMode builtinsScopeExtensionMode) {
super(messageCollector);
this.environment = environment;
this.script = script;
this.builtinsScopeExtensionMode = builtinsScopeExtensionMode;
}
public JetCoreEnvironment getEnvironment() {
@@ -49,4 +50,9 @@ public class K2JVMCompileEnvironmentConfiguration extends CompileEnvironmentConf
public boolean isScript() {
return script;
}
public BuiltinsScopeExtensionMode getBuiltinsScopeExtensionMode() {
return builtinsScopeExtensionMode;
}
}
@@ -297,7 +297,7 @@ public class KotlinToJVMBytecodeCompiler {
environment.getSourceFiles(),
scriptParameters,
filesToAnalyzeCompletely,
configuration.getEnvironment().getCompilerSpecialMode());
configuration.getBuiltinsScopeExtensionMode());
}
}, environment.getSourceFiles()
);
@@ -40,6 +40,7 @@ import org.jetbrains.jet.codegen.CompilationErrorHandler;
import org.jetbrains.jet.codegen.GenerationState;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptorImpl;
import org.jetbrains.jet.lang.descriptors.NamespaceLikeBuilderDummy;
@@ -100,7 +101,7 @@ public class ReplInterpreter {
false,
true,
Collections.<AnalyzerScriptParameter>emptyList());
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, mode);
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, BuiltinsScopeExtensionMode.ALL);
List<URL> classpath = Lists.newArrayList();