Use ModuleDescriptor instead of ModuleConfiguration
This commit is contained in:
@@ -95,7 +95,7 @@ public class ReplInterpreter {
|
|||||||
true,
|
true,
|
||||||
Collections.<AnalyzerScriptParameter>emptyList());
|
Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
||||||
module.setModuleConfiguration(injector.getModuleConfiguration());
|
module.setModuleConfiguration(injector.getModuleDescriptor().getModuleConfiguration());
|
||||||
|
|
||||||
List<URL> classpath = Lists.newArrayList();
|
List<URL> classpath = Lists.newArrayList();
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ public class ReplInterpreter {
|
|||||||
earierScripts.add(Pair.create(earlierLine.getScriptDescriptor(), earlierLine.getClassName()));
|
earierScripts.add(Pair.create(earlierLine.getScriptDescriptor(), earlierLine.getClassName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
BindingContext bindingContext = AnalyzeExhaust.success(trace.getBindingContext(), injector.getModuleConfiguration()).getBindingContext();
|
BindingContext bindingContext = AnalyzeExhaust.success(trace.getBindingContext(), module).getBindingContext();
|
||||||
GenerationState generationState = new GenerationState(psiFile.getProject(), ClassBuilderFactories.binaries(false),
|
GenerationState generationState = new GenerationState(psiFile.getProject(), ClassBuilderFactories.binaries(false),
|
||||||
bindingContext, Collections.singletonList(psiFile));
|
bindingContext, Collections.singletonList(psiFile));
|
||||||
generationState.getScriptCodegen().compileScript(psiFile.getScript(), scriptClassName, earierScripts,
|
generationState.getScriptCodegen().compileScript(psiFile.getScript(), scriptClassName, earierScripts,
|
||||||
|
|||||||
+12
-10
@@ -61,7 +61,6 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaInnerClassResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
|
|
||||||
@@ -78,7 +77,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
private final ModuleDescriptorImpl moduleDescriptor;
|
private final ModuleDescriptorImpl moduleDescriptor;
|
||||||
private JavaBridgeConfiguration moduleConfiguration;
|
private JavaBridgeConfiguration javaBridgeConfiguration;
|
||||||
private JavaDescriptorResolver javaDescriptorResolver;
|
private JavaDescriptorResolver javaDescriptorResolver;
|
||||||
private PsiClassFinderImpl psiClassFinder;
|
private PsiClassFinderImpl psiClassFinder;
|
||||||
private NamespaceFactoryImpl namespaceFactory;
|
private NamespaceFactoryImpl namespaceFactory;
|
||||||
@@ -130,7 +129,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.moduleConfiguration = new JavaBridgeConfiguration();
|
this.javaBridgeConfiguration = new JavaBridgeConfiguration();
|
||||||
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
this.javaDescriptorResolver = new JavaDescriptorResolver();
|
||||||
this.psiClassFinder = new PsiClassFinderImpl();
|
this.psiClassFinder = new PsiClassFinderImpl();
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
@@ -198,7 +197,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
this.moduleConfiguration.setJavaSemanticServices(javaSemanticServices);
|
this.javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
|
||||||
|
|
||||||
javaDescriptorResolver.setClassResolver(javaClassResolver);
|
javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||||
javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
|
javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
|
||||||
@@ -209,7 +208,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
psiClassFinder.setProject(project);
|
psiClassFinder.setProject(project);
|
||||||
|
|
||||||
this.namespaceFactory.setConfiguration(moduleConfiguration);
|
|
||||||
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
this.namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
||||||
this.namespaceFactory.setTrace(bindingTrace);
|
this.namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -241,14 +239,14 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
typeResolver.setAnnotationResolver(annotationResolver);
|
typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
typeResolver.setDescriptorResolver(descriptorResolver);
|
typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
typeResolver.setModuleConfiguration(moduleConfiguration);
|
typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
||||||
|
|
||||||
importsResolver.setConfiguration(moduleConfiguration);
|
|
||||||
importsResolver.setContext(topDownAnalysisContext);
|
importsResolver.setContext(topDownAnalysisContext);
|
||||||
importsResolver.setImportsFactory(jetImportsFactory);
|
importsResolver.setImportsFactory(jetImportsFactory);
|
||||||
|
importsResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
importsResolver.setTrace(bindingTrace);
|
importsResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -336,7 +334,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
javaPropertyResolver.setSemanticServices(javaSemanticServices);
|
javaPropertyResolver.setSemanticServices(javaSemanticServices);
|
||||||
javaPropertyResolver.setTrace(bindingTrace);
|
javaPropertyResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
moduleConfiguration.init();
|
javaBridgeConfiguration.init();
|
||||||
|
|
||||||
psiClassFinder.initialize();
|
psiClassFinder.initialize();
|
||||||
|
|
||||||
@@ -382,8 +380,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
return this.bindingTrace;
|
return this.bindingTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleConfiguration getModuleConfiguration() {
|
public ModuleDescriptorImpl getModuleDescriptor() {
|
||||||
return this.moduleConfiguration;
|
return this.moduleDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JavaBridgeConfiguration getJavaBridgeConfiguration() {
|
||||||
|
return this.javaBridgeConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NamespaceFactoryImpl getNamespaceFactory() {
|
public NamespaceFactoryImpl getNamespaceFactory() {
|
||||||
|
|||||||
+6
-5
@@ -31,6 +31,7 @@ import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
|||||||
import org.jetbrains.jet.lang.DefaultModuleConfiguration;
|
import org.jetbrains.jet.lang.DefaultModuleConfiguration;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.ModuleConfiguration;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
@@ -72,11 +73,11 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
||||||
@NotNull BindingTrace headersTraceContext,
|
@NotNull BindingTrace headersTraceContext,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration
|
@NotNull ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return AnalyzerFacadeForEverything.analyzeBodiesInFilesWithJavaIntegration(
|
return AnalyzerFacadeForEverything.analyzeBodiesInFilesWithJavaIntegration(
|
||||||
project, scriptParameters, filesForBodiesResolve,
|
project, scriptParameters, filesForBodiesResolve,
|
||||||
headersTraceContext, bodiesResolveContext, configuration);
|
headersTraceContext, bodiesResolveContext, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -136,7 +137,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
||||||
lazyModule.setModuleConfiguration(moduleConfiguration);
|
lazyModule.setModuleConfiguration(moduleConfiguration);
|
||||||
|
|
||||||
return new ResolveSession(fileProject, storageManager, lazyModule, moduleConfiguration, declarationProviderFactory, javaResolverTrace);
|
return new ResolveSession(fileProject, storageManager, lazyModule, declarationProviderFactory, javaResolverTrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AnalyzeExhaust analyzeOneFileWithJavaIntegrationAndCheckForErrors(
|
public static AnalyzeExhaust analyzeOneFileWithJavaIntegrationAndCheckForErrors(
|
||||||
@@ -209,13 +210,13 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
||||||
project, topDownAnalysisParameters,
|
project, topDownAnalysisParameters,
|
||||||
new ObservableBindingTrace(trace), owner);
|
new ObservableBindingTrace(trace), owner);
|
||||||
owner.setModuleConfiguration(injector.getModuleConfiguration());
|
owner.setModuleConfiguration(injector.getJavaBridgeConfiguration());
|
||||||
try {
|
try {
|
||||||
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
|
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
|
||||||
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
||||||
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
||||||
null;
|
null;
|
||||||
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, injector.getModuleConfiguration());
|
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, owner);
|
||||||
} finally {
|
} finally {
|
||||||
injector.destroy();
|
injector.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,70 +18,43 @@ package org.jetbrains.jet.analyzer;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
||||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
import org.jetbrains.jet.lang.types.ErrorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class AnalyzeExhaust {
|
public class AnalyzeExhaust {
|
||||||
private static final ModuleConfiguration ERROR_CONFIGURATION = new ModuleConfiguration() {
|
|
||||||
@Override
|
|
||||||
public List<ImportPath> getDefaultImports() {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static AnalyzeExhaust success(@NotNull BindingContext bindingContext, @NotNull ModuleDescriptor module) {
|
||||||
public void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) {
|
return new AnalyzeExhaust(bindingContext, module, null, null);
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
|
|
||||||
return PlatformToKotlinClassMap.EMPTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "ERROR_CONFIGURATION";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public static AnalyzeExhaust success(@NotNull BindingContext bindingContext, @NotNull ModuleConfiguration configuration) {
|
|
||||||
return new AnalyzeExhaust(bindingContext, configuration, null, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AnalyzeExhaust success(@NotNull BindingContext bindingContext,
|
public static AnalyzeExhaust success(@NotNull BindingContext bindingContext,
|
||||||
@Nullable BodiesResolveContext bodiesResolveContext,
|
@Nullable BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration
|
@NotNull ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return new AnalyzeExhaust(bindingContext, configuration, bodiesResolveContext, null);
|
return new AnalyzeExhaust(bindingContext, module, bodiesResolveContext, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AnalyzeExhaust error(@NotNull BindingContext bindingContext, @NotNull Throwable error) {
|
public static AnalyzeExhaust error(@NotNull BindingContext bindingContext, @NotNull Throwable error) {
|
||||||
return new AnalyzeExhaust(bindingContext, ERROR_CONFIGURATION, null, error);
|
return new AnalyzeExhaust(bindingContext, ErrorUtils.getErrorModule(), null, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final BindingContext bindingContext;
|
private final BindingContext bindingContext;
|
||||||
private final Throwable error;
|
private final Throwable error;
|
||||||
private final BodiesResolveContext bodiesResolveContext;
|
private final BodiesResolveContext bodiesResolveContext;
|
||||||
private final ModuleConfiguration configuration;
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
|
|
||||||
private AnalyzeExhaust(
|
private AnalyzeExhaust(
|
||||||
@NotNull BindingContext bindingContext,
|
@NotNull BindingContext bindingContext,
|
||||||
@NotNull ModuleConfiguration configuration,
|
@NotNull ModuleDescriptor moduleDescriptor,
|
||||||
@Nullable BodiesResolveContext bodiesResolveContext,
|
@Nullable BodiesResolveContext bodiesResolveContext,
|
||||||
@Nullable Throwable error
|
@Nullable Throwable error
|
||||||
) {
|
) {
|
||||||
this.bindingContext = bindingContext;
|
this.bindingContext = bindingContext;
|
||||||
this.error = error;
|
this.error = error;
|
||||||
this.bodiesResolveContext = bodiesResolveContext;
|
this.bodiesResolveContext = bodiesResolveContext;
|
||||||
this.configuration = configuration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -110,7 +83,7 @@ public class AnalyzeExhaust {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ModuleConfiguration getModuleConfiguration() {
|
public ModuleDescriptor getModuleDescriptor() {
|
||||||
return configuration;
|
return moduleDescriptor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import com.google.common.base.Predicate;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
@@ -47,7 +47,7 @@ public interface AnalyzerFacade {
|
|||||||
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
||||||
@NotNull BindingTrace traceContext,
|
@NotNull BindingTrace traceContext,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration
|
@NotNull ModuleDescriptor module
|
||||||
);
|
);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -21,12 +21,8 @@ import com.intellij.openapi.project.Project;
|
|||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.di.InjectorForBodyResolve;
|
import org.jetbrains.jet.di.InjectorForBodyResolve;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
|
||||||
import org.jetbrains.jet.lang.resolve.ObservableBindingTrace;
|
|
||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -39,7 +35,7 @@ public class AnalyzerFacadeForEverything {
|
|||||||
Project project, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
|
Project project, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
|
||||||
@NotNull BindingTrace traceContext,
|
@NotNull BindingTrace traceContext,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration) {
|
@NotNull ModuleDescriptor module) {
|
||||||
|
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
filesToAnalyzeCompletely, false, false, scriptParameters);
|
filesToAnalyzeCompletely, false, false, scriptParameters);
|
||||||
@@ -49,11 +45,11 @@ public class AnalyzerFacadeForEverything {
|
|||||||
InjectorForBodyResolve injector = new InjectorForBodyResolve(
|
InjectorForBodyResolve injector = new InjectorForBodyResolve(
|
||||||
project, topDownAnalysisParameters,
|
project, topDownAnalysisParameters,
|
||||||
new ObservableBindingTrace(traceContext),
|
new ObservableBindingTrace(traceContext),
|
||||||
bodiesResolveContext, configuration);
|
bodiesResolveContext, module);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
injector.getBodyResolver().resolveBodies();
|
injector.getBodyResolver().resolveBodies();
|
||||||
return AnalyzeExhaust.success(traceContext.getBindingContext(), configuration);
|
return AnalyzeExhaust.success(traceContext.getBindingContext(), module);
|
||||||
} finally {
|
} finally {
|
||||||
injector.destroy();
|
injector.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.project.Project;
|
|||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
|
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
@@ -46,7 +46,7 @@ public class InjectorForBodyResolve {
|
|||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
private final BodiesResolveContext bodiesResolveContext;
|
private final BodiesResolveContext bodiesResolveContext;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
private CallResolver callResolver;
|
private CallResolver callResolver;
|
||||||
private ArgumentTypeResolver argumentTypeResolver;
|
private ArgumentTypeResolver argumentTypeResolver;
|
||||||
private ExpressionTypingServices expressionTypingServices;
|
private ExpressionTypingServices expressionTypingServices;
|
||||||
@@ -66,14 +66,14 @@ public class InjectorForBodyResolve {
|
|||||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||||
@NotNull BindingTrace bindingTrace,
|
@NotNull BindingTrace bindingTrace,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.bodyResolver = new BodyResolver();
|
this.bodyResolver = new BodyResolver();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
this.bodiesResolveContext = bodiesResolveContext;
|
this.bodiesResolveContext = bodiesResolveContext;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices();
|
||||||
@@ -123,7 +123,7 @@ public class InjectorForBodyResolve {
|
|||||||
|
|
||||||
typeResolver.setAnnotationResolver(annotationResolver);
|
typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
typeResolver.setDescriptorResolver(descriptorResolver);
|
typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
typeResolver.setModuleConfiguration(moduleConfiguration);
|
typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ package org.jetbrains.jet.di;
|
|||||||
|
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
||||||
@@ -38,7 +38,7 @@ public class InjectorForLazyResolve {
|
|||||||
|
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final ResolveSession resolveSession;
|
private final ResolveSession resolveSession;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
private DescriptorResolver descriptorResolver;
|
private DescriptorResolver descriptorResolver;
|
||||||
private ExpressionTypingServices expressionTypingServices;
|
private ExpressionTypingServices expressionTypingServices;
|
||||||
private TypeResolver typeResolver;
|
private TypeResolver typeResolver;
|
||||||
@@ -54,11 +54,11 @@ public class InjectorForLazyResolve {
|
|||||||
public InjectorForLazyResolve(
|
public InjectorForLazyResolve(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull ResolveSession resolveSession,
|
@NotNull ResolveSession resolveSession,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.resolveSession = resolveSession;
|
this.resolveSession = resolveSession;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices();
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
@@ -83,7 +83,7 @@ public class InjectorForLazyResolve {
|
|||||||
|
|
||||||
this.typeResolver.setAnnotationResolver(annotationResolver);
|
this.typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.typeResolver.setDescriptorResolver(descriptorResolver);
|
this.typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
this.typeResolver.setModuleConfiguration(moduleConfiguration);
|
this.typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
this.annotationResolver.setCallResolver(callResolver);
|
this.annotationResolver.setCallResolver(callResolver);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ package org.jetbrains.jet.di;
|
|||||||
|
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
|
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
|
||||||
@@ -35,7 +35,7 @@ public class InjectorForMacros {
|
|||||||
|
|
||||||
private ExpressionTypingServices expressionTypingServices;
|
private ExpressionTypingServices expressionTypingServices;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
private CallExpressionResolver callExpressionResolver;
|
private CallExpressionResolver callExpressionResolver;
|
||||||
private CallResolver callResolver;
|
private CallResolver callResolver;
|
||||||
private ArgumentTypeResolver argumentTypeResolver;
|
private ArgumentTypeResolver argumentTypeResolver;
|
||||||
@@ -47,11 +47,11 @@ public class InjectorForMacros {
|
|||||||
|
|
||||||
public InjectorForMacros(
|
public InjectorForMacros(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
@@ -79,7 +79,7 @@ public class InjectorForMacros {
|
|||||||
|
|
||||||
typeResolver.setAnnotationResolver(annotationResolver);
|
typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
typeResolver.setDescriptorResolver(descriptorResolver);
|
typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
typeResolver.setModuleConfiguration(moduleConfiguration);
|
typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
annotationResolver.setCallResolver(callResolver);
|
annotationResolver.setCallResolver(callResolver);
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.di;
|
package org.jetbrains.jet.di;
|
||||||
|
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
|
||||||
|
|
||||||
public interface InjectorForTopDownAnalyzer {
|
public interface InjectorForTopDownAnalyzer {
|
||||||
ModuleConfiguration getModuleConfiguration();
|
ModuleDescriptor getModuleDescriptor();
|
||||||
|
|
||||||
TopDownAnalyzer getTopDownAnalyzer();
|
TopDownAnalyzer getTopDownAnalyzer();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.intellij.openapi.project.Project;
|
|||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||||
@@ -61,7 +60,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
private final ModuleDescriptorImpl moduleDescriptor;
|
private final ModuleDescriptorImpl moduleDescriptor;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
|
||||||
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
||||||
private NamespaceFactoryImpl namespaceFactory;
|
private NamespaceFactoryImpl namespaceFactory;
|
||||||
private DeclarationResolver declarationResolver;
|
private DeclarationResolver declarationResolver;
|
||||||
@@ -85,8 +83,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||||
@NotNull BindingTrace bindingTrace,
|
@NotNull BindingTrace bindingTrace,
|
||||||
@NotNull ModuleDescriptorImpl moduleDescriptor,
|
@NotNull ModuleDescriptorImpl moduleDescriptor
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
|
||||||
) {
|
) {
|
||||||
this.topDownAnalyzer = new TopDownAnalyzer();
|
this.topDownAnalyzer = new TopDownAnalyzer();
|
||||||
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
||||||
@@ -98,7 +95,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
|
||||||
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
this.declarationResolver = new DeclarationResolver();
|
this.declarationResolver = new DeclarationResolver();
|
||||||
@@ -150,7 +146,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
namespaceFactory.setConfiguration(moduleConfiguration);
|
|
||||||
namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
||||||
namespaceFactory.setTrace(bindingTrace);
|
namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -182,14 +177,14 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
|
|
||||||
typeResolver.setAnnotationResolver(annotationResolver);
|
typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
typeResolver.setDescriptorResolver(descriptorResolver);
|
typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
typeResolver.setModuleConfiguration(moduleConfiguration);
|
typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
||||||
|
|
||||||
importsResolver.setConfiguration(moduleConfiguration);
|
|
||||||
importsResolver.setContext(topDownAnalysisContext);
|
importsResolver.setContext(topDownAnalysisContext);
|
||||||
importsResolver.setImportsFactory(jetImportsFactory);
|
importsResolver.setImportsFactory(jetImportsFactory);
|
||||||
|
importsResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
importsResolver.setTrace(bindingTrace);
|
importsResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -261,4 +256,8 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
return this.bindingTrace;
|
return this.bindingTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ModuleDescriptorImpl getModuleDescriptor() {
|
||||||
|
return this.moduleDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,13 @@ package org.jetbrains.jet.lang.descriptors;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.ModuleConfiguration;
|
||||||
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
||||||
|
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface ModuleDescriptor extends DeclarationDescriptor, NamespaceDescriptorParent {
|
public interface ModuleDescriptor extends DeclarationDescriptor, NamespaceDescriptorParent {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -32,6 +36,12 @@ public interface ModuleDescriptor extends DeclarationDescriptor, NamespaceDescri
|
|||||||
@NotNull
|
@NotNull
|
||||||
ModuleConfiguration getModuleConfiguration();
|
ModuleConfiguration getModuleConfiguration();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
List<ImportPath> getDefaultImports();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
PlatformToKotlinClassMap getPlatformToKotlinClassMap();
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
ModuleDescriptor substitute(@NotNull TypeSubstitutor substitutor);
|
ModuleDescriptor substitute(@NotNull TypeSubstitutor substitutor);
|
||||||
|
|||||||
@@ -19,14 +19,17 @@ package org.jetbrains.jet.lang.descriptors;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.ModuleConfiguration;
|
||||||
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ClassOrNamespaceDescriptor, ModuleDescriptor {
|
public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ClassOrNamespaceDescriptor, ModuleDescriptor {
|
||||||
private NamespaceDescriptor rootNamepsace;
|
private NamespaceDescriptor rootNamepsace;
|
||||||
@@ -63,6 +66,18 @@ public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements C
|
|||||||
return moduleConfiguration;
|
return moduleConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public List<ImportPath> getDefaultImports() {
|
||||||
|
return getModuleConfiguration().getDefaultImports();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
|
||||||
|
return getModuleConfiguration().getPlatformToKotlinClassMap();
|
||||||
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ModuleDescriptorImpl setModuleConfiguration(@NotNull ModuleConfiguration moduleConfiguration) {
|
public ModuleDescriptorImpl setModuleConfiguration(@NotNull ModuleConfiguration moduleConfiguration) {
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
this.moduleConfiguration = moduleConfiguration;
|
||||||
|
|||||||
@@ -19,12 +19,8 @@ package org.jetbrains.jet.lang.resolve;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
@@ -42,7 +38,7 @@ public class ImportsResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private TopDownAnalysisContext context;
|
private TopDownAnalysisContext context;
|
||||||
@NotNull
|
@NotNull
|
||||||
private ModuleConfiguration configuration;
|
private ModuleDescriptor moduleDescriptor;
|
||||||
@NotNull
|
@NotNull
|
||||||
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -56,8 +52,8 @@ public class ImportsResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setConfiguration(@NotNull ModuleConfiguration configuration) {
|
public void setModuleDescriptor(@NotNull ModuleDescriptor moduleDescriptor) {
|
||||||
this.configuration = configuration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -95,7 +91,7 @@ public class ImportsResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void processImportsInFile(@NotNull LookupMode lookupMode, WritableScope scope, List<JetImportDirective> directives, JetScope rootScope) {
|
private void processImportsInFile(@NotNull LookupMode lookupMode, WritableScope scope, List<JetImportDirective> directives, JetScope rootScope) {
|
||||||
processImportsInFile(lookupMode, scope, directives, rootScope, configuration, trace, qualifiedExpressionResolver, importsFactory);
|
processImportsInFile(lookupMode, scope, directives, rootScope, moduleDescriptor, trace, qualifiedExpressionResolver, importsFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void processImportsInFile(
|
public static void processImportsInFile(
|
||||||
@@ -103,7 +99,7 @@ public class ImportsResolver {
|
|||||||
@NotNull WritableScope namespaceScope,
|
@NotNull WritableScope namespaceScope,
|
||||||
@NotNull List<JetImportDirective> importDirectives,
|
@NotNull List<JetImportDirective> importDirectives,
|
||||||
@NotNull JetScope rootScope,
|
@NotNull JetScope rootScope,
|
||||||
@NotNull ModuleConfiguration configuration,
|
@NotNull ModuleDescriptor module,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull QualifiedExpressionResolver qualifiedExpressionResolver,
|
@NotNull QualifiedExpressionResolver qualifiedExpressionResolver,
|
||||||
@NotNull JetImportsFactory importsFactory
|
@NotNull JetImportsFactory importsFactory
|
||||||
@@ -114,13 +110,13 @@ public class ImportsResolver {
|
|||||||
namespaceScope.clearImports();
|
namespaceScope.clearImports();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ImportPath defaultImportPath : configuration.getDefaultImports()) {
|
for (ImportPath defaultImportPath : module.getDefaultImports()) {
|
||||||
TemporaryBindingTrace temporaryTrace = TemporaryBindingTrace.create(
|
TemporaryBindingTrace temporaryTrace = TemporaryBindingTrace.create(
|
||||||
trace, "transient trace to resolve default imports"); //not to trace errors of default imports
|
trace, "transient trace to resolve default imports"); //not to trace errors of default imports
|
||||||
|
|
||||||
JetImportDirective defaultImportDirective = importsFactory.createImportDirective(defaultImportPath);
|
JetImportDirective defaultImportDirective = importsFactory.createImportDirective(defaultImportPath);
|
||||||
qualifiedExpressionResolver.processImportReference(defaultImportDirective, rootScope, namespaceScope, delayedImporter,
|
qualifiedExpressionResolver.processImportReference(defaultImportDirective, rootScope, namespaceScope, delayedImporter,
|
||||||
temporaryTrace, configuration, lookupMode);
|
temporaryTrace, module, lookupMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<JetImportDirective, Collection<? extends DeclarationDescriptor>> resolvedDirectives = Maps.newHashMap();
|
Map<JetImportDirective, Collection<? extends DeclarationDescriptor>> resolvedDirectives = Maps.newHashMap();
|
||||||
@@ -128,7 +124,7 @@ public class ImportsResolver {
|
|||||||
for (JetImportDirective importDirective : importDirectives) {
|
for (JetImportDirective importDirective : importDirectives) {
|
||||||
Collection<? extends DeclarationDescriptor> descriptors =
|
Collection<? extends DeclarationDescriptor> descriptors =
|
||||||
qualifiedExpressionResolver.processImportReference(importDirective, rootScope, namespaceScope, delayedImporter,
|
qualifiedExpressionResolver.processImportReference(importDirective, rootScope, namespaceScope, delayedImporter,
|
||||||
trace, configuration, lookupMode);
|
trace, module, lookupMode);
|
||||||
if (!descriptors.isEmpty()) {
|
if (!descriptors.isEmpty()) {
|
||||||
resolvedDirectives.put(importDirective, descriptors);
|
resolvedDirectives.put(importDirective, descriptors);
|
||||||
}
|
}
|
||||||
@@ -136,7 +132,7 @@ public class ImportsResolver {
|
|||||||
JetExpression importedReference = importDirective.getImportedReference();
|
JetExpression importedReference = importDirective.getImportedReference();
|
||||||
if (lookupMode != LookupMode.ONLY_CLASSES && importedReference != null) {
|
if (lookupMode != LookupMode.ONLY_CLASSES && importedReference != null) {
|
||||||
for (DeclarationDescriptor descriptor : descriptors) {
|
for (DeclarationDescriptor descriptor : descriptors) {
|
||||||
reportPlatformClassMappedToKotlin(configuration, trace, importedReference, descriptor);
|
reportPlatformClassMappedToKotlin(module, trace, importedReference, descriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,14 +146,14 @@ public class ImportsResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void reportPlatformClassMappedToKotlin(
|
public static void reportPlatformClassMappedToKotlin(
|
||||||
@NotNull ModuleConfiguration configuration,
|
@NotNull ModuleDescriptor module,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull JetElement element,
|
@NotNull JetElement element,
|
||||||
@NotNull DeclarationDescriptor descriptor
|
@NotNull DeclarationDescriptor descriptor
|
||||||
) {
|
) {
|
||||||
if (!(descriptor instanceof ClassDescriptor)) return;
|
if (!(descriptor instanceof ClassDescriptor)) return;
|
||||||
|
|
||||||
PlatformToKotlinClassMap platformToKotlinMap = configuration.getPlatformToKotlinClassMap();
|
PlatformToKotlinClassMap platformToKotlinMap = module.getPlatformToKotlinClassMap();
|
||||||
Collection<ClassDescriptor> kotlinAnalogsForClass = platformToKotlinMap.mapPlatformClass((ClassDescriptor) descriptor);
|
Collection<ClassDescriptor> kotlinAnalogsForClass = platformToKotlinMap.mapPlatformClass((ClassDescriptor) descriptor);
|
||||||
if (!kotlinAnalogsForClass.isEmpty()) {
|
if (!kotlinAnalogsForClass.isEmpty()) {
|
||||||
trace.report(PLATFORM_CLASS_MAPPED_TO_KOTLIN.on(element, kotlinAnalogsForClass));
|
trace.report(PLATFORM_CLASS_MAPPED_TO_KOTLIN.on(element, kotlinAnalogsForClass));
|
||||||
|
|||||||
@@ -20,13 +20,15 @@ import com.google.common.collect.Sets;
|
|||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
@@ -45,7 +47,6 @@ public class NamespaceFactoryImpl implements NamespaceFactory {
|
|||||||
|
|
||||||
private ModuleDescriptorImpl moduleDescriptor;
|
private ModuleDescriptorImpl moduleDescriptor;
|
||||||
private BindingTrace trace;
|
private BindingTrace trace;
|
||||||
private ModuleConfiguration configuration;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setModuleDescriptor(ModuleDescriptorImpl moduleDescriptor) {
|
public void setModuleDescriptor(ModuleDescriptorImpl moduleDescriptor) {
|
||||||
@@ -57,11 +58,6 @@ public class NamespaceFactoryImpl implements NamespaceFactory {
|
|||||||
this.trace = trace;
|
this.trace = trace;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setConfiguration(ModuleConfiguration configuration) {
|
|
||||||
this.configuration = configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public NamespaceDescriptorImpl createNamespaceDescriptorPathIfNeeded(@NotNull JetFile file,
|
public NamespaceDescriptorImpl createNamespaceDescriptorPathIfNeeded(@NotNull JetFile file,
|
||||||
@NotNull JetScope outerScope,
|
@NotNull JetScope outerScope,
|
||||||
@@ -190,7 +186,7 @@ public class NamespaceFactoryImpl implements NamespaceFactory {
|
|||||||
namespaceDescriptor.initialize(scope);
|
namespaceDescriptor.initialize(scope);
|
||||||
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
|
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||||
//
|
//
|
||||||
configuration.extendNamespaceScope(trace, namespaceDescriptor, scope);
|
moduleDescriptor.getModuleConfiguration().extendNamespaceScope(trace, namespaceDescriptor, scope);
|
||||||
owner.addNamespace(namespaceDescriptor);
|
owner.addNamespace(namespaceDescriptor);
|
||||||
if (expression != null) {
|
if (expression != null) {
|
||||||
trace.record(BindingContext.NAMESPACE, expression, namespaceDescriptor);
|
trace.record(BindingContext.NAMESPACE, expression, namespaceDescriptor);
|
||||||
|
|||||||
+4
-5
@@ -22,7 +22,6 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Errors;
|
import org.jetbrains.jet.lang.diagnostics.Errors;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
@@ -49,9 +48,9 @@ public class QualifiedExpressionResolver {
|
|||||||
@NotNull JetImportDirective importDirective,
|
@NotNull JetImportDirective importDirective,
|
||||||
@NotNull JetScope scope,
|
@NotNull JetScope scope,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
@NotNull ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return processImportReference(importDirective, scope, scope, Importer.DO_NOTHING, trace, moduleConfiguration, LookupMode.EVERYTHING);
|
return processImportReference(importDirective, scope, scope, Importer.DO_NOTHING, trace, module, LookupMode.EVERYTHING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -61,7 +60,7 @@ public class QualifiedExpressionResolver {
|
|||||||
@NotNull JetScope scopeToCheckVisibility,
|
@NotNull JetScope scopeToCheckVisibility,
|
||||||
@NotNull Importer importer,
|
@NotNull Importer importer,
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration,
|
@NotNull ModuleDescriptor module,
|
||||||
@NotNull LookupMode lookupMode
|
@NotNull LookupMode lookupMode
|
||||||
) {
|
) {
|
||||||
if (importDirective.isAbsoluteInRootNamespace()) {
|
if (importDirective.isAbsoluteInRootNamespace()) {
|
||||||
@@ -94,7 +93,7 @@ public class QualifiedExpressionResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (DeclarationDescriptor descriptor : descriptors) {
|
for (DeclarationDescriptor descriptor : descriptors) {
|
||||||
importer.addAllUnderImport(descriptor, moduleConfiguration.getPlatformToKotlinClassMap());
|
importer.addAllUnderImport(descriptor, module.getPlatformToKotlinClassMap());
|
||||||
}
|
}
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ public class TopDownAnalyzer {
|
|||||||
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
|
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
||||||
project, topDownAnalysisParameters, new ObservableBindingTrace(trace),
|
project, topDownAnalysisParameters, new ObservableBindingTrace(trace),
|
||||||
KotlinBuiltIns.getInstance().getBuiltInsModule(), ModuleConfiguration.EMPTY);
|
KotlinBuiltIns.getInstance().getBuiltInsModule());
|
||||||
|
|
||||||
injector.getTopDownAnalyzer().doProcessStandardLibraryNamespace(outerScope, standardLibraryNamespace, files);
|
injector.getTopDownAnalyzer().doProcessStandardLibraryNamespace(outerScope, standardLibraryNamespace, files);
|
||||||
}
|
}
|
||||||
@@ -194,8 +194,7 @@ public class TopDownAnalyzer {
|
|||||||
false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
|
|
||||||
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
||||||
project, topDownAnalysisParameters, new ObservableBindingTrace(trace), moduleDescriptor,
|
project, topDownAnalysisParameters, new ObservableBindingTrace(trace), moduleDescriptor);
|
||||||
ModuleConfiguration.EMPTY);
|
|
||||||
|
|
||||||
injector.getTopDownAnalyzer().doProcess(outerScope, new NamespaceLikeBuilder() {
|
injector.getTopDownAnalyzer().doProcess(outerScope, new NamespaceLikeBuilder() {
|
||||||
|
|
||||||
|
|||||||
@@ -19,11 +19,7 @@ package org.jetbrains.jet.lang.resolve;
|
|||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
@@ -46,7 +42,7 @@ public class TypeResolver {
|
|||||||
private AnnotationResolver annotationResolver;
|
private AnnotationResolver annotationResolver;
|
||||||
private DescriptorResolver descriptorResolver;
|
private DescriptorResolver descriptorResolver;
|
||||||
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
||||||
private ModuleConfiguration moduleConfiguration;
|
private ModuleDescriptor moduleDescriptor;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setDescriptorResolver(DescriptorResolver descriptorResolver) {
|
public void setDescriptorResolver(DescriptorResolver descriptorResolver) {
|
||||||
@@ -64,8 +60,8 @@ public class TypeResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setModuleConfiguration(@NotNull ModuleConfiguration moduleConfiguration) {
|
public void setModuleDescriptor(@NotNull ModuleDescriptor moduleDescriptor) {
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -333,7 +329,7 @@ public class TypeResolver {
|
|||||||
Collection<? extends DeclarationDescriptor> descriptors = qualifiedExpressionResolver.lookupDescriptorsForUserType(userType, scope, trace);
|
Collection<? extends DeclarationDescriptor> descriptors = qualifiedExpressionResolver.lookupDescriptorsForUserType(userType, scope, trace);
|
||||||
for (DeclarationDescriptor descriptor : descriptors) {
|
for (DeclarationDescriptor descriptor : descriptors) {
|
||||||
if (descriptor instanceof ClassifierDescriptor) {
|
if (descriptor instanceof ClassifierDescriptor) {
|
||||||
ImportsResolver.reportPlatformClassMappedToKotlin(moduleConfiguration, trace, userType, descriptor);
|
ImportsResolver.reportPlatformClassMappedToKotlin(moduleDescriptor, trace, userType, descriptor);
|
||||||
return (ClassifierDescriptor) descriptor;
|
return (ClassifierDescriptor) descriptor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve.lazy;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
@@ -32,9 +31,6 @@ import org.jetbrains.jet.lang.resolve.name.Name;
|
|||||||
public interface KotlinCodeAnalyzer {
|
public interface KotlinCodeAnalyzer {
|
||||||
ModuleDescriptor getRootModuleDescriptor();
|
ModuleDescriptor getRootModuleDescriptor();
|
||||||
|
|
||||||
@NotNull
|
|
||||||
ModuleConfiguration getModuleConfiguration();
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
NamespaceDescriptor getPackageDescriptor(@NotNull Name shortName);
|
NamespaceDescriptor getPackageDescriptor(@NotNull Name shortName);
|
||||||
|
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ public class LazyImportScope implements JetScope {
|
|||||||
packageDescriptor.getMemberScope(),
|
packageDescriptor.getMemberScope(),
|
||||||
importer,
|
importer,
|
||||||
traceForImportResolve,
|
traceForImportResolve,
|
||||||
resolveSession.getModuleConfiguration(),
|
resolveSession.getRootModuleDescriptor(),
|
||||||
lookupMode);
|
lookupMode);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
|||||||
@@ -25,11 +25,12 @@ import com.intellij.util.Function;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.di.InjectorForLazyResolve;
|
import org.jetbrains.jet.di.InjectorForLazyResolve;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies;
|
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
|
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.lazy.declarations.PackageMemberDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
||||||
@@ -65,18 +66,16 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
|
|
||||||
|
|
||||||
private final InjectorForLazyResolve injector;
|
private final InjectorForLazyResolve injector;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
|
||||||
|
|
||||||
private final Function<FqName, Name> classifierAliases;
|
private final Function<FqName, Name> classifierAliases;
|
||||||
|
|
||||||
public ResolveSession(
|
public ResolveSession(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull StorageManager storageManager,
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull ModuleDescriptorImpl rootDescriptor,
|
@NotNull ModuleDescriptorImpl rootDescriptor,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration,
|
@NotNull DeclarationProviderFactory declarationProviderFactory
|
||||||
@NotNull DeclarationProviderFactory declarationProviderFactory
|
|
||||||
) {
|
) {
|
||||||
this(project, storageManager, rootDescriptor, moduleConfiguration, declarationProviderFactory, NO_ALIASES,
|
this(project, storageManager, rootDescriptor, declarationProviderFactory, NO_ALIASES,
|
||||||
Predicates.<FqNameUnsafe>alwaysFalse(),
|
Predicates.<FqNameUnsafe>alwaysFalse(),
|
||||||
new BindingTraceContext());
|
new BindingTraceContext());
|
||||||
}
|
}
|
||||||
@@ -85,14 +84,12 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull StorageManager storageManager,
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull ModuleDescriptorImpl rootDescriptor,
|
@NotNull ModuleDescriptorImpl rootDescriptor,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration,
|
|
||||||
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
||||||
@NotNull BindingTrace delegationTrace
|
@NotNull BindingTrace delegationTrace
|
||||||
) {
|
) {
|
||||||
this(project,
|
this(project,
|
||||||
storageManager,
|
storageManager,
|
||||||
rootDescriptor,
|
rootDescriptor,
|
||||||
moduleConfiguration,
|
|
||||||
declarationProviderFactory,
|
declarationProviderFactory,
|
||||||
NO_ALIASES,
|
NO_ALIASES,
|
||||||
Predicates.<FqNameUnsafe>alwaysFalse(),
|
Predicates.<FqNameUnsafe>alwaysFalse(),
|
||||||
@@ -104,7 +101,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull StorageManager storageManager,
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull ModuleDescriptorImpl rootDescriptor,
|
@NotNull ModuleDescriptorImpl rootDescriptor,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration,
|
|
||||||
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
@NotNull DeclarationProviderFactory declarationProviderFactory,
|
||||||
@NotNull Function<FqName, Name> classifierAliases,
|
@NotNull Function<FqName, Name> classifierAliases,
|
||||||
@NotNull Predicate<FqNameUnsafe> specialClasses,
|
@NotNull Predicate<FqNameUnsafe> specialClasses,
|
||||||
@@ -114,9 +110,8 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
this.classifierAliases = classifierAliases;
|
this.classifierAliases = classifierAliases;
|
||||||
this.specialClasses = specialClasses;
|
this.specialClasses = specialClasses;
|
||||||
this.trace = storageManager.createSafeTrace(delegationTrace);
|
this.trace = storageManager.createSafeTrace(delegationTrace);
|
||||||
this.injector = new InjectorForLazyResolve(project, this, moduleConfiguration);
|
this.injector = new InjectorForLazyResolve(project, this, rootDescriptor);
|
||||||
this.module = rootDescriptor;
|
this.module = rootDescriptor;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
|
||||||
PackageMemberDeclarationProvider provider = declarationProviderFactory.getPackageMemberDeclarationProvider(FqName.ROOT);
|
PackageMemberDeclarationProvider provider = declarationProviderFactory.getPackageMemberDeclarationProvider(FqName.ROOT);
|
||||||
assert provider != null : "No declaration provider for root package in " + rootDescriptor;
|
assert provider != null : "No declaration provider for root package in " + rootDescriptor;
|
||||||
this.rootPackage = new LazyPackageDescriptor(rootDescriptor, FqNameUnsafe.ROOT_NAME, this, provider);
|
this.rootPackage = new LazyPackageDescriptor(rootDescriptor, FqNameUnsafe.ROOT_NAME, this, provider);
|
||||||
@@ -144,12 +139,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
return storageManager;
|
return storageManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@NotNull
|
|
||||||
public ModuleConfiguration getModuleConfiguration() {
|
|
||||||
return moduleConfiguration;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public NamespaceDescriptor getPackageDescriptor(@NotNull Name shortName) {
|
public NamespaceDescriptor getPackageDescriptor(@NotNull Name shortName) {
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.intellij.psi.util.PsiTreeUtil;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.di.InjectorForBodyResolve;
|
import org.jetbrains.jet.di.InjectorForBodyResolve;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
|
import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor;
|
||||||
@@ -161,7 +160,7 @@ public class ResolveSessionUtils {
|
|||||||
private static void delegationSpecifierAdditionalResolve(
|
private static void delegationSpecifierAdditionalResolve(
|
||||||
KotlinCodeAnalyzer analyzer,
|
KotlinCodeAnalyzer analyzer,
|
||||||
JetDelegationSpecifierList specifier, DelegatingBindingTrace trace, JetFile file) {
|
JetDelegationSpecifierList specifier, DelegatingBindingTrace trace, JetFile file) {
|
||||||
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getModuleConfiguration());
|
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getRootModuleDescriptor());
|
||||||
|
|
||||||
JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent();
|
JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent();
|
||||||
LazyClassDescriptor descriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor descriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
||||||
@@ -186,7 +185,7 @@ public class ResolveSessionUtils {
|
|||||||
return propertyResolutionScope;
|
return propertyResolutionScope;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
BodyResolver bodyResolver = createBodyResolver(trace, file, bodyResolveContext, resolveSession.getModuleConfiguration());
|
BodyResolver bodyResolver = createBodyResolver(trace, file, bodyResolveContext, resolveSession.getRootModuleDescriptor());
|
||||||
PropertyDescriptor descriptor = (PropertyDescriptor) resolveSession.resolveToDescriptor(jetProperty);
|
PropertyDescriptor descriptor = (PropertyDescriptor) resolveSession.resolveToDescriptor(jetProperty);
|
||||||
|
|
||||||
JetExpression propertyInitializer = jetProperty.getInitializer();
|
JetExpression propertyInitializer = jetProperty.getInitializer();
|
||||||
@@ -204,7 +203,7 @@ public class ResolveSessionUtils {
|
|||||||
DelegatingBindingTrace trace,
|
DelegatingBindingTrace trace,
|
||||||
JetFile file
|
JetFile file
|
||||||
) {
|
) {
|
||||||
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, resolveSession.getModuleConfiguration());
|
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, resolveSession.getRootModuleDescriptor());
|
||||||
JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(namedFunction);
|
JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(namedFunction);
|
||||||
FunctionDescriptor functionDescriptor = (FunctionDescriptor) resolveSession.resolveToDescriptor(namedFunction);
|
FunctionDescriptor functionDescriptor = (FunctionDescriptor) resolveSession.resolveToDescriptor(namedFunction);
|
||||||
bodyResolver.resolveFunctionBody(trace, namedFunction, functionDescriptor, scope);
|
bodyResolver.resolveFunctionBody(trace, namedFunction, functionDescriptor, scope);
|
||||||
@@ -216,7 +215,7 @@ public class ResolveSessionUtils {
|
|||||||
DelegatingBindingTrace trace,
|
DelegatingBindingTrace trace,
|
||||||
JetFile file
|
JetFile file
|
||||||
) {
|
) {
|
||||||
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getModuleConfiguration());
|
BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getRootModuleDescriptor());
|
||||||
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class);
|
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class);
|
||||||
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
||||||
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
||||||
@@ -226,19 +225,19 @@ public class ResolveSessionUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static BodyResolver createBodyResolver(DelegatingBindingTrace trace, JetFile file, BodyResolveContextForLazy bodyResolveContext,
|
private static BodyResolver createBodyResolver(DelegatingBindingTrace trace, JetFile file, BodyResolveContextForLazy bodyResolveContext,
|
||||||
ModuleConfiguration moduleConfiguration) {
|
ModuleDescriptor module) {
|
||||||
TopDownAnalysisParameters parameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters parameters = new TopDownAnalysisParameters(
|
||||||
Predicates.<PsiFile>alwaysTrue(), false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
Predicates.<PsiFile>alwaysTrue(), false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(file.getProject(), parameters, trace, bodyResolveContext, moduleConfiguration);
|
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(file.getProject(), parameters, trace, bodyResolveContext, module);
|
||||||
return bodyResolve.getBodyResolver();
|
return bodyResolve.getBodyResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BodyResolver createBodyResolverWithEmptyContext(
|
private static BodyResolver createBodyResolverWithEmptyContext(
|
||||||
DelegatingBindingTrace trace,
|
DelegatingBindingTrace trace,
|
||||||
JetFile file,
|
JetFile file,
|
||||||
ModuleConfiguration moduleConfiguration
|
ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return createBodyResolver(trace, file, EMPTY_CONTEXT, moduleConfiguration);
|
return createBodyResolver(trace, file, EMPTY_CONTEXT, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ public class ScopeProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JetImportsFactory importsFactory = resolveSession.getInjector().getJetImportsFactory();
|
JetImportsFactory importsFactory = resolveSession.getInjector().getJetImportsFactory();
|
||||||
List<ImportPath> defaultImports = resolveSession.getModuleConfiguration().getDefaultImports();
|
List<ImportPath> defaultImports = resolveSession.getRootModuleDescriptor().getDefaultImports();
|
||||||
|
|
||||||
Collection<JetImportDirective> defaultImportDirectives = importsFactory.createImportDirectives(defaultImports);
|
Collection<JetImportDirective> defaultImportDirectives = importsFactory.createImportDirectives(defaultImports);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ public class LazyPackageDescriptor extends AbstractNamespaceDescriptorImpl imple
|
|||||||
super(containingDeclaration, Collections.<AnnotationDescriptor>emptyList(), name);
|
super(containingDeclaration, Collections.<AnnotationDescriptor>emptyList(), name);
|
||||||
|
|
||||||
WritableScopeImpl scope = new WritableScopeImpl(JetScope.EMPTY, this, RedeclarationHandler.DO_NOTHING, "Package scope");
|
WritableScopeImpl scope = new WritableScopeImpl(JetScope.EMPTY, this, RedeclarationHandler.DO_NOTHING, "Package scope");
|
||||||
resolveSession.getModuleConfiguration().extendNamespaceScope(resolveSession.getTrace(), this, scope);
|
resolveSession.getRootModuleDescriptor().getModuleConfiguration().extendNamespaceScope(resolveSession.getTrace(), this, scope);
|
||||||
scope.changeLockLevel(WritableScope.LockLevel.READING);
|
scope.changeLockLevel(WritableScope.LockLevel.READING);
|
||||||
|
|
||||||
this.lazyScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this);
|
this.lazyScope = new LazyPackageMemberScope(resolveSession, declarationProvider, this);
|
||||||
|
|||||||
@@ -309,5 +309,9 @@ public class ErrorUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ModuleDescriptor getErrorModule() {
|
||||||
|
return ERROR_MODULE;
|
||||||
|
}
|
||||||
|
|
||||||
private ErrorUtils() {}
|
private ErrorUtils() {}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -244,12 +244,12 @@ public class ExpressionTypingUtils {
|
|||||||
@NotNull JetExpression receiverExpression,
|
@NotNull JetExpression receiverExpression,
|
||||||
@NotNull JetType receiverType,
|
@NotNull JetType receiverType,
|
||||||
@NotNull JetScope scope,
|
@NotNull JetScope scope,
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
@NotNull ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
JetImportDirective importDirective = JetPsiFactory.createImportDirective(project, callableFQN.getFqName());
|
JetImportDirective importDirective = JetPsiFactory.createImportDirective(project, callableFQN.getFqName());
|
||||||
|
|
||||||
Collection<? extends DeclarationDescriptor> declarationDescriptors = new QualifiedExpressionResolver()
|
Collection<? extends DeclarationDescriptor> declarationDescriptors = new QualifiedExpressionResolver()
|
||||||
.analyseImportReference(importDirective, scope, new BindingTraceContext(), moduleConfiguration);
|
.analyseImportReference(importDirective, scope, new BindingTraceContext(), module);
|
||||||
|
|
||||||
List<CallableDescriptor> callableExtensionDescriptors = new ArrayList<CallableDescriptor>();
|
List<CallableDescriptor> callableExtensionDescriptors = new ArrayList<CallableDescriptor>();
|
||||||
ReceiverValue receiverValue = new ExpressionReceiver(receiverExpression, receiverType);
|
ReceiverValue receiverValue = new ExpressionReceiver(receiverExpression, receiverType);
|
||||||
|
|||||||
@@ -229,7 +229,6 @@ public class KotlinBuiltIns {
|
|||||||
project,
|
project,
|
||||||
storageManager,
|
storageManager,
|
||||||
builtInsModule,
|
builtInsModule,
|
||||||
SpecialModuleConfiguration.INSTANCE,
|
|
||||||
new FileBasedDeclarationProviderFactory(storageManager, files),
|
new FileBasedDeclarationProviderFactory(storageManager, files),
|
||||||
ResolveSession.NO_ALIASES,
|
ResolveSession.NO_ALIASES,
|
||||||
Predicates.in(Sets.newHashSet(new FqNameUnsafe("jet.Any"), new FqNameUnsafe("jet.Nothing"))),
|
Predicates.in(Sets.newHashSet(new FqNameUnsafe("jet.Any"), new FqNameUnsafe("jet.Nothing"))),
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
|
|||||||
import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations;
|
import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations;
|
||||||
import org.jetbrains.jet.config.CommonConfigurationKeys;
|
import org.jetbrains.jet.config.CommonConfigurationKeys;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
|
import org.jetbrains.jet.lang.ModuleConfiguration;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Errors;
|
import org.jetbrains.jet.lang.diagnostics.Errors;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Severity;
|
import org.jetbrains.jet.lang.diagnostics.Severity;
|
||||||
@@ -50,6 +53,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
|
|||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.plugin.JetLanguage;
|
import org.jetbrains.jet.plugin.JetLanguage;
|
||||||
import org.jetbrains.jet.test.InnerTestClasses;
|
import org.jetbrains.jet.test.InnerTestClasses;
|
||||||
import org.jetbrains.jet.test.TestMetadata;
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
@@ -553,4 +557,10 @@ public class JetTestUtils {
|
|||||||
String text = FileUtil.loadFile(ioFile);
|
String text = FileUtil.loadFile(ioFile);
|
||||||
return JetPsiFactory.createPhysicalFile(project, ioFile.getName(), text);
|
return JetPsiFactory.createPhysicalFile(project, ioFile.getName(), text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ModuleDescriptor createEmptyModule() {
|
||||||
|
ModuleDescriptorImpl descriptor = new ModuleDescriptorImpl(Name.special("<empty-for-test>"));
|
||||||
|
descriptor.setModuleConfiguration(ModuleConfiguration.EMPTY);
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
|||||||
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
|
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
|
||||||
@@ -39,8 +39,8 @@ public class InjectorForTests {
|
|||||||
private TypeResolver typeResolver;
|
private TypeResolver typeResolver;
|
||||||
private CallResolver callResolver;
|
private CallResolver callResolver;
|
||||||
private KotlinBuiltIns kotlinBuiltIns;
|
private KotlinBuiltIns kotlinBuiltIns;
|
||||||
private ModuleConfiguration moduleConfiguration;
|
|
||||||
private final Project project;
|
private final Project project;
|
||||||
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
private AnnotationResolver annotationResolver;
|
private AnnotationResolver annotationResolver;
|
||||||
private CallExpressionResolver callExpressionResolver;
|
private CallExpressionResolver callExpressionResolver;
|
||||||
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
||||||
@@ -48,15 +48,16 @@ public class InjectorForTests {
|
|||||||
private CandidateResolver candidateResolver;
|
private CandidateResolver candidateResolver;
|
||||||
|
|
||||||
public InjectorForTests(
|
public InjectorForTests(
|
||||||
@NotNull Project project
|
@NotNull Project project,
|
||||||
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices();
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
|
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
|
||||||
this.moduleConfiguration = ModuleConfiguration.EMPTY;
|
|
||||||
this.project = project;
|
this.project = project;
|
||||||
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||||
@@ -75,7 +76,7 @@ public class InjectorForTests {
|
|||||||
|
|
||||||
this.typeResolver.setAnnotationResolver(annotationResolver);
|
this.typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.typeResolver.setDescriptorResolver(descriptorResolver);
|
this.typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
this.typeResolver.setModuleConfiguration(moduleConfiguration);
|
this.typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
this.callResolver.setArgumentTypeResolver(argumentTypeResolver);
|
this.callResolver.setArgumentTypeResolver(argumentTypeResolver);
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
|||||||
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
||||||
trace,
|
trace,
|
||||||
moduleDescriptor);
|
moduleDescriptor);
|
||||||
moduleDescriptor.setModuleConfiguration(injectorForAnalyzer.getModuleConfiguration());
|
moduleDescriptor.setModuleConfiguration(injectorForAnalyzer.getJavaBridgeConfiguration());
|
||||||
|
|
||||||
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
|
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -55,10 +55,10 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
|
|||||||
Collection<JetFile> files = Lists.newArrayList(psiFile);
|
Collection<JetFile> files = Lists.newArrayList(psiFile);
|
||||||
|
|
||||||
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
||||||
lazyModule.setModuleConfiguration(injectorForTopDownAnalyzer.getModuleConfiguration());
|
lazyModule.setModuleConfiguration(injectorForTopDownAnalyzer.getModuleDescriptor().getModuleConfiguration());
|
||||||
LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
||||||
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule, injectorForTopDownAnalyzer.getModuleConfiguration(),
|
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule,
|
||||||
new FileBasedDeclarationProviderFactory(storageManager, files));
|
new FileBasedDeclarationProviderFactory(storageManager, files));
|
||||||
|
|
||||||
final List<DeclarationDescriptor> descriptors = new ArrayList<DeclarationDescriptor>();
|
final List<DeclarationDescriptor> descriptors = new ArrayList<DeclarationDescriptor>();
|
||||||
psiFile.accept(new JetVisitorVoid() {
|
psiFile.accept(new JetVisitorVoid() {
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ public class LazyResolveTestUtil {
|
|||||||
ModuleDescriptorImpl eagerModuleForLazy = new ModuleDescriptorImpl(Name.special("<eager module for lazy>"));
|
ModuleDescriptorImpl eagerModuleForLazy = new ModuleDescriptorImpl(Name.special("<eager module for lazy>"));
|
||||||
|
|
||||||
InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(eagerModuleForLazy, environment);
|
InjectorForTopDownAnalyzer tdaInjectorForLazy = createInjectorForTDA(eagerModuleForLazy, environment);
|
||||||
eagerModuleForLazy.setModuleConfiguration(tdaInjectorForLazy.getModuleConfiguration());
|
|
||||||
// This line is required fro the 'jet' namespace to be filled in with functions
|
// This line is required fro the 'jet' namespace to be filled in with functions
|
||||||
tdaInjectorForLazy.getTopDownAnalyzer().analyzeFiles(
|
tdaInjectorForLazy.getTopDownAnalyzer().analyzeFiles(
|
||||||
Collections.singletonList(JetPsiFactory.createFile(environment.getProject(), "")), Collections.<AnalyzerScriptParameter>emptyList());
|
Collections.singletonList(JetPsiFactory.createFile(environment.getProject(), "")), Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
@@ -76,13 +75,14 @@ public class LazyResolveTestUtil {
|
|||||||
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
|
||||||
Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
|
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
|
||||||
return new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, module);
|
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, module);
|
||||||
|
module.setModuleConfiguration(injector.getJavaBridgeConfiguration());
|
||||||
|
return injector;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
|
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
|
||||||
ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<test module>"));
|
ModuleDescriptorImpl module = new ModuleDescriptorImpl(Name.special("<test module>"));
|
||||||
InjectorForTopDownAnalyzer injector = createInjectorForTDA(module, environment);
|
InjectorForTopDownAnalyzer injector = createInjectorForTDA(module, environment);
|
||||||
module.setModuleConfiguration(injector.getModuleConfiguration());
|
|
||||||
injector.getTopDownAnalyzer().analyzeFiles(files, Collections.<AnalyzerScriptParameter>emptyList());
|
injector.getTopDownAnalyzer().analyzeFiles(files, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
@@ -143,7 +143,7 @@ public class LazyResolveTestUtil {
|
|||||||
|
|
||||||
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
||||||
lazyModule.setModuleConfiguration(moduleConfiguration);
|
lazyModule.setModuleConfiguration(moduleConfiguration);
|
||||||
return new ResolveSession(project, storageManager, lazyModule, moduleConfiguration, declarationProviderFactory, sharedTrace);
|
return new ResolveSession(project, storageManager, lazyModule, declarationProviderFactory, sharedTrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ModuleDescriptor resolveLazily(List<JetFile> files, JetCoreEnvironment environment) {
|
public static ModuleDescriptor resolveLazily(List<JetFile> files, JetCoreEnvironment environment) {
|
||||||
|
|||||||
@@ -20,12 +20,10 @@ import com.intellij.openapi.project.Project;
|
|||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import junit.framework.Assert;
|
import junit.framework.Assert;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaSemanticServices;
|
import org.jetbrains.jet.di.InjectorForJavaSemanticServices;
|
||||||
import org.jetbrains.jet.di.InjectorForTests;
|
import org.jetbrains.jet.di.InjectorForTests;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition;
|
import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition;
|
||||||
@@ -129,7 +127,8 @@ public class JetExpectedResolveDataUtil {
|
|||||||
Project project,
|
Project project,
|
||||||
JetType... parameterTypes
|
JetType... parameterTypes
|
||||||
) {
|
) {
|
||||||
ExpressionTypingServices expressionTypingServices = new InjectorForTests(project).getExpressionTypingServices();
|
ModuleDescriptor emptyModule = JetTestUtils.createEmptyModule();
|
||||||
|
ExpressionTypingServices expressionTypingServices = new InjectorForTests(project, emptyModule).getExpressionTypingServices();
|
||||||
|
|
||||||
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
ExpressionTypingContext context = ExpressionTypingContext.newContext(
|
||||||
expressionTypingServices, new BindingTraceContext(), classDescriptor.getDefaultType().getMemberScope(),
|
expressionTypingServices, new BindingTraceContext(), classDescriptor.getDefaultType().getMemberScope(),
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
|
|||||||
private JetScope scope;
|
private JetScope scope;
|
||||||
|
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
InjectorForTests injector = new InjectorForTests(getProject());
|
InjectorForTests injector = new InjectorForTests(getProject(), root);
|
||||||
KotlinBuiltIns builtIns = injector.getKotlinBuiltIns();
|
KotlinBuiltIns builtIns = injector.getKotlinBuiltIns();
|
||||||
descriptorResolver = injector.getDescriptorResolver();
|
descriptorResolver = injector.getDescriptorResolver();
|
||||||
scope = createScope(builtIns.getBuiltInsScope());
|
scope = createScope(builtIns.getBuiltInsScope());
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class JetOverloadTest extends JetLiteFixture {
|
|||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
InjectorForTests injector = new InjectorForTests(getProject());
|
InjectorForTests injector = new InjectorForTests(getProject(), root);
|
||||||
builtIns = injector.getKotlinBuiltIns();
|
builtIns = injector.getKotlinBuiltIns();
|
||||||
descriptorResolver = injector.getDescriptorResolver();
|
descriptorResolver = injector.getDescriptorResolver();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class JetOverridingTest extends JetLiteFixture {
|
|||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
InjectorForTests injector = new InjectorForTests(getProject());
|
InjectorForTests injector = new InjectorForTests(getProject(), root);
|
||||||
builtIns = injector.getKotlinBuiltIns();
|
builtIns = injector.getKotlinBuiltIns();
|
||||||
descriptorResolver = injector.getDescriptorResolver();
|
descriptorResolver = injector.getDescriptorResolver();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
|||||||
|
|
||||||
builtIns = KotlinBuiltIns.getInstance();
|
builtIns = KotlinBuiltIns.getInstance();
|
||||||
|
|
||||||
InjectorForTests injector = new InjectorForTests(getProject());
|
InjectorForTests injector = new InjectorForTests(getProject(), JetTestUtils.createEmptyModule());
|
||||||
descriptorResolver = injector.getDescriptorResolver();
|
descriptorResolver = injector.getDescriptorResolver();
|
||||||
typeResolver = injector.getTypeResolver();
|
typeResolver = injector.getTypeResolver();
|
||||||
expressionTypingServices = injector.getExpressionTypingServices();
|
expressionTypingServices = injector.getExpressionTypingServices();
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.intellij.util.Function;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.di.InjectorForTests;
|
import org.jetbrains.jet.di.InjectorForTests;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
@@ -65,7 +66,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment {
|
|||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
|
|
||||||
injector = new InjectorForTests(getProject());
|
injector = new InjectorForTests(getProject(), JetTestUtils.createEmptyModule());
|
||||||
scope = getContextScope();
|
scope = getContextScope();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
|||||||
import org.jetbrains.jet.di.DependencyInjectorGenerator;
|
import org.jetbrains.jet.di.DependencyInjectorGenerator;
|
||||||
import org.jetbrains.jet.di.GivenExpression;
|
import org.jetbrains.jet.di.GivenExpression;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
||||||
import org.jetbrains.jet.di.InstantiateType;
|
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||||
@@ -70,7 +68,7 @@ public class GenerateInjectors {
|
|||||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||||
generator.addParameter(Project.class);
|
generator.addParameter(Project.class);
|
||||||
generator.addParameter(ResolveSession.class);
|
generator.addParameter(ResolveSession.class);
|
||||||
generator.addParameter(ModuleConfiguration.class);
|
generator.addParameter(ModuleDescriptor.class);
|
||||||
generator.addPublicField(DescriptorResolver.class);
|
generator.addPublicField(DescriptorResolver.class);
|
||||||
generator.addPublicField(ExpressionTypingServices.class);
|
generator.addPublicField(ExpressionTypingServices.class);
|
||||||
generator.addPublicField(TypeResolver.class);
|
generator.addPublicField(TypeResolver.class);
|
||||||
@@ -84,7 +82,6 @@ public class GenerateInjectors {
|
|||||||
private static void generateInjectorForTopDownAnalyzerBasic() throws IOException {
|
private static void generateInjectorForTopDownAnalyzerBasic() throws IOException {
|
||||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||||
generateInjectorForTopDownAnalyzerCommon(generator);
|
generateInjectorForTopDownAnalyzerCommon(generator);
|
||||||
generator.addParameter(ModuleConfiguration.class);
|
|
||||||
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
||||||
generator.addField(NamespaceFactoryImpl.class);
|
generator.addField(NamespaceFactoryImpl.class);
|
||||||
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", GenerateInjectors.class);
|
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", GenerateInjectors.class);
|
||||||
@@ -93,7 +90,6 @@ public class GenerateInjectors {
|
|||||||
private static void generateInjectorForTopDownAnalyzerForJs() throws IOException {
|
private static void generateInjectorForTopDownAnalyzerForJs() throws IOException {
|
||||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||||
generateInjectorForTopDownAnalyzerCommon(generator);
|
generateInjectorForTopDownAnalyzerCommon(generator);
|
||||||
generator.addPublicParameter(ModuleConfiguration.class);
|
|
||||||
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class);
|
||||||
generator.addField(NamespaceFactoryImpl.class);
|
generator.addField(NamespaceFactoryImpl.class);
|
||||||
generator.generate("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", GenerateInjectors.class);
|
generator.generate("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", GenerateInjectors.class);
|
||||||
@@ -103,7 +99,7 @@ public class GenerateInjectors {
|
|||||||
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
DependencyInjectorGenerator generator = new DependencyInjectorGenerator();
|
||||||
generator.implementInterface(InjectorForTopDownAnalyzer.class);
|
generator.implementInterface(InjectorForTopDownAnalyzer.class);
|
||||||
generateInjectorForTopDownAnalyzerCommon(generator);
|
generateInjectorForTopDownAnalyzerCommon(generator);
|
||||||
generator.addField(true, ModuleConfiguration.class, null, new InstantiateType(JavaBridgeConfiguration.class));
|
generator.addPublicField(JavaBridgeConfiguration.class);
|
||||||
generator.addField(JavaDescriptorResolver.class);
|
generator.addField(JavaDescriptorResolver.class);
|
||||||
generator.addField(PsiClassFinderImpl.class);
|
generator.addField(PsiClassFinderImpl.class);
|
||||||
generator.addPublicField(NamespaceFactoryImpl.class);
|
generator.addPublicField(NamespaceFactoryImpl.class);
|
||||||
@@ -142,7 +138,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
||||||
generator.addPublicParameter(BindingTrace.class);
|
generator.addPublicParameter(BindingTrace.class);
|
||||||
generator.addParameter(ModuleDescriptorImpl.class);
|
generator.addPublicParameter(ModuleDescriptorImpl.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void generateMacroInjector() throws IOException {
|
private static void generateMacroInjector() throws IOException {
|
||||||
@@ -153,7 +149,7 @@ public class GenerateInjectors {
|
|||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
generator.addParameter(ModuleConfiguration.class);
|
generator.addParameter(ModuleDescriptor.class);
|
||||||
|
|
||||||
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", GenerateInjectors.class);
|
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", GenerateInjectors.class);
|
||||||
}
|
}
|
||||||
@@ -167,10 +163,10 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(TypeResolver.class);
|
generator.addPublicField(TypeResolver.class);
|
||||||
generator.addPublicField(CallResolver.class);
|
generator.addPublicField(CallResolver.class);
|
||||||
generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()"));
|
generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()"));
|
||||||
generator.addField(false, ModuleConfiguration.class, null, new GivenExpression("ModuleConfiguration.EMPTY"));
|
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
|
generator.addParameter(ModuleDescriptor.class);
|
||||||
|
|
||||||
generator.generate("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", GenerateInjectors.class);
|
generator.generate("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", GenerateInjectors.class);
|
||||||
}
|
}
|
||||||
@@ -229,7 +225,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
||||||
generator.addPublicParameter(BindingTrace.class);
|
generator.addPublicParameter(BindingTrace.class);
|
||||||
generator.addPublicParameter(BodiesResolveContext.class);
|
generator.addPublicParameter(BodiesResolveContext.class);
|
||||||
generator.addParameter(ModuleConfiguration.class);
|
generator.addParameter(ModuleDescriptor.class);
|
||||||
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", GenerateInjectors.class);
|
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", GenerateInjectors.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,7 +236,7 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
if (functionFQN != null) {
|
if (functionFQN != null) {
|
||||||
JetImportDirective importDirective = JetPsiFactory.createImportDirective(project, new ImportPath(functionFQN, false));
|
JetImportDirective importDirective = JetPsiFactory.createImportDirective(project, new ImportPath(functionFQN, false));
|
||||||
Collection<? extends DeclarationDescriptor> declarationDescriptors = new QualifiedExpressionResolver().analyseImportReference(
|
Collection<? extends DeclarationDescriptor> declarationDescriptors = new QualifiedExpressionResolver().analyseImportReference(
|
||||||
importDirective, jetScope, new BindingTraceContext(), resolveSession.getModuleConfiguration());
|
importDirective, jetScope, new BindingTraceContext(), resolveSession.getRootModuleDescriptor());
|
||||||
for (DeclarationDescriptor declarationDescriptor : declarationDescriptors) {
|
for (DeclarationDescriptor declarationDescriptor : declarationDescriptors) {
|
||||||
if (declarationDescriptor instanceof FunctionDescriptor) {
|
if (declarationDescriptor instanceof FunctionDescriptor) {
|
||||||
result.add((FunctionDescriptor) declarationDescriptor);
|
result.add((FunctionDescriptor) declarationDescriptor);
|
||||||
@@ -335,7 +335,7 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
// Iterate through the function with attempt to resolve found functions
|
// Iterate through the function with attempt to resolve found functions
|
||||||
for (FqName functionFQN : functionFQNs) {
|
for (FqName functionFQN : functionFQNs) {
|
||||||
for (CallableDescriptor functionDescriptor : ExpressionTypingUtils.canFindSuitableCall(
|
for (CallableDescriptor functionDescriptor : ExpressionTypingUtils.canFindSuitableCall(
|
||||||
functionFQN, project, receiverExpression, expressionType, scope, resolveSession.getModuleConfiguration())) {
|
functionFQN, project, receiverExpression, expressionType, scope, resolveSession.getRootModuleDescriptor())) {
|
||||||
|
|
||||||
resultDescriptors.add(functionDescriptor);
|
resultDescriptors.add(functionDescriptor);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,7 +227,6 @@ public class JetSourceNavigationHelper {
|
|||||||
project,
|
project,
|
||||||
storageManager,
|
storageManager,
|
||||||
moduleDescriptor,
|
moduleDescriptor,
|
||||||
DefaultModuleConfiguration.createStandardConfiguration(),
|
|
||||||
providerFactory);
|
providerFactory);
|
||||||
|
|
||||||
for (JetNamedDeclaration candidate : candidates) {
|
for (JetNamedDeclaration candidate : candidates) {
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public abstract class BaseJetVariableMacro extends Macro {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpressionTypingServices callResolverContext = new InjectorForMacros(project, analyzeExhaust.getModuleConfiguration()).getExpressionTypingServices();
|
ExpressionTypingServices callResolverContext = new InjectorForMacros(project, analyzeExhaust.getModuleDescriptor()).getExpressionTypingServices();
|
||||||
|
|
||||||
List<VariableDescriptor> filteredDescriptors = new ArrayList<VariableDescriptor>();
|
List<VariableDescriptor> filteredDescriptors = new ArrayList<VariableDescriptor>();
|
||||||
for (DeclarationDescriptor declarationDescriptor : scope.getAllDescriptors()) {
|
for (DeclarationDescriptor declarationDescriptor : scope.getAllDescriptors()) {
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.asJava.LightClassUtil;
|
import org.jetbrains.jet.asJava.LightClassUtil;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
|
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Errors;
|
import org.jetbrains.jet.lang.diagnostics.Errors;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
@@ -46,6 +45,7 @@ import org.jetbrains.jet.lang.resolve.*;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider;
|
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
|
import org.jetbrains.jet.lang.types.ErrorUtils;
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
|
import org.jetbrains.jet.plugin.caches.resolve.KotlinCacheManagerUtil;
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinDeclarationsCache;
|
import org.jetbrains.jet.plugin.caches.resolve.KotlinDeclarationsCache;
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinDeclarationsCacheImpl;
|
import org.jetbrains.jet.plugin.caches.resolve.KotlinDeclarationsCacheImpl;
|
||||||
@@ -121,7 +121,7 @@ public final class AnalyzerFacadeWithCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static AnalyzeExhaust emptyExhaust() {
|
private static AnalyzeExhaust emptyExhaust() {
|
||||||
return AnalyzeExhaust.success(BindingContext.EMPTY, ModuleConfiguration.EMPTY);
|
return AnalyzeExhaust.success(BindingContext.EMPTY, ErrorUtils.getErrorModule());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AnalyzeExhaust analyzeHeadersWithCacheOnFile(@NotNull JetFile fileToCache) {
|
private static AnalyzeExhaust analyzeHeadersWithCacheOnFile(@NotNull JetFile fileToCache) {
|
||||||
@@ -143,7 +143,6 @@ public final class AnalyzerFacadeWithCache {
|
|||||||
|
|
||||||
private static AnalyzeExhaust analyzeBodies(AnalyzeExhaust analyzeExhaustHeaders, JetFile file) {
|
private static AnalyzeExhaust analyzeBodies(AnalyzeExhaust analyzeExhaustHeaders, JetFile file) {
|
||||||
BodiesResolveContext context = analyzeExhaustHeaders.getBodiesResolveContext();
|
BodiesResolveContext context = analyzeExhaustHeaders.getBodiesResolveContext();
|
||||||
ModuleConfiguration moduleConfiguration = analyzeExhaustHeaders.getModuleConfiguration();
|
|
||||||
assert context != null : "Headers resolver should prepare and stored information for bodies resolve";
|
assert context != null : "Headers resolver should prepare and stored information for bodies resolve";
|
||||||
|
|
||||||
// Need to resolve bodies in given file and all in the same package
|
// Need to resolve bodies in given file and all in the same package
|
||||||
@@ -154,7 +153,7 @@ public final class AnalyzerFacadeWithCache {
|
|||||||
new DelegatingBindingTrace(analyzeExhaustHeaders.getBindingContext(),
|
new DelegatingBindingTrace(analyzeExhaustHeaders.getBindingContext(),
|
||||||
"trace to resolve bodies in file", file.getName()),
|
"trace to resolve bodies in file", file.getName()),
|
||||||
context,
|
context,
|
||||||
moduleConfiguration);
|
analyzeExhaustHeaders.getModuleDescriptor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiFile;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
@@ -59,9 +59,9 @@ public enum JSAnalyzerFacadeForIDEA implements AnalyzerFacade {
|
|||||||
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
@NotNull Predicate<PsiFile> filesForBodiesResolve,
|
||||||
@NotNull BindingTrace traceContext,
|
@NotNull BindingTrace traceContext,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration
|
@NotNull ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return AnalyzerFacadeForJS.analyzeBodiesInFiles(filesForBodiesResolve, new IDEAConfig(project), traceContext, bodiesResolveContext, configuration);
|
return AnalyzerFacadeForJS.analyzeBodiesInFiles(filesForBodiesResolve, new IDEAConfig(project), traceContext, bodiesResolveContext, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.intellij.util.IncorrectOperationException;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
@@ -155,7 +154,6 @@ public class MigrateSureInProjectFix extends JetIntentionAction<PsiElement> {
|
|||||||
Predicates.<PsiFile>alwaysFalse());
|
Predicates.<PsiFile>alwaysFalse());
|
||||||
|
|
||||||
BodiesResolveContext context = analyzeExhaustHeaders.getBodiesResolveContext();
|
BodiesResolveContext context = analyzeExhaustHeaders.getBodiesResolveContext();
|
||||||
ModuleConfiguration moduleConfiguration = analyzeExhaustHeaders.getModuleConfiguration();
|
|
||||||
assert context != null : "Headers resolver should prepare and stored information for bodies resolve";
|
assert context != null : "Headers resolver should prepare and stored information for bodies resolve";
|
||||||
|
|
||||||
// Need to resolve bodies in given file and all in the same package
|
// Need to resolve bodies in given file and all in the same package
|
||||||
@@ -165,6 +163,6 @@ public class MigrateSureInProjectFix extends JetIntentionAction<PsiElement> {
|
|||||||
Predicates.<PsiFile>alwaysTrue(),
|
Predicates.<PsiFile>alwaysTrue(),
|
||||||
new DelegatingBindingTrace(analyzeExhaustHeaders.getBindingContext(), "trace in migrate sure fix"),
|
new DelegatingBindingTrace(analyzeExhaustHeaders.getBindingContext(), "trace in migrate sure fix"),
|
||||||
context,
|
context,
|
||||||
moduleConfiguration);
|
analyzeExhaustHeaders.getModuleDescriptor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -31,7 +31,6 @@ import com.intellij.psi.PsiWhiteSpace;
|
|||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.refactoring.HelpID;
|
import com.intellij.refactoring.HelpID;
|
||||||
import com.intellij.refactoring.introduce.inplace.OccurrencesChooser;
|
import com.intellij.refactoring.introduce.inplace.OccurrencesChooser;
|
||||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
@@ -128,7 +127,7 @@ public class JetIntroduceVariableHandler extends JetIntroduceHandlerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ObservableBindingTrace bindingTrace = new ObservableBindingTrace(new BindingTraceContext());
|
ObservableBindingTrace bindingTrace = new ObservableBindingTrace(new BindingTraceContext());
|
||||||
InjectorForMacros injector = new InjectorForMacros(project, analyzeExhaust.getModuleConfiguration());
|
InjectorForMacros injector = new InjectorForMacros(project, analyzeExhaust.getModuleDescriptor());
|
||||||
JetType typeNoExpectedType = injector.getExpressionTypingServices().getType(scope, expression,
|
JetType typeNoExpectedType = injector.getExpressionTypingServices().getType(scope, expression,
|
||||||
TypeUtils.NO_EXPECTED_TYPE, dataFlowInfo,
|
TypeUtils.NO_EXPECTED_TYPE, dataFlowInfo,
|
||||||
bindingTrace);
|
bindingTrace);
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.intellij.openapi.project.Project;
|
|||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||||
@@ -61,7 +60,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
private final ModuleDescriptorImpl moduleDescriptor;
|
private final ModuleDescriptorImpl moduleDescriptor;
|
||||||
private final ModuleConfiguration moduleConfiguration;
|
|
||||||
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
private DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
||||||
private NamespaceFactoryImpl namespaceFactory;
|
private NamespaceFactoryImpl namespaceFactory;
|
||||||
private DeclarationResolver declarationResolver;
|
private DeclarationResolver declarationResolver;
|
||||||
@@ -85,8 +83,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||||
@NotNull BindingTrace bindingTrace,
|
@NotNull BindingTrace bindingTrace,
|
||||||
@NotNull ModuleDescriptorImpl moduleDescriptor,
|
@NotNull ModuleDescriptorImpl moduleDescriptor
|
||||||
@NotNull ModuleConfiguration moduleConfiguration
|
|
||||||
) {
|
) {
|
||||||
this.topDownAnalyzer = new TopDownAnalyzer();
|
this.topDownAnalyzer = new TopDownAnalyzer();
|
||||||
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
||||||
@@ -98,7 +95,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.moduleConfiguration = moduleConfiguration;
|
|
||||||
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
this.declarationResolver = new DeclarationResolver();
|
this.declarationResolver = new DeclarationResolver();
|
||||||
@@ -150,7 +146,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
namespaceFactory.setConfiguration(moduleConfiguration);
|
|
||||||
namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
namespaceFactory.setModuleDescriptor(moduleDescriptor);
|
||||||
namespaceFactory.setTrace(bindingTrace);
|
namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -182,14 +177,14 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
|
|
||||||
typeResolver.setAnnotationResolver(annotationResolver);
|
typeResolver.setAnnotationResolver(annotationResolver);
|
||||||
typeResolver.setDescriptorResolver(descriptorResolver);
|
typeResolver.setDescriptorResolver(descriptorResolver);
|
||||||
typeResolver.setModuleConfiguration(moduleConfiguration);
|
typeResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
|
|
||||||
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
|
||||||
|
|
||||||
importsResolver.setConfiguration(moduleConfiguration);
|
|
||||||
importsResolver.setContext(topDownAnalysisContext);
|
importsResolver.setContext(topDownAnalysisContext);
|
||||||
importsResolver.setImportsFactory(jetImportsFactory);
|
importsResolver.setImportsFactory(jetImportsFactory);
|
||||||
|
importsResolver.setModuleDescriptor(moduleDescriptor);
|
||||||
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||||
importsResolver.setTrace(bindingTrace);
|
importsResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
@@ -261,8 +256,8 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
return this.bindingTrace;
|
return this.bindingTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleConfiguration getModuleConfiguration() {
|
public ModuleDescriptorImpl getModuleDescriptor() {
|
||||||
return this.moduleConfiguration;
|
return this.moduleDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
|
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJs;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJs;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
|
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.k2js.config.Config;
|
import org.jetbrains.k2js.config.Config;
|
||||||
@@ -87,10 +87,8 @@ public final class AnalyzerFacadeForJS {
|
|||||||
BindingTrace trace = libraryBindingContext == null ?
|
BindingTrace trace = libraryBindingContext == null ?
|
||||||
new ObservableBindingTrace(new BindingTraceContext()) :
|
new ObservableBindingTrace(new BindingTraceContext()) :
|
||||||
new DelegatingBindingTrace(libraryBindingContext, "trace for analyzing library in js");
|
new DelegatingBindingTrace(libraryBindingContext, "trace for analyzing library in js");
|
||||||
InjectorForTopDownAnalyzerForJs injector = new InjectorForTopDownAnalyzerForJs(
|
owner.setModuleConfiguration(new JsConfiguration(libraryBindingContext));
|
||||||
project, topDownAnalysisParameters, trace, owner,
|
InjectorForTopDownAnalyzerForJs injector = new InjectorForTopDownAnalyzerForJs(project, topDownAnalysisParameters, trace, owner);
|
||||||
new JsConfiguration(libraryBindingContext));
|
|
||||||
owner.setModuleConfiguration(injector.getModuleConfiguration());
|
|
||||||
try {
|
try {
|
||||||
Collection<JetFile> allFiles = libraryBindingContext != null ?
|
Collection<JetFile> allFiles = libraryBindingContext != null ?
|
||||||
files :
|
files :
|
||||||
@@ -99,7 +97,7 @@ public final class AnalyzerFacadeForJS {
|
|||||||
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
||||||
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
||||||
null;
|
null;
|
||||||
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, injector.getModuleConfiguration());
|
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, owner);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
injector.destroy();
|
injector.destroy();
|
||||||
@@ -112,12 +110,12 @@ public final class AnalyzerFacadeForJS {
|
|||||||
@NotNull Config config,
|
@NotNull Config config,
|
||||||
@NotNull BindingTrace traceContext,
|
@NotNull BindingTrace traceContext,
|
||||||
@NotNull BodiesResolveContext bodiesResolveContext,
|
@NotNull BodiesResolveContext bodiesResolveContext,
|
||||||
@NotNull ModuleConfiguration configuration) {
|
@NotNull ModuleDescriptor module) {
|
||||||
Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely);
|
Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely);
|
||||||
|
|
||||||
return AnalyzerFacadeForEverything.analyzeBodiesInFilesWithJavaIntegration(
|
return AnalyzerFacadeForEverything.analyzeBodiesInFilesWithJavaIntegration(
|
||||||
config.getProject(), Collections.<AnalyzerScriptParameter>emptyList(), completely, traceContext, bodiesResolveContext,
|
config.getProject(), Collections.<AnalyzerScriptParameter>emptyList(), completely, traceContext, bodiesResolveContext,
|
||||||
configuration);
|
module);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void checkForErrors(@NotNull Collection<JetFile> allFiles, @NotNull BindingContext bindingContext) {
|
public static void checkForErrors(@NotNull Collection<JetFile> allFiles, @NotNull BindingContext bindingContext) {
|
||||||
@@ -146,6 +144,6 @@ public final class AnalyzerFacadeForJS {
|
|||||||
storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
|
storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
|
||||||
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
ModuleDescriptorImpl lazyModule = new ModuleDescriptorImpl(Name.special("<lazy module>"));
|
||||||
lazyModule.setModuleConfiguration(new JsConfiguration(null));
|
lazyModule.setModuleConfiguration(new JsConfiguration(null));
|
||||||
return new ResolveSession(config.getProject(), storageManager, lazyModule, lazyModule.getModuleConfiguration(), declarationProviderFactory);
|
return new ResolveSession(config.getProject(), storageManager, lazyModule, declarationProviderFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user