KT-816 Add std namespace in to default imports

This commit is contained in:
svtk
2011-12-15 16:24:47 +04:00
committed by Nikolay Krasko
parent eff7903b56
commit e5b8d0423a
8 changed files with 95 additions and 34 deletions
@@ -12,6 +12,8 @@ import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiModificationTracker;
import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.JetSemanticServices;
import org.jetbrains.jet.lang.StandardConfiguration;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils;
import org.jetbrains.jet.lang.diagnostics.Errors;
@@ -80,12 +82,15 @@ public class AnalyzerFacade {
public static BindingContext analyzeNamespacesWithJavaIntegration(Project project, Collection<? extends JetDeclaration> declarations, Predicate<PsiFile> filesToAnalyzeCompletely, JetControlFlowDataTraceFactory flowDataTraceFactory) {
BindingTraceContext bindingTraceContext = new BindingTraceContext();
return AnalyzingUtils.getInstance().analyzeNamespacesWithGivenTrace(
JetSemanticServices semanticServices = JetSemanticServices.createSemanticServices(project);
return AnalyzingUtils.analyzeNamespacesWithGivenTrace(
project,
JavaBridgeConfiguration.createJavaBridgeConfiguration(project, bindingTraceContext),
JavaBridgeConfiguration.createJavaBridgeConfiguration(project, bindingTraceContext, StandardConfiguration.createStandardConfiguration(project, semanticServices)),
declarations,
filesToAnalyzeCompletely,
flowDataTraceFactory, bindingTraceContext);
flowDataTraceFactory,
bindingTraceContext,
semanticServices);
}
public static BindingContext shallowAnalyzeFiles(Collection<PsiFile> files) {
@@ -14,24 +14,28 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
*/
public class JavaBridgeConfiguration implements Configuration {
public static Configuration createJavaBridgeConfiguration(@NotNull Project project, @NotNull BindingTrace trace) {
return new JavaBridgeConfiguration(project, trace);
public static Configuration createJavaBridgeConfiguration(@NotNull Project project, @NotNull BindingTrace trace, Configuration delegateConfiguration) {
return new JavaBridgeConfiguration(project, trace, delegateConfiguration);
}
private final JavaSemanticServices javaSemanticServices;
private final Configuration delegateConfiguration;
private JavaBridgeConfiguration(Project project, BindingTrace trace) {
private JavaBridgeConfiguration(Project project, BindingTrace trace, Configuration delegateConfiguration) {
this.javaSemanticServices = new JavaSemanticServices(project, JetSemanticServices.createSemanticServices(project), trace);
this.delegateConfiguration = delegateConfiguration;
}
@Override
public void addDefaultImports(BindingTrace trace, WritableScope rootScope) {
public void addDefaultImports(@NotNull BindingTrace trace, @NotNull WritableScope rootScope) {
rootScope.importScope(new JavaPackageScope("", null, javaSemanticServices));
rootScope.importScope(new JavaPackageScope("java.lang", null, javaSemanticServices));
delegateConfiguration.addDefaultImports(trace, rootScope);
}
@Override
public void extendNamespaceScope(BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) {
public void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) {
namespaceMemberScope.importScope(new JavaPackageScope(DescriptorUtils.getFQName(namespaceDescriptor), namespaceDescriptor, javaSemanticServices));
delegateConfiguration.extendNamespaceScope(trace, namespaceDescriptor, namespaceMemberScope);
}
}