001    /*
002     * Copyright 2010-2013 JetBrains s.r.o.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.jetbrains.jet.di;
018    
019    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
020    import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension;
021    import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
022    import com.intellij.openapi.project.Project;
023    import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
024    import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
025    import org.jetbrains.jet.lang.resolve.calls.CallResolver;
026    import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
027    import org.jetbrains.jet.lang.resolve.TypeResolver;
028    import org.jetbrains.jet.lang.resolve.AnnotationResolver;
029    import org.jetbrains.jet.lang.resolve.DescriptorResolver;
030    import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
031    import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
032    import org.jetbrains.annotations.NotNull;
033    import javax.annotation.PreDestroy;
034    
035    /* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
036    public class InjectorForMacros {
037        
038        private final ExpressionTypingServices expressionTypingServices;
039        private final NeedSyntheticCallResolverExtension needSyntheticCallResolverExtension;
040        private final PlatformToKotlinClassMap platformToKotlinClassMap;
041        private final Project project;
042        private final ModuleDescriptor moduleDescriptor;
043        private final CallExpressionResolver callExpressionResolver;
044        private final CallResolver callResolver;
045        private final ArgumentTypeResolver argumentTypeResolver;
046        private final TypeResolver typeResolver;
047        private final AnnotationResolver annotationResolver;
048        private final DescriptorResolver descriptorResolver;
049        private final QualifiedExpressionResolver qualifiedExpressionResolver;
050        private final CandidateResolver candidateResolver;
051        
052        public InjectorForMacros(
053            @NotNull Project project,
054            @NotNull ModuleDescriptor moduleDescriptor
055        ) {
056            this.expressionTypingServices = new ExpressionTypingServices();
057            this.needSyntheticCallResolverExtension = new NeedSyntheticCallResolverExtension();
058            this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
059            this.project = project;
060            this.moduleDescriptor = moduleDescriptor;
061            this.callExpressionResolver = new CallExpressionResolver();
062            this.callResolver = new CallResolver();
063            this.argumentTypeResolver = new ArgumentTypeResolver();
064            this.typeResolver = new TypeResolver();
065            this.annotationResolver = new AnnotationResolver();
066            this.descriptorResolver = new DescriptorResolver();
067            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
068            this.candidateResolver = new CandidateResolver();
069    
070            this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
071            this.expressionTypingServices.setCallResolver(callResolver);
072            this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
073            this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
074            this.expressionTypingServices.setProject(project);
075            this.expressionTypingServices.setTypeResolver(typeResolver);
076    
077            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
078    
079            callResolver.setArgumentTypeResolver(argumentTypeResolver);
080            callResolver.setCandidateResolver(candidateResolver);
081            callResolver.setExpressionTypingServices(expressionTypingServices);
082            callResolver.setExtension(needSyntheticCallResolverExtension);
083            callResolver.setTypeResolver(typeResolver);
084    
085            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
086            argumentTypeResolver.setTypeResolver(typeResolver);
087    
088            typeResolver.setAnnotationResolver(annotationResolver);
089            typeResolver.setDescriptorResolver(descriptorResolver);
090            typeResolver.setModuleDescriptor(moduleDescriptor);
091            typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
092    
093            annotationResolver.setCallResolver(callResolver);
094            annotationResolver.setExpressionTypingServices(expressionTypingServices);
095    
096            descriptorResolver.setAnnotationResolver(annotationResolver);
097            descriptorResolver.setExpressionTypingServices(expressionTypingServices);
098            descriptorResolver.setTypeResolver(typeResolver);
099    
100            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
101    
102        }
103        
104        @PreDestroy
105        public void destroy() {
106        }
107        
108        public ExpressionTypingServices getExpressionTypingServices() {
109            return this.expressionTypingServices;
110        }
111        
112        public Project getProject() {
113            return this.project;
114        }
115        
116    }