Fragment providers added on higher level.
This commit is contained in:
@@ -103,6 +103,9 @@ 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.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider());
|
||||||
|
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
||||||
|
module.addFragmentProvider(injector.getJavaPackageFragmentProvider());
|
||||||
|
|
||||||
List<URL> classpath = Lists.newArrayList();
|
List<URL> classpath = Lists.newArrayList();
|
||||||
|
|
||||||
@@ -285,9 +288,6 @@ public class ReplInterpreter {
|
|||||||
|
|
||||||
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
|
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||||
|
|
||||||
module.addFragmentProvider(injector.getTopDownAnalyzer().getPackageFragmentProvider());
|
|
||||||
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
|
||||||
|
|
||||||
// Import a scope that contains all top-level namespaces that come from dependencies
|
// Import a scope that contains all top-level namespaces that come from dependencies
|
||||||
// This makes the namespaces visible at all, does not import themselves
|
// This makes the namespaces visible at all, does not import themselves
|
||||||
scope.importScope(module.getPackage(FqName.ROOT).getMemberScope());
|
scope.importScope(module.getPackage(FqName.ROOT).getMemberScope());
|
||||||
|
|||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2013 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.di;
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
|
|
||||||
|
public class InjectorForJavaDescriptorResolverUtil {
|
||||||
|
@NotNull
|
||||||
|
public static InjectorForJavaDescriptorResolver create(@NotNull Project project, @NotNull BindingTrace bindingTrace) {
|
||||||
|
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, bindingTrace);
|
||||||
|
injector.getModule().addFragmentProvider(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
|
||||||
|
return injector;
|
||||||
|
}
|
||||||
|
}
|
||||||
+36
-32
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationRe
|
|||||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
|
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||||
@@ -63,12 +64,11 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolv
|
|||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
|
||||||
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.JavaTypeParameterResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -99,6 +99,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
|
private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
|
||||||
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
||||||
private final NamespaceFactoryImpl namespaceFactory;
|
private final NamespaceFactoryImpl namespaceFactory;
|
||||||
|
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
|
||||||
private final VirtualFileFinder virtualFileFinder;
|
private final VirtualFileFinder virtualFileFinder;
|
||||||
private final DeclarationResolver declarationResolver;
|
private final DeclarationResolver declarationResolver;
|
||||||
private final AnnotationResolver annotationResolver;
|
private final AnnotationResolver annotationResolver;
|
||||||
@@ -124,12 +125,11 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final JavaTypeTransformer javaTypeTransformer;
|
private final JavaTypeTransformer javaTypeTransformer;
|
||||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||||
private final JavaPackageFragmentProvider javaPackageFragmentProvider;
|
|
||||||
private final JavaMemberResolver javaMemberResolver;
|
|
||||||
private final JavaConstructorResolver javaConstructorResolver;
|
|
||||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
|
||||||
private final JavaFunctionResolver javaFunctionResolver;
|
private final JavaFunctionResolver javaFunctionResolver;
|
||||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||||
|
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||||
|
private final JavaMemberResolver javaMemberResolver;
|
||||||
|
private final JavaConstructorResolver javaConstructorResolver;
|
||||||
private final JavaPropertyResolver javaPropertyResolver;
|
private final JavaPropertyResolver javaPropertyResolver;
|
||||||
private final JavaSupertypeResolver javaSupertypeResolver;
|
private final JavaSupertypeResolver javaSupertypeResolver;
|
||||||
|
|
||||||
@@ -161,6 +161,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
|
this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
|
||||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||||
this.namespaceFactory = new NamespaceFactoryImpl();
|
this.namespaceFactory = new NamespaceFactoryImpl();
|
||||||
|
this.javaPackageFragmentProvider = new JavaPackageFragmentProvider();
|
||||||
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
|
||||||
this.declarationResolver = new DeclarationResolver();
|
this.declarationResolver = new DeclarationResolver();
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
@@ -186,12 +187,11 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||||
this.javaPackageFragmentProvider = new JavaPackageFragmentProvider();
|
|
||||||
this.javaMemberResolver = new JavaMemberResolver();
|
|
||||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
|
||||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
|
||||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||||
|
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||||
|
this.javaMemberResolver = new JavaMemberResolver();
|
||||||
|
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||||
|
|
||||||
@@ -251,6 +251,13 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
namespaceFactory.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
namespaceFactory.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||||
namespaceFactory.setTrace(bindingTrace);
|
namespaceFactory.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
this.javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
|
||||||
|
this.javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
|
this.javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
|
||||||
|
this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
||||||
|
this.javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
|
||||||
|
this.javaPackageFragmentProvider.setModule(moduleDescriptor);
|
||||||
|
|
||||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||||
declarationResolver.setContext(topDownAnalysisContext);
|
declarationResolver.setContext(topDownAnalysisContext);
|
||||||
declarationResolver.setDescriptorResolver(descriptorResolver);
|
declarationResolver.setDescriptorResolver(descriptorResolver);
|
||||||
@@ -352,26 +359,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
||||||
|
|
||||||
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
|
|
||||||
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
|
||||||
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
|
|
||||||
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
|
|
||||||
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
|
|
||||||
javaPackageFragmentProvider.setModule(moduleDescriptor);
|
|
||||||
|
|
||||||
javaMemberResolver.setClassResolver(javaClassResolver);
|
|
||||||
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
|
|
||||||
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
|
|
||||||
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
|
|
||||||
|
|
||||||
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
|
||||||
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
|
||||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
|
||||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
|
||||||
|
|
||||||
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
|
|
||||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
|
||||||
|
|
||||||
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
|
||||||
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
|
||||||
@@ -383,6 +370,19 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
|
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
|
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
|
||||||
|
javaMemberResolver.setClassResolver(javaClassResolver);
|
||||||
|
javaMemberResolver.setConstructorResolver(javaConstructorResolver);
|
||||||
|
javaMemberResolver.setFunctionResolver(javaFunctionResolver);
|
||||||
|
javaMemberResolver.setPropertyResolver(javaPropertyResolver);
|
||||||
|
|
||||||
|
javaConstructorResolver.setCache(traceBasedJavaResolverCache);
|
||||||
|
javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||||
|
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||||
|
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||||
|
|
||||||
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
javaPropertyResolver.setCache(traceBasedJavaResolverCache);
|
||||||
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
|
||||||
@@ -440,4 +440,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
return this.moduleDescriptor;
|
return this.moduleDescriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JavaPackageFragmentProvider getJavaPackageFragmentProvider() {
|
||||||
|
return this.javaPackageFragmentProvider;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -26,6 +26,7 @@ import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
|||||||
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
import org.jetbrains.jet.analyzer.AnalyzerFacade;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
|
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
||||||
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;
|
||||||
@@ -83,7 +84,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
@Override
|
@Override
|
||||||
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
|
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
|
||||||
BindingTraceContext javaResolverTrace = new BindingTraceContext();
|
BindingTraceContext javaResolverTrace = new BindingTraceContext();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace);
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(fileProject, javaResolverTrace);
|
||||||
return createLazyResolveSession(fileProject, files, javaResolverTrace, injector, true);
|
return createLazyResolveSession(fileProject, files, javaResolverTrace, injector, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,11 +107,8 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
|
||||||
|
|
||||||
ModuleDescriptorImpl module = injector.getModule();
|
ModuleDescriptorImpl module = injector.getModule();
|
||||||
|
|
||||||
module.addFragmentProvider(javaDescriptorResolver.getPackageFragmentProvider());
|
|
||||||
if (addBuiltIns) {
|
if (addBuiltIns) {
|
||||||
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
||||||
}
|
}
|
||||||
@@ -198,6 +196,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
|
|
||||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
||||||
try {
|
try {
|
||||||
|
module.addFragmentProvider(injector.getJavaPackageFragmentProvider());
|
||||||
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
|
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
|
||||||
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
|
||||||
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) :
|
||||||
|
|||||||
@@ -120,8 +120,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
this.trace = storageManager.createSafeTrace(delegationTrace);
|
this.trace = storageManager.createSafeTrace(delegationTrace);
|
||||||
this.injector = new InjectorForLazyResolve(project, this, rootDescriptor);
|
this.injector = new InjectorForLazyResolve(project, this, rootDescriptor);
|
||||||
this.module = rootDescriptor;
|
this.module = rootDescriptor;
|
||||||
PackageMemberDeclarationProvider provider = declarationProviderFactory.getPackageMemberDeclarationProvider(FqName.ROOT);
|
|
||||||
assert provider != null : "No declaration provider for root package in " + rootDescriptor;
|
|
||||||
|
|
||||||
this.packages = storageManager.createMemoizedFunctionWithNullableValues(new MemoizedFunctionToNullable<FqName, LazyPackageDescriptor>() {
|
this.packages = storageManager.createMemoizedFunctionWithNullableValues(new MemoizedFunctionToNullable<FqName, LazyPackageDescriptor>() {
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -133,8 +131,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
|
|
||||||
this.declarationProviderFactory = declarationProviderFactory;
|
this.declarationProviderFactory = declarationProviderFactory;
|
||||||
|
|
||||||
rootDescriptor.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
|
||||||
|
|
||||||
this.packageFragmentProvider = new PackageFragmentProvider() {
|
this.packageFragmentProvider = new PackageFragmentProvider() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+2
-1
@@ -23,6 +23,7 @@ import org.jetbrains.jet.ConfigurationKind;
|
|||||||
import org.jetbrains.jet.JetTestUtils;
|
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.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
@@ -64,7 +65,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
|
|||||||
PackageFragmentDescriptor testPackage = DescriptorUtils.getExactlyOnePackageFragment(
|
PackageFragmentDescriptor testPackage = DescriptorUtils.getExactlyOnePackageFragment(
|
||||||
moduleDescriptor, FqName.topLevel(TEST_PACKAGE_NAME));
|
moduleDescriptor, FqName.topLevel(TEST_PACKAGE_NAME));
|
||||||
|
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(getProject(), new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), new BindingTraceContext());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
PackageFragmentDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, testPackage);
|
PackageFragmentDescriptor deserialized = serializeAndDeserialize(javaDescriptorResolver, testPackage);
|
||||||
|
|||||||
@@ -144,17 +144,20 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
|||||||
// we need the same binding trace for resolve from Java and Kotlin
|
// we need the same binding trace for resolve from Java and Kotlin
|
||||||
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
||||||
BindingTrace trace = support.getTrace();
|
BindingTrace trace = support.getTrace();
|
||||||
|
ModuleDescriptorImpl module = support.getModule();
|
||||||
|
|
||||||
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
|
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
|
||||||
environment.getProject(),
|
environment.getProject(),
|
||||||
new TopDownAnalysisParameters(
|
new TopDownAnalysisParameters(
|
||||||
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
||||||
trace,
|
trace,
|
||||||
support.getModule());
|
module);
|
||||||
|
|
||||||
|
module.addFragmentProvider(injectorForAnalyzer.getJavaPackageFragmentProvider());
|
||||||
|
|
||||||
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
|
injectorForAnalyzer.getTopDownAnalyzer().analyzeFiles(environment.getSourceFiles(), Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
|
|
||||||
PackageViewDescriptor packageView = support.getModule().getPackage(TEST_PACKAGE_FQNAME);
|
PackageViewDescriptor packageView = module.getPackage(TEST_PACKAGE_FQNAME);
|
||||||
assert packageView != null : "Test namespace not found";
|
assert packageView != null : "Test namespace not found";
|
||||||
|
|
||||||
checkJavaPackage(expectedFile, packageView, trace.getBindingContext(), DONT_INCLUDE_METHODS_OF_OBJECT);
|
checkJavaPackage(expectedFile, packageView, trace.getBindingContext(), DONT_INCLUDE_METHODS_OF_OBJECT);
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
|
|||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
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.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
@@ -95,7 +96,8 @@ public class JdkAnnotationsValidityTest extends UsefulTestCase {
|
|||||||
JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable);
|
JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable);
|
||||||
|
|
||||||
BindingTrace trace = new BindingTraceContext();
|
BindingTrace trace = new BindingTraceContext();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(commonEnvironment.getProject(), trace);
|
InjectorForJavaDescriptorResolver injector =
|
||||||
|
InjectorForJavaDescriptorResolverUtil.create(commonEnvironment.getProject(), trace);
|
||||||
|
|
||||||
BindingContext bindingContext = trace.getBindingContext();
|
BindingContext bindingContext = trace.getBindingContext();
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.GenerationUtils;
|
|||||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
|
||||||
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;
|
||||||
@@ -85,7 +86,7 @@ public final class LoadDescriptorUtil {
|
|||||||
);
|
);
|
||||||
JetCoreEnvironment jetCoreEnvironment = JetCoreEnvironment.createForTests(disposable, configuration);
|
JetCoreEnvironment jetCoreEnvironment = JetCoreEnvironment.createForTests(disposable, configuration);
|
||||||
BindingTraceContext trace = new BindingTraceContext();
|
BindingTraceContext trace = new BindingTraceContext();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(jetCoreEnvironment.getProject(), trace);
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(jetCoreEnvironment.getProject(), trace);
|
||||||
PackageViewDescriptor packageView = injector.getModule().getPackage(TEST_PACKAGE_FQNAME);
|
PackageViewDescriptor packageView = injector.getModule().getPackage(TEST_PACKAGE_FQNAME);
|
||||||
assert packageView != null;
|
assert packageView != null;
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -33,6 +33,7 @@ import org.jetbrains.jet.TimeUtils;
|
|||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
@@ -157,7 +158,7 @@ public class ResolveDescriptorsFromExternalLibraries {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(
|
||||||
jetCoreEnvironment.getProject(), new BindingTraceContext());
|
jetCoreEnvironment.getProject(), new BindingTraceContext());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
|
|||||||
+2
-4
@@ -25,13 +25,13 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.ConfigurationKind;
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
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.InjectorForTopDownAnalyzer;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
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.LockBasedLazyResolveStorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -48,13 +48,11 @@ public abstract class AbstractLazyResolveDescriptorRendererTest extends KotlinTe
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void doTest(@NotNull String testFile) throws IOException {
|
protected void doTest(@NotNull String testFile) throws IOException {
|
||||||
|
|
||||||
InjectorForTopDownAnalyzer injectorForTopDownAnalyzer = LazyResolveTestUtil.getEagerInjectorForTopDownAnalyzer(getEnvironment());
|
|
||||||
|
|
||||||
JetFile psiFile = JetPsiFactory.createFile(getProject(), FileUtil.loadFile(new File(testFile), true));
|
JetFile psiFile = JetPsiFactory.createFile(getProject(), FileUtil.loadFile(new File(testFile), true));
|
||||||
Collection<JetFile> files = Lists.newArrayList(psiFile);
|
Collection<JetFile> files = Lists.newArrayList(psiFile);
|
||||||
|
|
||||||
final ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
|
final ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
|
||||||
|
lazyModule.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
||||||
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
||||||
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule,
|
final ResolveSession resolveSession = new ResolveSession(getProject(), storageManager, lazyModule,
|
||||||
new FileBasedDeclarationProviderFactory(storageManager, files));
|
new FileBasedDeclarationProviderFactory(storageManager, files));
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.jetbrains.jet.JetTestUtils;
|
|||||||
import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport;
|
import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
@@ -63,7 +64,11 @@ public class LazyResolveTestUtil {
|
|||||||
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
||||||
BindingTrace sharedTrace = support.getTrace();
|
BindingTrace sharedTrace = support.getTrace();
|
||||||
ModuleDescriptorImpl sharedModule = support.getModule();
|
ModuleDescriptorImpl sharedModule = support.getModule();
|
||||||
return new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
|
|
||||||
|
InjectorForTopDownAnalyzerForJvm injector =
|
||||||
|
new InjectorForTopDownAnalyzerForJvm(environment.getProject(), params, sharedTrace, sharedModule);
|
||||||
|
sharedModule.addFragmentProvider(injector.getJavaPackageFragmentProvider());
|
||||||
|
return injector;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
|
public static ModuleDescriptor resolveEagerly(List<JetFile> files, JetCoreEnvironment environment) {
|
||||||
@@ -78,7 +83,7 @@ public class LazyResolveTestUtil {
|
|||||||
Project project = environment.getProject();
|
Project project = environment.getProject();
|
||||||
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(project);
|
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(project);
|
||||||
BindingTrace sharedTrace = support.getTrace();
|
BindingTrace sharedTrace = support.getTrace();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, sharedTrace);
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, sharedTrace);
|
||||||
support.setModule(injector.getModule());
|
support.setModule(injector.getModule());
|
||||||
|
|
||||||
return AnalyzerFacadeForJVM.createLazyResolveSession(project, files, sharedTrace, injector, addBuiltIns);
|
return AnalyzerFacadeForJVM.createLazyResolveSession(project, files, sharedTrace, injector, addBuiltIns);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import junit.framework.Assert;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.di.InjectorForTests;
|
import org.jetbrains.jet.di.InjectorForTests;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
@@ -115,7 +116,7 @@ public class JetExpectedResolveDataUtil {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static PsiClass findClass(String qualifiedName, Project project) {
|
private static PsiClass findClass(String qualifiedName, Project project) {
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, new BindingTraceContext());
|
||||||
JavaClass javaClass = injector.getJavaClassFinder().findClass(new FqName(qualifiedName));
|
JavaClass javaClass = injector.getJavaClassFinder().findClass(new FqName(qualifiedName));
|
||||||
Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass);
|
Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass);
|
||||||
assertInstanceOf(javaClass, JavaClassImpl.class);
|
assertInstanceOf(javaClass, JavaClassImpl.class);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.jetbrains.jet.JetTestCaseBuilder;
|
|||||||
import org.jetbrains.jet.JetTestUtils;
|
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.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.di.InjectorForTests;
|
import org.jetbrains.jet.di.InjectorForTests;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||||
@@ -585,7 +586,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
|||||||
private WritableScopeImpl addImports(JetScope scope) {
|
private WritableScopeImpl addImports(JetScope scope) {
|
||||||
WritableScopeImpl writableScope = new WritableScopeImpl(
|
WritableScopeImpl writableScope = new WritableScopeImpl(
|
||||||
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports");
|
scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports");
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(getProject(), new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), new BindingTraceContext());
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
ModuleDescriptor module = javaDescriptorResolver.getPackageFragmentProvider().getModule();
|
ModuleDescriptor module = javaDescriptorResolver.getPackageFragmentProvider().getModule();
|
||||||
for (ImportPath defaultImport : module.getDefaultImports()) {
|
for (ImportPath defaultImport : module.getDefaultImports()) {
|
||||||
|
|||||||
-2
@@ -86,8 +86,6 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
|||||||
@Inject
|
@Inject
|
||||||
public void setModule(ModuleDescriptor module) {
|
public void setModule(ModuleDescriptor module) {
|
||||||
this.module = module;
|
this.module = module;
|
||||||
// TODO 1 hacky
|
|
||||||
((ModuleDescriptorImpl) module).addFragmentProvider(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.jet.lang.descriptors;
|
package org.jetbrains.jet.lang.descriptors;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
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.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
@@ -33,6 +34,8 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ModuleDescriptor {
|
public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements ModuleDescriptor {
|
||||||
|
private static final Logger LOG = Logger.getInstance(ModuleDescriptorImpl.class);
|
||||||
|
|
||||||
private final List<PackageFragmentProvider> fragmentProviders = Lists.newArrayList();
|
private final List<PackageFragmentProvider> fragmentProviders = Lists.newArrayList();
|
||||||
private final CompositePackageFragmentProvider packageFragmentProvider = new CompositePackageFragmentProvider(fragmentProviders);
|
private final CompositePackageFragmentProvider packageFragmentProvider = new CompositePackageFragmentProvider(fragmentProviders);
|
||||||
private final List<ImportPath> defaultImports;
|
private final List<ImportPath> defaultImports;
|
||||||
@@ -52,6 +55,9 @@ public class ModuleDescriptorImpl extends DeclarationDescriptorImpl implements M
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addFragmentProvider(@NotNull PackageFragmentProvider provider) {
|
public void addFragmentProvider(@NotNull PackageFragmentProvider provider) {
|
||||||
|
if (fragmentProviders.contains(provider)) {
|
||||||
|
LOG.error("Trying to add already present fragment provider: " + provider);
|
||||||
|
}
|
||||||
fragmentProviders.add(provider);
|
fragmentProviders.add(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ public class GenerateInjectors {
|
|||||||
generator.addField(VirtualFileKotlinClassFinder.class);
|
generator.addField(VirtualFileKotlinClassFinder.class);
|
||||||
generator.addField(MutablePackageFragmentProvider.class);
|
generator.addField(MutablePackageFragmentProvider.class);
|
||||||
generator.addField(NamespaceFactoryImpl.class);
|
generator.addField(NamespaceFactoryImpl.class);
|
||||||
|
generator.addPublicField(JavaPackageFragmentProvider.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
new GivenExpression(
|
new GivenExpression(
|
||||||
"com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
"com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace
|
|||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver
|
||||||
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider
|
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil
|
||||||
|
|
||||||
class KotlinLightClassContextCache(val project: Project) {
|
class KotlinLightClassContextCache(val project: Project) {
|
||||||
private val cacheKey = Key.create<CachedValue<ResolveElementCache>>("KOTLIN_LIGHT_CLASS_CONTEXT_CACHE")
|
private val cacheKey = Key.create<CachedValue<ResolveElementCache>>("KOTLIN_LIGHT_CLASS_CONTEXT_CACHE")
|
||||||
@@ -56,7 +57,7 @@ class KotlinLightClassContextCache(val project: Project) {
|
|||||||
project,
|
project,
|
||||||
JetFilesProvider.getInstance(project)!!.allInScope(GlobalSearchScope.allScope(project)),
|
JetFilesProvider.getInstance(project)!!.allInScope(GlobalSearchScope.allScope(project)),
|
||||||
trace,
|
trace,
|
||||||
InjectorForJavaDescriptorResolver(project, trace),
|
InjectorForJavaDescriptorResolverUtil.create(project, trace),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
return Result.create(
|
return Result.create(
|
||||||
|
|||||||
+2
-1
@@ -34,6 +34,7 @@ import com.intellij.util.messages.MessageBusConnection;
|
|||||||
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.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
@@ -163,7 +164,7 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
|||||||
@NotNull
|
@NotNull
|
||||||
private static String getDefaultSignature(@NotNull Project project, @NotNull PsiMember psiMember) {
|
private static String getDefaultSignature(@NotNull Project project, @NotNull PsiMember psiMember) {
|
||||||
BindingTraceContext trace = new BindingTraceContext();
|
BindingTraceContext trace = new BindingTraceContext();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, trace);
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, trace);
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
PsiClass containingClass = psiMember.getContainingClass();
|
PsiClass containingClass = psiMember.getContainingClass();
|
||||||
|
|||||||
+2
-1
@@ -36,6 +36,7 @@ import com.intellij.util.ui.UIUtil;
|
|||||||
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.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
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.PackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||||
@@ -99,7 +100,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BindingTrace trace = createDelegatingTrace(project);
|
BindingTrace trace = createDelegatingTrace(project);
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, trace);
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, trace);
|
||||||
|
|
||||||
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
|||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
import org.jetbrains.jet.lang.resolve.BindingTraceContext;
|
||||||
@@ -63,7 +64,7 @@ public final class DecompiledDataFactory {
|
|||||||
private DecompiledDataFactory(@NotNull VirtualFile classFile, @NotNull Project project) {
|
private DecompiledDataFactory(@NotNull VirtualFile classFile, @NotNull Project project) {
|
||||||
this.classFile = classFile;
|
this.classFile = classFile;
|
||||||
this.project = project;
|
this.project = project;
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, new BindingTraceContext());
|
||||||
this.javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
this.javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(classFile);
|
VirtualFileKotlinClass kotlinClass = new VirtualFileKotlinClass(classFile);
|
||||||
|
|||||||
@@ -224,6 +224,9 @@ public class JetSourceNavigationHelper {
|
|||||||
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<library module>"),
|
ModuleDescriptorImpl moduleDescriptor = new ModuleDescriptorImpl(Name.special("<library module>"),
|
||||||
AnalyzerFacadeForJVM.DEFAULT_IMPORTS,
|
AnalyzerFacadeForJVM.DEFAULT_IMPORTS,
|
||||||
PlatformToKotlinClassMap.EMPTY);
|
PlatformToKotlinClassMap.EMPTY);
|
||||||
|
|
||||||
|
moduleDescriptor.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
||||||
|
|
||||||
KotlinCodeAnalyzer analyzer = new ResolveSession(
|
KotlinCodeAnalyzer analyzer = new ResolveSession(
|
||||||
project,
|
project,
|
||||||
storageManager,
|
storageManager,
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import com.intellij.testFramework.LightProjectDescriptor;
|
|||||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolverUtil;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -54,7 +55,7 @@ public class SignatureMarkerProviderTest extends LightCodeInsightFixtureTestCase
|
|||||||
ClassDescriptor preResolvedClass = context.get(BindingContext.CLASS, psiClass);
|
ClassDescriptor preResolvedClass = context.get(BindingContext.CLASS, psiClass);
|
||||||
|
|
||||||
InjectorForJavaDescriptorResolver injector =
|
InjectorForJavaDescriptorResolver injector =
|
||||||
new InjectorForJavaDescriptorResolver(project, KotlinSignatureInJavaMarkerProvider.createDelegatingTrace(project));
|
InjectorForJavaDescriptorResolverUtil.create(project, KotlinSignatureInJavaMarkerProvider.createDelegatingTrace(project));
|
||||||
ClassDescriptor reResolvedClass = injector.getJavaDescriptorResolver()
|
ClassDescriptor reResolvedClass = injector.getJavaDescriptorResolver()
|
||||||
.resolveClass(new FqName("java.lang.Thread"), IGNORE_KOTLIN_SOURCES);
|
.resolveClass(new FqName("java.lang.Thread"), IGNORE_KOTLIN_SOURCES);
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,9 @@ public final class AnalyzerFacadeForJS {
|
|||||||
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
||||||
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(
|
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(
|
||||||
storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
|
storageManager, Config.withJsLibAdded(files, config), Predicates.<FqName>alwaysFalse());
|
||||||
return new ResolveSession(config.getProject(), storageManager, createJsModule("<lazy module>"), declarationProviderFactory);
|
ModuleDescriptorImpl module = createJsModule("<lazy module>");
|
||||||
|
module.addFragmentProvider(KotlinBuiltIns.getInstance().getBuiltInsModule().getPackageFragmentProvider());
|
||||||
|
return new ResolveSession(config.getProject(), storageManager, module, declarationProviderFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user