diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java index 81c838dfd1d..676816764a6 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java @@ -19,6 +19,7 @@ */ package org.jetbrains.jet.codegen; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; @@ -58,11 +59,12 @@ public class GenerationState { private final JetTypeMapper typeMapper; - public GenerationState(ClassBuilderFactory builderFactory, AnalyzeExhaust analyzeExhaust, List files) { - this(builderFactory, Progress.DEAF, analyzeExhaust, files, BuiltinToJavaTypesMapping.ENABLED); + public GenerationState(Project project, ClassBuilderFactory builderFactory, AnalyzeExhaust analyzeExhaust, List files) { + this(project, builderFactory, Progress.DEAF, analyzeExhaust, files, BuiltinToJavaTypesMapping.ENABLED); } public GenerationState( + @NotNull Project project, ClassBuilderFactory builderFactory, Progress progress, @NotNull AnalyzeExhaust exhaust, @NotNull List files, @NotNull BuiltinToJavaTypesMapping builtinToJavaTypesMapping ) { @@ -72,7 +74,7 @@ public class GenerationState { bindingContext = exhaust.getBindingContext(); this.injector = new InjectorForJvmCodegen( bindingContext, - this.files, builtinToJavaTypesMapping, builderFactory.getClassBuilderMode(), this, builderFactory); + this.files, builtinToJavaTypesMapping, builderFactory.getClassBuilderMode(), this, builderFactory, project); typeMapper = injector.getJetTypeMapper(); } diff --git a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJetTypeMapper.java index 6ee311e8643..122bfa6e444 100644 --- a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJetTypeMapper.java @@ -17,16 +17,15 @@ package org.jetbrains.jet.di; -import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.resolve.BindingContext; +import java.util.List; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.codegen.JetTypeMapper; import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; import org.jetbrains.jet.codegen.ClassBuilderMode; import org.jetbrains.jet.codegen.ClosureAnnotator; -import org.jetbrains.jet.codegen.JetTypeMapper; -import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.resolve.BindingContext; - +import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; -import java.util.List; /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ public class InjectorForJetTypeMapper { @@ -39,8 +38,8 @@ public class InjectorForJetTypeMapper { private ClosureAnnotator closureAnnotator; public InjectorForJetTypeMapper( - @NotNull BindingContext bindingContext, - @NotNull List listOfJetFile + @NotNull BindingContext bindingContext, + @NotNull List listOfJetFile ) { this.bindingContext = bindingContext; this.listOfJetFile = listOfJetFile; @@ -58,6 +57,7 @@ public class InjectorForJetTypeMapper { closureAnnotator.setFiles(listOfJetFile); jetTypeMapper.init(); + } @PreDestroy @@ -67,4 +67,5 @@ public class InjectorForJetTypeMapper { public JetTypeMapper getJetTypeMapper() { return this.jetTypeMapper; } + } diff --git a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java index 4b5bafa9cd8..6398a054a7e 100644 --- a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java @@ -17,14 +17,23 @@ package org.jetbrains.jet.di; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.codegen.*; -import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; -import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.BindingContext; - -import javax.annotation.PreDestroy; import java.util.List; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping; +import org.jetbrains.jet.codegen.ClassBuilderMode; +import org.jetbrains.jet.codegen.GenerationState; +import org.jetbrains.jet.codegen.ClassBuilderFactory; +import com.intellij.openapi.project.Project; +import org.jetbrains.jet.codegen.JetTypeMapper; +import org.jetbrains.jet.codegen.ClassCodegen; +import org.jetbrains.jet.codegen.ScriptCodegen; +import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; +import org.jetbrains.jet.codegen.ClassFileFactory; +import org.jetbrains.jet.codegen.MemberCodegen; +import org.jetbrains.jet.codegen.ClosureAnnotator; +import org.jetbrains.annotations.NotNull; +import javax.annotation.PreDestroy; /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ public class InjectorForJvmCodegen { @@ -35,6 +44,7 @@ public class InjectorForJvmCodegen { private final ClassBuilderMode classBuilderMode; private final GenerationState generationState; private final ClassBuilderFactory classBuilderFactory; + private final Project project; private JetTypeMapper jetTypeMapper; private ClassCodegen classCodegen; private ScriptCodegen scriptCodegen; @@ -44,12 +54,13 @@ public class InjectorForJvmCodegen { private ClosureAnnotator closureAnnotator; public InjectorForJvmCodegen( - @NotNull BindingContext bindingContext, - @NotNull List listOfJetFile, - @NotNull BuiltinToJavaTypesMapping builtinToJavaTypesMapping, - @NotNull ClassBuilderMode classBuilderMode, - @NotNull GenerationState generationState, - @NotNull ClassBuilderFactory classBuilderFactory + @NotNull BindingContext bindingContext, + @NotNull List listOfJetFile, + @NotNull BuiltinToJavaTypesMapping builtinToJavaTypesMapping, + @NotNull ClassBuilderMode classBuilderMode, + @NotNull GenerationState generationState, + @NotNull ClassBuilderFactory classBuilderFactory, + @NotNull Project project ) { this.bindingContext = bindingContext; this.listOfJetFile = listOfJetFile; @@ -57,6 +68,7 @@ public class InjectorForJvmCodegen { this.classBuilderMode = classBuilderMode; this.generationState = generationState; this.classBuilderFactory = classBuilderFactory; + this.project = project; this.jetTypeMapper = new JetTypeMapper(); this.classCodegen = new ClassCodegen(); this.scriptCodegen = new ScriptCodegen(); @@ -91,6 +103,7 @@ public class InjectorForJvmCodegen { jetTypeMapper.init(); intrinsics.init(); + } @PreDestroy @@ -101,6 +114,10 @@ public class InjectorForJvmCodegen { return this.generationState; } + public Project getProject() { + return this.project; + } + public JetTypeMapper getJetTypeMapper() { return this.jetTypeMapper; } @@ -128,4 +145,5 @@ public class InjectorForJvmCodegen { public ClosureAnnotator getClosureAnnotator() { return this.closureAnnotator; } + } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java index cfd3dbf3969..fcd5fb1139b 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.java @@ -339,7 +339,7 @@ public class KotlinToJVMBytecodeCompiler { environment.getConfiguration().get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY).report(CompilerMessageSeverity.LOGGING, message, CompilerMessageLocation.NO_LOCATION); } }; - GenerationState generationState = new GenerationState(ClassBuilderFactories.binaries(stubs), backendProgress, + GenerationState generationState = new GenerationState(project, ClassBuilderFactories.binaries(stubs), backendProgress, exhaust, environment.getSourceFiles(), environment.getConfiguration().get( JVMConfigurationKeys.BUILTIN_TO_JAVA_TYPES_MAPPING_KEY, diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java index 04d00a1461d..09a7e3264b6 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java @@ -236,7 +236,7 @@ public class ReplInterpreter { earierScripts.add(Pair.create(earlierLine.getScriptDescriptor(), earlierLine.getClassName())); } - GenerationState generationState = new GenerationState(ClassBuilderFactories.binaries(false), backendProgress, + GenerationState generationState = new GenerationState(psiFile.getProject(), ClassBuilderFactories.binaries(false), backendProgress, AnalyzeExhaust.success(trace.getBindingContext()), Collections.singletonList(psiFile), BuiltinToJavaTypesMapping.ENABLED); generationState.compileScript(psiFile.getScript(), scriptClassName, earierScripts, CompilationErrorHandler.THROW_EXCEPTION); diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightClass.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightClass.java index 190b44759f0..ee62cee8911 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightClass.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightClass.java @@ -179,7 +179,7 @@ public class JetLightClass extends AbstractLightClass implements JetJavaMirrorMa throw new IllegalStateException("failed to analyze: " + context.getError(), context.getError()); } - final GenerationState state = new GenerationState(builderFactory, context, Collections.singletonList(file)) { + final GenerationState state = new GenerationState(project, builderFactory, context, Collections.singletonList(file)) { @Override protected void generateNamespace(FqName fqName, Collection namespaceFiles, CompilationErrorHandler errorHandler, Progress progress) { PsiManager manager = PsiManager.getInstance(project); diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 0c555fb00e6..832bd001aa5 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -306,7 +306,7 @@ public abstract class CodegenTestCase extends UsefulTestCase { BuiltinsScopeExtensionMode.ALL); analyzeExhaust.throwIfError(); AnalyzingUtils.throwExceptionOnErrors(analyzeExhaust.getBindingContext()); - alreadyGenerated = new GenerationState(classBuilderFactory, analyzeExhaust, myFiles.getPsiFiles()); + alreadyGenerated = new GenerationState(myEnvironment.getProject(), classBuilderFactory, analyzeExhaust, myFiles.getPsiFiles()); alreadyGenerated.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION); return alreadyGenerated; } diff --git a/compiler/tests/org/jetbrains/jet/codegen/GenerationUtils.java b/compiler/tests/org/jetbrains/jet/codegen/GenerationUtils.java index baa77d6c1c1..136597d7f42 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/GenerationUtils.java +++ b/compiler/tests/org/jetbrains/jet/codegen/GenerationUtils.java @@ -46,21 +46,21 @@ public class GenerationUtils { public static GenerationState compileFileGetGenerationStateForTest(@NotNull JetFile psiFile) { final AnalyzeExhaust analyzeExhaust = AnalyzerFacadeForJVM.analyzeOneFileWithJavaIntegrationAndCheckForErrors( psiFile, Collections.emptyList(), BuiltinsScopeExtensionMode.ALL); - return compileFilesGetGenerationState(analyzeExhaust, Collections.singletonList(psiFile)); + return compileFilesGetGenerationState(psiFile.getProject(), analyzeExhaust, Collections.singletonList(psiFile)); } @NotNull public static GenerationState compileManyFilesGetGenerationStateForTest(@NotNull Project project, @NotNull List files) { final AnalyzeExhaust analyzeExhaust = AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationAndCheckForErrors( project, files, Collections.emptyList(), Predicates.alwaysTrue(), BuiltinsScopeExtensionMode.ALL); - return compileFilesGetGenerationState(analyzeExhaust, files); + return compileFilesGetGenerationState(project,analyzeExhaust, files); } @NotNull - public static GenerationState compileFilesGetGenerationState(@NotNull AnalyzeExhaust analyzeExhaust, @NotNull List files) { + public static GenerationState compileFilesGetGenerationState(@NotNull Project project, @NotNull AnalyzeExhaust analyzeExhaust, @NotNull List files) { analyzeExhaust.throwIfError(); - GenerationState state = new GenerationState(ClassBuilderFactories.TEST, analyzeExhaust, files); + GenerationState state = new GenerationState(project, ClassBuilderFactories.TEST, analyzeExhaust, files); state.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION); return state; } diff --git a/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolwindow.java b/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolwindow.java index 531214af3ee..13b5c99bdd1 100644 --- a/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolwindow.java +++ b/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolwindow.java @@ -209,7 +209,7 @@ public class BytecodeToolwindow extends JPanel implements Disposable { if (binding.isError()) { return printStackTraceToString(binding.getError()); } - state = new GenerationState(ClassBuilderFactories.TEXT, binding, Collections.singletonList(file)); + state = new GenerationState(file.getProject(), ClassBuilderFactories.TEXT, binding, Collections.singletonList(file)); state.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION); } catch (Exception e) { diff --git a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java index b8908ea9ca9..3f018c3f561 100644 --- a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java @@ -193,6 +193,7 @@ public class AllInjectorsGenerator { generator.addParameter(ClassBuilderMode.class); generator.addPublicParameter(GenerationState.class); generator.addParameter(ClassBuilderFactory.class); + generator.addPublicParameter(Project.class); generator.addPublicField(JetTypeMapper.class); generator.addPublicField(ClassCodegen.class); generator.addPublicField(ScriptCodegen.class);