di: store everything in fields

needed to implement @PreDestroy
This commit is contained in:
Stepan Koltsov
2012-04-20 21:33:17 +04:00
parent 092a572143
commit 994e6fe009
9 changed files with 167 additions and 69 deletions
@@ -34,17 +34,26 @@ import org.jetbrains.annotations.NotNull;
/* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */ /* This file is generated by org.jetbrains.jet.di.AllInjectorsGenerator. DO NOT EDIT! */
public class InjectorForJetTypeMapper { public class InjectorForJetTypeMapper {
private final JetStandardLibrary jetStandardLibrary;
private final BindingContext bindingContext;
private final List<JetFile> listOfJetFile;
private JetTypeMapper jetTypeMapper; private JetTypeMapper jetTypeMapper;
private CompilerSpecialMode compilerSpecialMode;
private ClassBuilderMode classBuilderMode;
private ClosureAnnotator closureAnnotator;
public InjectorForJetTypeMapper( public InjectorForJetTypeMapper(
@NotNull JetStandardLibrary jetStandardLibrary, @NotNull JetStandardLibrary jetStandardLibrary,
@NotNull BindingContext bindingContext, @NotNull BindingContext bindingContext,
@NotNull List<JetFile> listOfJetFile @NotNull List<JetFile> listOfJetFile
) { ) {
this.jetStandardLibrary = jetStandardLibrary;
this.bindingContext = bindingContext;
this.listOfJetFile = listOfJetFile;
this.jetTypeMapper = new JetTypeMapper(); this.jetTypeMapper = new JetTypeMapper();
CompilerSpecialMode compilerSpecialMode = CompilerSpecialMode.REGULAR; this.compilerSpecialMode = CompilerSpecialMode.REGULAR;
ClassBuilderMode classBuilderMode = ClassBuilderMode.FULL; this.classBuilderMode = ClassBuilderMode.FULL;
ClosureAnnotator closureAnnotator = new ClosureAnnotator(); this.closureAnnotator = new ClosureAnnotator();
this.jetTypeMapper.setBindingContext(bindingContext); this.jetTypeMapper.setBindingContext(bindingContext);
this.jetTypeMapper.setClassBuilderMode(classBuilderMode); this.jetTypeMapper.setClassBuilderMode(classBuilderMode);
@@ -45,10 +45,17 @@ import org.jetbrains.annotations.NotNull;
public class InjectorForJvmCodegen { public class InjectorForJvmCodegen {
private final JetStandardLibrary jetStandardLibrary; private final JetStandardLibrary jetStandardLibrary;
private final BindingContext bindingContext;
private final List<JetFile> listOfJetFile;
private final Project project;
private final CompilerSpecialMode compilerSpecialMode;
private final ClassBuilderMode classBuilderMode;
private final GenerationState generationState; private final GenerationState generationState;
private final ClassBuilderFactory classBuilderFactory;
private JetTypeMapper jetTypeMapper; private JetTypeMapper jetTypeMapper;
private IntrinsicMethods intrinsics; private IntrinsicMethods intrinsics;
private ClassFileFactory classFileFactory; private ClassFileFactory classFileFactory;
private ClosureAnnotator closureAnnotator;
public InjectorForJvmCodegen( public InjectorForJvmCodegen(
@NotNull JetStandardLibrary jetStandardLibrary, @NotNull JetStandardLibrary jetStandardLibrary,
@@ -61,11 +68,17 @@ public class InjectorForJvmCodegen {
@NotNull ClassBuilderFactory classBuilderFactory @NotNull ClassBuilderFactory classBuilderFactory
) { ) {
this.jetStandardLibrary = jetStandardLibrary; this.jetStandardLibrary = jetStandardLibrary;
this.bindingContext = bindingContext;
this.listOfJetFile = listOfJetFile;
this.project = project;
this.compilerSpecialMode = compilerSpecialMode;
this.classBuilderMode = classBuilderMode;
this.generationState = generationState; this.generationState = generationState;
this.classBuilderFactory = classBuilderFactory;
this.jetTypeMapper = new JetTypeMapper(); this.jetTypeMapper = new JetTypeMapper();
this.intrinsics = new IntrinsicMethods(); this.intrinsics = new IntrinsicMethods();
this.classFileFactory = new ClassFileFactory(); this.classFileFactory = new ClassFileFactory();
ClosureAnnotator closureAnnotator = new ClosureAnnotator(); this.closureAnnotator = new ClosureAnnotator();
this.jetTypeMapper.setBindingContext(bindingContext); this.jetTypeMapper.setBindingContext(bindingContext);
this.jetTypeMapper.setClassBuilderMode(classBuilderMode); this.jetTypeMapper.setClassBuilderMode(classBuilderMode);
@@ -38,8 +38,14 @@ public class InjectorForJavaSemanticServices {
private JavaSemanticServices javaSemanticServices; private JavaSemanticServices javaSemanticServices;
private JavaDescriptorResolver javaDescriptorResolver; private JavaDescriptorResolver javaDescriptorResolver;
private BindingTrace bindingTrace; private BindingTrace bindingTrace;
private JavaBridgeConfiguration javaBridgeConfiguration;
private PsiClassFinderForJvm psiClassFinderForJvm; private PsiClassFinderForJvm psiClassFinderForJvm;
private ModuleDescriptor moduleDescriptor;
private final CompilerDependencies compilerDependencies;
private CompilerSpecialMode compilerSpecialMode;
private final Project project; private final Project project;
private JavaTypeTransformer javaTypeTransformer;
private NamespaceFactoryImpl namespaceFactoryImpl;
public InjectorForJavaSemanticServices( public InjectorForJavaSemanticServices(
@NotNull CompilerDependencies compilerDependencies, @NotNull CompilerDependencies compilerDependencies,
@@ -48,13 +54,14 @@ public class InjectorForJavaSemanticServices {
this.javaSemanticServices = new JavaSemanticServices(); this.javaSemanticServices = new JavaSemanticServices();
this.javaDescriptorResolver = new JavaDescriptorResolver(); this.javaDescriptorResolver = new JavaDescriptorResolver();
this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext(); this.bindingTrace = new org.jetbrains.jet.lang.resolve.BindingTraceContext();
JavaBridgeConfiguration javaBridgeConfiguration = new JavaBridgeConfiguration(); this.javaBridgeConfiguration = new JavaBridgeConfiguration();
this.psiClassFinderForJvm = new PsiClassFinderForJvm(); this.psiClassFinderForJvm = new PsiClassFinderForJvm();
ModuleDescriptor moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor("<dummy>"); this.moduleDescriptor = new org.jetbrains.jet.lang.descriptors.ModuleDescriptor("<dummy>");
CompilerSpecialMode compilerSpecialMode = compilerDependencies.getCompilerSpecialMode(); this.compilerDependencies = compilerDependencies;
this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode();
this.project = project; this.project = project;
JavaTypeTransformer javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
NamespaceFactoryImpl namespaceFactoryImpl = new NamespaceFactoryImpl(); this.namespaceFactoryImpl = new NamespaceFactoryImpl();
this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver); this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
this.javaSemanticServices.setPsiClassFinder(psiClassFinderForJvm); this.javaSemanticServices.setPsiClassFinder(psiClassFinderForJvm);
@@ -68,7 +68,28 @@ public class InjectorForTopDownAnalyzerForJvm {
private final Project project; private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters; private final TopDownAnalysisParameters topDownAnalysisParameters;
private final ObservableBindingTrace observableBindingTrace; private final ObservableBindingTrace observableBindingTrace;
private final ModuleDescriptor moduleDescriptor;
private final JetControlFlowDataTraceFactory jetControlFlowDataTraceFactory;
private final CompilerDependencies compilerDependencies;
private CompilerSpecialMode compilerSpecialMode;
private JavaBridgeConfiguration javaBridgeConfiguration; private JavaBridgeConfiguration javaBridgeConfiguration;
private PsiClassFinderForJvm psiClassFinderForJvm;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ExpressionTypingServices expressionTypingServices;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
private ImportsResolver importsResolver;
private DelegationResolver delegationResolver;
private NamespaceFactoryImpl namespaceFactoryImpl;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
private JavaSemanticServices javaSemanticServices;
private JavaDescriptorResolver javaDescriptorResolver;
private JavaTypeTransformer javaTypeTransformer;
public InjectorForTopDownAnalyzerForJvm( public InjectorForTopDownAnalyzerForJvm(
@NotNull Project project, @NotNull Project project,
@@ -87,25 +108,28 @@ public class InjectorForTopDownAnalyzerForJvm {
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.observableBindingTrace = observableBindingTrace; this.observableBindingTrace = observableBindingTrace;
CompilerSpecialMode compilerSpecialMode = compilerDependencies.getCompilerSpecialMode(); this.moduleDescriptor = moduleDescriptor;
this.jetControlFlowDataTraceFactory = jetControlFlowDataTraceFactory;
this.compilerDependencies = compilerDependencies;
this.compilerSpecialMode = compilerDependencies.getCompilerSpecialMode();
this.javaBridgeConfiguration = new JavaBridgeConfiguration(); this.javaBridgeConfiguration = new JavaBridgeConfiguration();
PsiClassFinderForJvm psiClassFinderForJvm = new PsiClassFinderForJvm(); this.psiClassFinderForJvm = new PsiClassFinderForJvm();
DeclarationResolver declarationResolver = new DeclarationResolver(); this.declarationResolver = new DeclarationResolver();
AnnotationResolver annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
CallResolver callResolver = new CallResolver(); this.callResolver = new CallResolver();
ExpressionTypingServices expressionTypingServices = new ExpressionTypingServices(); this.expressionTypingServices = new ExpressionTypingServices();
TypeResolver typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
QualifiedExpressionResolver qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
OverloadingConflictResolver overloadingConflictResolver = new OverloadingConflictResolver(); this.overloadingConflictResolver = new OverloadingConflictResolver();
ImportsResolver importsResolver = new ImportsResolver(); this.importsResolver = new ImportsResolver();
DelegationResolver delegationResolver = new DelegationResolver(); this.delegationResolver = new DelegationResolver();
NamespaceFactoryImpl namespaceFactoryImpl = new NamespaceFactoryImpl(); this.namespaceFactoryImpl = new NamespaceFactoryImpl();
OverloadResolver overloadResolver = new OverloadResolver(); this.overloadResolver = new OverloadResolver();
OverrideResolver overrideResolver = new OverrideResolver(); this.overrideResolver = new OverrideResolver();
TypeHierarchyResolver typeHierarchyResolver = new TypeHierarchyResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver();
JavaSemanticServices javaSemanticServices = new JavaSemanticServices(); this.javaSemanticServices = new JavaSemanticServices();
JavaDescriptorResolver javaDescriptorResolver = new JavaDescriptorResolver(); this.javaDescriptorResolver = new JavaDescriptorResolver();
JavaTypeTransformer javaTypeTransformer = new JavaTypeTransformer(); this.javaTypeTransformer = new JavaTypeTransformer();
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext); this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -33,18 +33,24 @@ public class InjectorForMacros {
private ExpressionTypingServices expressionTypingServices; private ExpressionTypingServices expressionTypingServices;
private final Project project; private final Project project;
private CallResolver callResolver;
private DescriptorResolver descriptorResolver;
private AnnotationResolver annotationResolver;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
public InjectorForMacros( public InjectorForMacros(
@NotNull Project project @NotNull Project project
) { ) {
this.expressionTypingServices = new ExpressionTypingServices(); this.expressionTypingServices = new ExpressionTypingServices();
this.project = project; this.project = project;
CallResolver callResolver = new CallResolver(); this.callResolver = new CallResolver();
DescriptorResolver descriptorResolver = new DescriptorResolver(); this.descriptorResolver = new DescriptorResolver();
AnnotationResolver annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
TypeResolver typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
QualifiedExpressionResolver qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
OverloadingConflictResolver overloadingConflictResolver = new OverloadingConflictResolver(); this.overloadingConflictResolver = new OverloadingConflictResolver();
this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setCallResolver(callResolver);
this.expressionTypingServices.setDescriptorResolver(descriptorResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
@@ -62,6 +62,22 @@ public class InjectorForTopDownAnalyzerBasic {
private final Project project; private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters; private final TopDownAnalysisParameters topDownAnalysisParameters;
private final ObservableBindingTrace observableBindingTrace; private final ObservableBindingTrace observableBindingTrace;
private final ModuleDescriptor moduleDescriptor;
private final JetControlFlowDataTraceFactory jetControlFlowDataTraceFactory;
private final ModuleConfiguration moduleConfiguration;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ExpressionTypingServices expressionTypingServices;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
private ImportsResolver importsResolver;
private DelegationResolver delegationResolver;
private NamespaceFactoryImpl namespaceFactoryImpl;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
public InjectorForTopDownAnalyzerBasic( public InjectorForTopDownAnalyzerBasic(
@NotNull Project project, @NotNull Project project,
@@ -80,19 +96,22 @@ public class InjectorForTopDownAnalyzerBasic {
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.observableBindingTrace = observableBindingTrace; this.observableBindingTrace = observableBindingTrace;
DeclarationResolver declarationResolver = new DeclarationResolver(); this.moduleDescriptor = moduleDescriptor;
AnnotationResolver annotationResolver = new AnnotationResolver(); this.jetControlFlowDataTraceFactory = jetControlFlowDataTraceFactory;
CallResolver callResolver = new CallResolver(); this.moduleConfiguration = moduleConfiguration;
ExpressionTypingServices expressionTypingServices = new ExpressionTypingServices(); this.declarationResolver = new DeclarationResolver();
TypeResolver typeResolver = new TypeResolver(); this.annotationResolver = new AnnotationResolver();
QualifiedExpressionResolver qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.callResolver = new CallResolver();
OverloadingConflictResolver overloadingConflictResolver = new OverloadingConflictResolver(); this.expressionTypingServices = new ExpressionTypingServices();
ImportsResolver importsResolver = new ImportsResolver(); this.typeResolver = new TypeResolver();
DelegationResolver delegationResolver = new DelegationResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
NamespaceFactoryImpl namespaceFactoryImpl = new NamespaceFactoryImpl(); this.overloadingConflictResolver = new OverloadingConflictResolver();
OverloadResolver overloadResolver = new OverloadResolver(); this.importsResolver = new ImportsResolver();
OverrideResolver overrideResolver = new OverrideResolver(); this.delegationResolver = new DelegationResolver();
TypeHierarchyResolver typeHierarchyResolver = new TypeHierarchyResolver(); this.namespaceFactoryImpl = new NamespaceFactoryImpl();
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext); this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -38,6 +38,9 @@ public class InjectorForTests {
private CallResolver callResolver; private CallResolver callResolver;
private JetStandardLibrary jetStandardLibrary; private JetStandardLibrary jetStandardLibrary;
private final Project project; private final Project project;
private AnnotationResolver annotationResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
public InjectorForTests( public InjectorForTests(
@NotNull Project project @NotNull Project project
@@ -48,9 +51,9 @@ public class InjectorForTests {
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.jetStandardLibrary = JetStandardLibrary.getInstance(); this.jetStandardLibrary = JetStandardLibrary.getInstance();
this.project = project; this.project = project;
AnnotationResolver annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
QualifiedExpressionResolver qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
OverloadingConflictResolver overloadingConflictResolver = new OverloadingConflictResolver(); this.overloadingConflictResolver = new OverloadingConflictResolver();
this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
@@ -233,10 +233,8 @@ public class DependencyInjectorGenerator {
private void generateFields(PrintStream out) { private void generateFields(PrintStream out) {
for (Field field : fields) { for (Field field : fields) {
if (lazy || field.isPublic()) { String _final = backsParameter.contains(field) ? "final " : "";
String _final = backsParameter.contains(field) ? "final " : ""; out.println(" private " + _final + field.getType().getSimpleName() + " " + field.getName() + ";");
out.println(" private " + _final + field.getType().getSimpleName() + " " + field.getName() + ";");
}
} }
} }
@@ -272,10 +270,10 @@ public class DependencyInjectorGenerator {
else { else {
// Initialize fields // Initialize fields
for (Field field : fields) { for (Field field : fields) {
if (!backsParameter.contains(field) || field.isPublic()) { //if (!backsParameter.contains(field) || field.isPublic()) {
String prefix = field.isPublic() ? "this." : field.getTypeName() + " "; String prefix = "this.";
out.println(indent + prefix + field.getName() + " = " + field.getInitialization() + ";"); out.println(indent + prefix + field.getName() + " = " + field.getInitialization() + ";");
} //}
} }
out.println(); out.println();
@@ -62,6 +62,22 @@ public class InjectorForTopDownAnalyzerForJs {
private final Project project; private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters; private final TopDownAnalysisParameters topDownAnalysisParameters;
private final ObservableBindingTrace observableBindingTrace; private final ObservableBindingTrace observableBindingTrace;
private final ModuleDescriptor moduleDescriptor;
private final JetControlFlowDataTraceFactory jetControlFlowDataTraceFactory;
private final ModuleConfiguration moduleConfiguration;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ExpressionTypingServices expressionTypingServices;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
private ImportsResolver importsResolver;
private DelegationResolver delegationResolver;
private NamespaceFactoryImpl namespaceFactoryImpl;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
public InjectorForTopDownAnalyzerForJs( public InjectorForTopDownAnalyzerForJs(
@NotNull Project project, @NotNull Project project,
@@ -80,19 +96,22 @@ public class InjectorForTopDownAnalyzerForJs {
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.observableBindingTrace = observableBindingTrace; this.observableBindingTrace = observableBindingTrace;
DeclarationResolver declarationResolver = new DeclarationResolver(); this.moduleDescriptor = moduleDescriptor;
AnnotationResolver annotationResolver = new AnnotationResolver(); this.jetControlFlowDataTraceFactory = jetControlFlowDataTraceFactory;
CallResolver callResolver = new CallResolver(); this.moduleConfiguration = moduleConfiguration;
ExpressionTypingServices expressionTypingServices = new ExpressionTypingServices(); this.declarationResolver = new DeclarationResolver();
TypeResolver typeResolver = new TypeResolver(); this.annotationResolver = new AnnotationResolver();
QualifiedExpressionResolver qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.callResolver = new CallResolver();
OverloadingConflictResolver overloadingConflictResolver = new OverloadingConflictResolver(); this.expressionTypingServices = new ExpressionTypingServices();
ImportsResolver importsResolver = new ImportsResolver(); this.typeResolver = new TypeResolver();
DelegationResolver delegationResolver = new DelegationResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
NamespaceFactoryImpl namespaceFactoryImpl = new NamespaceFactoryImpl(); this.overloadingConflictResolver = new OverloadingConflictResolver();
OverloadResolver overloadResolver = new OverloadResolver(); this.importsResolver = new ImportsResolver();
OverrideResolver overrideResolver = new OverrideResolver(); this.delegationResolver = new DelegationResolver();
TypeHierarchyResolver typeHierarchyResolver = new TypeHierarchyResolver(); this.namespaceFactoryImpl = new NamespaceFactoryImpl();
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext); this.topDownAnalyzer.setContext(topDownAnalysisContext);