diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ClassCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ClassCodegen.java index a585ef6b737..e8890f0bd17 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ClassCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ClassCodegen.java @@ -50,7 +50,7 @@ public class ClassCodegen { generate(contextForInners, (JetClass) declaration); } if(declaration instanceof JetClassObject) { - state.forClass().generate(contextForInners, ((JetClassObject)declaration).getObjectDeclaration()); + state.getInjector().getClassCodegen().generate(contextForInners, ((JetClassObject)declaration).getObjectDeclaration()); } } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java index b536dae92bf..ec739c61953 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java @@ -91,10 +91,6 @@ public class GenerationState { return classBuilderMode; } - public ClassCodegen forClass() { - return new ClassCodegen(this); - } - public ClassBuilder forClassImplementation(ClassDescriptor aClass) { return getFactory().newVisitor(getInjector().getJetTypeMapper().mapType(aClass.getDefaultType(), MapTypeMode.IMPL).getInternalName() + ".class"); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index b1b4f7c6251..708a94c0d43 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -61,7 +61,6 @@ public class NamespaceCodegen { final FunctionCodegen functionCodegen = new FunctionCodegen(context, v, state); final PropertyCodegen propertyCodegen = new PropertyCodegen(context, v, functionCodegen, state); - final ClassCodegen classCodegen = state.forClass(); for (JetDeclaration declaration : file.getDeclarations()) { if (declaration instanceof JetProperty) { @@ -79,7 +78,7 @@ public class NamespaceCodegen { } } else if (declaration instanceof JetClassOrObject) { - classCodegen.generate(context, (JetClassOrObject) declaration); + state.getInjector().getClassCodegen().generate(context, (JetClassOrObject) declaration); } // else if (declaration instanceof JetFile) { // JetFile childNamespace = (JetFile) declaration; diff --git a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java index b5987e16532..74f9e444453 100644 --- a/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/di/InjectorForJvmCodegen.java @@ -27,6 +27,7 @@ import org.jetbrains.jet.codegen.ClassBuilderMode; import org.jetbrains.jet.codegen.GenerationState; import org.jetbrains.jet.codegen.ClassBuilderFactory; import org.jetbrains.jet.codegen.JetTypeMapper; +import org.jetbrains.jet.codegen.ClassCodegen; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.ClosureAnnotator; @@ -54,6 +55,7 @@ public class InjectorForJvmCodegen { private final GenerationState generationState; private final ClassBuilderFactory classBuilderFactory; private JetTypeMapper jetTypeMapper; + private ClassCodegen classCodegen; private IntrinsicMethods intrinsics; private ClassFileFactory classFileFactory; private ClosureAnnotator closureAnnotator; @@ -77,6 +79,7 @@ public class InjectorForJvmCodegen { this.generationState = generationState; this.classBuilderFactory = classBuilderFactory; this.jetTypeMapper = new JetTypeMapper(); + this.classCodegen = new ClassCodegen(getGenerationState()); this.intrinsics = new IntrinsicMethods(); this.classFileFactory = new ClassFileFactory(); this.closureAnnotator = new ClosureAnnotator(); @@ -120,6 +123,10 @@ public class InjectorForJvmCodegen { return this.jetTypeMapper; } + public ClassCodegen getClassCodegen() { + return this.classCodegen; + } + public IntrinsicMethods getIntrinsics() { return this.intrinsics; } diff --git a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java index 4ab6505c257..6bff224e6e3 100644 --- a/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/AllInjectorsGenerator.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.di; import com.intellij.openapi.project.Project; import org.jetbrains.jet.codegen.ClassBuilderFactory; import org.jetbrains.jet.codegen.ClassBuilderMode; +import org.jetbrains.jet.codegen.ClassCodegen; import org.jetbrains.jet.codegen.ClassFileFactory; import org.jetbrains.jet.codegen.GenerationState; import org.jetbrains.jet.codegen.JetTypeMapper; @@ -154,6 +155,7 @@ public class AllInjectorsGenerator { generator.addPublicParameter(GenerationState.class); generator.addParameter(ClassBuilderFactory.class); generator.addPublicField(JetTypeMapper.class); + generator.addPublicField(ClassCodegen.class); generator.addField(true, IntrinsicMethods.class, "intrinsics", null); generator.addPublicField(ClassFileFactory.class); generator.generate("compiler/backend/src", "org.jetbrains.jet.di", "InjectorForJvmCodegen");