Generate only final fields for injectors - make the access thread-safe

This commit is contained in:
Nikolay Krasko
2013-07-29 14:53:43 +04:00
parent 14247ea2ab
commit 70ae9e589c
11 changed files with 186 additions and 187 deletions
@@ -36,12 +36,12 @@ public class InjectorForJvmCodegen {
private final GenerationState generationState;
private final ClassBuilderFactory classBuilderFactory;
private final Project project;
private BindingTrace bindingTrace;
private BindingContext bindingContext;
private ClassBuilderMode classBuilderMode;
private ScriptCodegen scriptCodegen;
private IntrinsicMethods intrinsics;
private ClassFileFactory classFileFactory;
private final BindingTrace bindingTrace;
private final BindingContext bindingContext;
private final ClassBuilderMode classBuilderMode;
private final ScriptCodegen scriptCodegen;
private final IntrinsicMethods intrinsics;
private final ClassFileFactory classFileFactory;
public InjectorForJvmCodegen(
@NotNull JetTypeMapper jetTypeMapper,
@@ -46,24 +46,24 @@ public class InjectorForJavaDescriptorResolver {
private final Project project;
private final BindingTrace bindingTrace;
private final ModuleDescriptor moduleDescriptor;
private JavaBridgeConfiguration javaBridgeConfiguration;
private JavaSemanticServices javaSemanticServices;
private JavaDescriptorResolver javaDescriptorResolver;
private PsiClassFinderImpl psiClassFinder;
private PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private JavaTypeTransformer javaTypeTransformer;
private JavaClassResolver javaClassResolver;
private JavaAnnotationResolver javaAnnotationResolver;
private JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private JavaClassObjectResolver javaClassObjectResolver;
private JavaSupertypeResolver javaSupertypeResolver;
private JavaFunctionResolver javaFunctionResolver;
private JavaValueParameterResolver javaValueParameterResolver;
private JavaSignatureResolver javaSignatureResolver;
private JavaNamespaceResolver javaNamespaceResolver;
private JavaConstructorResolver javaConstructorResolver;
private JavaInnerClassResolver javaInnerClassResolver;
private JavaPropertyResolver javaPropertyResolver;
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final JavaSemanticServices javaSemanticServices;
private final JavaDescriptorResolver javaDescriptorResolver;
private final PsiClassFinderImpl psiClassFinder;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private final JavaClassObjectResolver javaClassObjectResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaSignatureResolver javaSignatureResolver;
private final JavaNamespaceResolver javaNamespaceResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaInnerClassResolver javaInnerClassResolver;
private final JavaPropertyResolver javaPropertyResolver;
public InjectorForJavaDescriptorResolver(
@NotNull Project project,
@@ -43,27 +43,27 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForJavaSemanticServices {
private JavaSemanticServices javaSemanticServices;
private JavaDescriptorResolver javaDescriptorResolver;
private BindingTrace bindingTrace;
private JavaBridgeConfiguration javaBridgeConfiguration;
private PsiClassFinderImpl psiClassFinder;
private ModuleDescriptorImpl moduleDescriptor;
private final JavaSemanticServices javaSemanticServices;
private final JavaDescriptorResolver javaDescriptorResolver;
private final BindingTrace bindingTrace;
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final PsiClassFinderImpl psiClassFinder;
private final ModuleDescriptorImpl moduleDescriptor;
private final Project project;
private PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private JavaTypeTransformer javaTypeTransformer;
private JavaClassResolver javaClassResolver;
private JavaAnnotationResolver javaAnnotationResolver;
private JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private JavaClassObjectResolver javaClassObjectResolver;
private JavaSupertypeResolver javaSupertypeResolver;
private JavaFunctionResolver javaFunctionResolver;
private JavaValueParameterResolver javaValueParameterResolver;
private JavaSignatureResolver javaSignatureResolver;
private JavaNamespaceResolver javaNamespaceResolver;
private JavaConstructorResolver javaConstructorResolver;
private JavaInnerClassResolver javaInnerClassResolver;
private JavaPropertyResolver javaPropertyResolver;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private final JavaClassObjectResolver javaClassObjectResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaSignatureResolver javaSignatureResolver;
private final JavaNamespaceResolver javaNamespaceResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaInnerClassResolver javaInnerClassResolver;
private final JavaPropertyResolver javaPropertyResolver;
public InjectorForJavaSemanticServices(
@NotNull Project project
@@ -68,52 +68,52 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
private TopDownAnalyzer topDownAnalyzer;
private TopDownAnalysisContext topDownAnalysisContext;
private BodyResolver bodyResolver;
private ControlFlowAnalyzer controlFlowAnalyzer;
private DeclarationsChecker declarationsChecker;
private DescriptorResolver descriptorResolver;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private JavaBridgeConfiguration javaBridgeConfiguration;
private JavaDescriptorResolver javaDescriptorResolver;
private PsiClassFinderImpl psiClassFinder;
private NamespaceFactoryImpl namespaceFactory;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private ExpressionTypingServices expressionTypingServices;
private CallExpressionResolver callExpressionResolver;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private CandidateResolver candidateResolver;
private ImportsResolver importsResolver;
private JetImportsFactory jetImportsFactory;
private ScriptHeaderResolver scriptHeaderResolver;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
private ScriptBodyResolver scriptBodyResolver;
private JavaSemanticServices javaSemanticServices;
private PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private JavaTypeTransformer javaTypeTransformer;
private JavaClassResolver javaClassResolver;
private JavaAnnotationResolver javaAnnotationResolver;
private JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private JavaClassObjectResolver javaClassObjectResolver;
private JavaSupertypeResolver javaSupertypeResolver;
private JavaFunctionResolver javaFunctionResolver;
private JavaValueParameterResolver javaValueParameterResolver;
private JavaSignatureResolver javaSignatureResolver;
private JavaNamespaceResolver javaNamespaceResolver;
private JavaConstructorResolver javaConstructorResolver;
private JavaInnerClassResolver javaInnerClassResolver;
private JavaPropertyResolver javaPropertyResolver;
private final JavaBridgeConfiguration javaBridgeConfiguration;
private final JavaDescriptorResolver javaDescriptorResolver;
private final PsiClassFinderImpl psiClassFinder;
private final NamespaceFactoryImpl namespaceFactory;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final ScriptBodyResolver scriptBodyResolver;
private final JavaSemanticServices javaSemanticServices;
private final PsiDeclarationProviderFactory psiDeclarationProviderFactory;
private final JavaTypeTransformer javaTypeTransformer;
private final JavaClassResolver javaClassResolver;
private final JavaAnnotationResolver javaAnnotationResolver;
private final JavaCompileTimeConstResolver javaCompileTimeConstResolver;
private final JavaClassObjectResolver javaClassObjectResolver;
private final JavaSupertypeResolver javaSupertypeResolver;
private final JavaFunctionResolver javaFunctionResolver;
private final JavaValueParameterResolver javaValueParameterResolver;
private final JavaSignatureResolver javaSignatureResolver;
private final JavaNamespaceResolver javaNamespaceResolver;
private final JavaConstructorResolver javaConstructorResolver;
private final JavaInnerClassResolver javaInnerClassResolver;
private final JavaPropertyResolver javaPropertyResolver;
public InjectorForTopDownAnalyzerForJvm(
@NotNull Project project,
@@ -42,26 +42,26 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForBodyResolve {
private BodyResolver bodyResolver;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final BodyResolver bodyResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final BindingTrace bindingTrace;
private final BodiesResolveContext bodiesResolveContext;
private final ModuleDescriptor moduleDescriptor;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private ExpressionTypingServices expressionTypingServices;
private CallExpressionResolver callExpressionResolver;
private DescriptorResolver descriptorResolver;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private CandidateResolver candidateResolver;
private ControlFlowAnalyzer controlFlowAnalyzer;
private DeclarationsChecker declarationsChecker;
private ScriptBodyResolver scriptBodyResolver;
private TopDownAnalysisContext topDownAnalysisContext;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final ScriptBodyResolver scriptBodyResolver;
private final TopDownAnalysisContext topDownAnalysisContext;
public InjectorForBodyResolve(
@NotNull Project project,
@@ -40,18 +40,18 @@ public class InjectorForLazyResolve {
private final Project project;
private final ResolveSession resolveSession;
private final ModuleDescriptor moduleDescriptor;
private DescriptorResolver descriptorResolver;
private ExpressionTypingServices expressionTypingServices;
private TypeResolver typeResolver;
private ScopeProvider scopeProvider;
private AnnotationResolver annotationResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private JetImportsFactory jetImportsFactory;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private CallExpressionResolver callExpressionResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private CandidateResolver candidateResolver;
private final DescriptorResolver descriptorResolver;
private final ExpressionTypingServices expressionTypingServices;
private final TypeResolver typeResolver;
private final ScopeProvider scopeProvider;
private final AnnotationResolver annotationResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final JetImportsFactory jetImportsFactory;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final CallExpressionResolver callExpressionResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final CandidateResolver candidateResolver;
public InjectorForLazyResolve(
@NotNull Project project,
@@ -34,18 +34,18 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForMacros {
private ExpressionTypingServices expressionTypingServices;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final ExpressionTypingServices expressionTypingServices;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private CallExpressionResolver callExpressionResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private TypeResolver typeResolver;
private AnnotationResolver annotationResolver;
private DescriptorResolver descriptorResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private CandidateResolver candidateResolver;
private final CallExpressionResolver callExpressionResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final TypeResolver typeResolver;
private final AnnotationResolver annotationResolver;
private final DescriptorResolver descriptorResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
public InjectorForMacros(
@NotNull Project project,
@@ -51,35 +51,35 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerBasic {
private TopDownAnalyzer topDownAnalyzer;
private TopDownAnalysisContext topDownAnalysisContext;
private BodyResolver bodyResolver;
private ControlFlowAnalyzer controlFlowAnalyzer;
private DeclarationsChecker declarationsChecker;
private DescriptorResolver descriptorResolver;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private NamespaceFactoryImpl namespaceFactory;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private ExpressionTypingServices expressionTypingServices;
private CallExpressionResolver callExpressionResolver;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private CandidateResolver candidateResolver;
private ImportsResolver importsResolver;
private JetImportsFactory jetImportsFactory;
private ScriptHeaderResolver scriptHeaderResolver;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
private ScriptBodyResolver scriptBodyResolver;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final NamespaceFactoryImpl namespaceFactory;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerBasic(
@NotNull Project project,
@@ -35,19 +35,19 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTests {
private DescriptorResolver descriptorResolver;
private ExpressionTypingServices expressionTypingServices;
private TypeResolver typeResolver;
private CallResolver callResolver;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private KotlinBuiltIns kotlinBuiltIns;
private final DescriptorResolver descriptorResolver;
private final ExpressionTypingServices expressionTypingServices;
private final TypeResolver typeResolver;
private final CallResolver callResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final KotlinBuiltIns kotlinBuiltIns;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private AnnotationResolver annotationResolver;
private CallExpressionResolver callExpressionResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private ArgumentTypeResolver argumentTypeResolver;
private CandidateResolver candidateResolver;
private final AnnotationResolver annotationResolver;
private final CallExpressionResolver callExpressionResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final CandidateResolver candidateResolver;
public InjectorForTests(
@NotNull Project project,
@@ -235,8 +235,7 @@ public class DependencyInjectorGenerator {
private void generateFields(Printer out) {
for (Field field : fields) {
String _final = backsParameter.contains(field) ? "final " : "";
out.println("private " + _final + type(InjectorGeneratorUtil.getEffectiveFieldType(field)) + " " + field.getName() + ";");
out.println("private final " + type(InjectorGeneratorUtil.getEffectiveFieldType(field)) + " " + field.getName() + ";");
}
}
@@ -299,7 +298,7 @@ public class DependencyInjectorGenerator {
private void generateGetters(Printer out) {
for (Field field : fields) {
if (!field.isPublic()) continue;
String visibility = field.isPublic() ? "public" : "private";
String visibility = "public";
out.println(visibility + " " + type(field.getType()) + " " + field.getGetterName() + "() {");
out.pushIndent();
@@ -51,35 +51,35 @@ import javax.annotation.PreDestroy;
/* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
public class InjectorForTopDownAnalyzerForJs {
private TopDownAnalyzer topDownAnalyzer;
private TopDownAnalysisContext topDownAnalysisContext;
private BodyResolver bodyResolver;
private ControlFlowAnalyzer controlFlowAnalyzer;
private DeclarationsChecker declarationsChecker;
private DescriptorResolver descriptorResolver;
private NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters;
private final BindingTrace bindingTrace;
private final ModuleDescriptorImpl moduleDescriptor;
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private NamespaceFactoryImpl namespaceFactory;
private DeclarationResolver declarationResolver;
private AnnotationResolver annotationResolver;
private CallResolver callResolver;
private ArgumentTypeResolver argumentTypeResolver;
private ExpressionTypingServices expressionTypingServices;
private CallExpressionResolver callExpressionResolver;
private TypeResolver typeResolver;
private QualifiedExpressionResolver qualifiedExpressionResolver;
private CandidateResolver candidateResolver;
private ImportsResolver importsResolver;
private JetImportsFactory jetImportsFactory;
private ScriptHeaderResolver scriptHeaderResolver;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
private ScriptBodyResolver scriptBodyResolver;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final NamespaceFactoryImpl namespaceFactory;
private final DeclarationResolver declarationResolver;
private final AnnotationResolver annotationResolver;
private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver;
private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CandidateResolver candidateResolver;
private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerForJs(
@NotNull Project project,