diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 61b42381f47..d42b71b9bbe 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -268,6 +268,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setTypeResolver(typeResolver); + expressionTypingServices.setAnnotationResolver(annotationResolver); expressionTypingServices.setCallExpressionResolver(callExpressionResolver); expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index 98c70de2a1e..80cb7cdb855 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -117,6 +117,7 @@ public class InjectorForBodyResolve { argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setTypeResolver(typeResolver); + expressionTypingServices.setAnnotationResolver(annotationResolver); expressionTypingServices.setCallExpressionResolver(callExpressionResolver); expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index ce18b152825..dc6a5be22ff 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -81,6 +81,7 @@ public class InjectorForLazyResolve { this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); this.descriptorResolver.setTypeResolver(typeResolver); + this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index e12e8c0cbc7..0945a248d63 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -21,14 +21,14 @@ import org.jetbrains.jet.lang.resolve.calls.NeedSyntheticCallResolverExtension; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; -import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; +import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver; -import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; +import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -40,14 +40,14 @@ public class InjectorForMacros { private final PlatformToKotlinClassMap platformToKotlinClassMap; private final Project project; private final ModuleDescriptor moduleDescriptor; - private final CallExpressionResolver callExpressionResolver; + private final AnnotationResolver annotationResolver; 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; + private final CallExpressionResolver callExpressionResolver; public InjectorForMacros( @NotNull Project project, @@ -58,15 +58,16 @@ public class InjectorForMacros { this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.project = project; this.moduleDescriptor = moduleDescriptor; - this.callExpressionResolver = new CallExpressionResolver(); + this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); this.typeResolver = new TypeResolver(); - this.annotationResolver = new AnnotationResolver(); this.descriptorResolver = new DescriptorResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.candidateResolver = new CandidateResolver(); + this.callExpressionResolver = new CallExpressionResolver(); + this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver); @@ -74,7 +75,8 @@ public class InjectorForMacros { this.expressionTypingServices.setProject(project); this.expressionTypingServices.setTypeResolver(typeResolver); - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); + annotationResolver.setCallResolver(callResolver); + annotationResolver.setExpressionTypingServices(expressionTypingServices); callResolver.setArgumentTypeResolver(argumentTypeResolver); callResolver.setCandidateResolver(candidateResolver); @@ -90,15 +92,14 @@ public class InjectorForMacros { typeResolver.setModuleDescriptor(moduleDescriptor); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); - annotationResolver.setCallResolver(callResolver); - annotationResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setAnnotationResolver(annotationResolver); descriptorResolver.setExpressionTypingServices(expressionTypingServices); descriptorResolver.setTypeResolver(typeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver); + callExpressionResolver.setExpressionTypingServices(expressionTypingServices); + } @PreDestroy diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index 164bcc9e9e5..6fb3b8a5316 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -176,6 +176,7 @@ public class InjectorForTopDownAnalyzerBasic { argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setTypeResolver(typeResolver); + expressionTypingServices.setAnnotationResolver(annotationResolver); expressionTypingServices.setCallExpressionResolver(callExpressionResolver); expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java index 3b3f7de898a..06d77fbb857 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java @@ -68,6 +68,8 @@ public class ExpressionTypingServices { @NotNull private TypeResolver typeResolver; @NotNull + private AnnotationResolver annotationResolver; + @NotNull private PlatformToKotlinClassMap platformToKotlinClassMap; @NotNull @@ -120,6 +122,16 @@ public class ExpressionTypingServices { this.typeResolver = typeResolver; } + @NotNull + public AnnotationResolver getAnnotationResolver() { + return annotationResolver; + } + + @Inject + public void setAnnotationResolver(@NotNull AnnotationResolver annotationResolver) { + this.annotationResolver = annotationResolver; + } + @Inject public void setPlatformToKotlinClassMap(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) { this.platformToKotlinClassMap = platformToKotlinClassMap; diff --git a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java index 22ab98507e7..63c65515102 100644 --- a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java @@ -74,6 +74,7 @@ public class InjectorForTests { this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); this.descriptorResolver.setTypeResolver(typeResolver); + this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver); diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 16217feb725..6925535e58a 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -175,6 +175,7 @@ public class InjectorForTopDownAnalyzerForJs { argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setTypeResolver(typeResolver); + expressionTypingServices.setAnnotationResolver(annotationResolver); expressionTypingServices.setCallExpressionResolver(callExpressionResolver); expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver);