Methods pulled up into the interface
This commit is contained in:
@@ -32,7 +32,7 @@ import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilder;
|
import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilder;
|
||||||
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.*;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor;
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor;
|
||||||
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;
|
||||||
@@ -396,7 +396,7 @@ public class DeclarationResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkRedeclarationsInPackages(@NotNull ResolveSession resolveSession, @NotNull Multimap<FqName, JetElement> topLevelFqNames) {
|
public void checkRedeclarationsInPackages(@NotNull KotlinCodeAnalyzer resolveSession, @NotNull Multimap<FqName, JetElement> topLevelFqNames) {
|
||||||
for (Map.Entry<FqName, Collection<JetElement>> entry : topLevelFqNames.asMap().entrySet()) {
|
for (Map.Entry<FqName, Collection<JetElement>> entry : topLevelFqNames.asMap().entrySet()) {
|
||||||
FqName fqName = entry.getKey();
|
FqName fqName = entry.getKey();
|
||||||
Collection<JetElement> declarationsOrPackageDirectives = entry.getValue();
|
Collection<JetElement> declarationsOrPackageDirectives = entry.getValue();
|
||||||
@@ -417,7 +417,7 @@ public class DeclarationResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private static Set<DeclarationDescriptor> getTopLevelDescriptorsByFqName(@NotNull ResolveSession resolveSession, @NotNull FqName fqName) {
|
private static Set<DeclarationDescriptor> getTopLevelDescriptorsByFqName(@NotNull KotlinCodeAnalyzer resolveSession, @NotNull FqName fqName) {
|
||||||
FqName parentFqName = fqName.parent();
|
FqName parentFqName = fqName.parent();
|
||||||
|
|
||||||
Set<DeclarationDescriptor> descriptors = new HashSet<DeclarationDescriptor>();
|
Set<DeclarationDescriptor> descriptors = new HashSet<DeclarationDescriptor>();
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
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.lazy.KotlinCodeAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyImportScope;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyImportScope;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public TopDownAnalysisContext analyzeDeclarations(
|
public TopDownAnalysisContext analyzeDeclarations(
|
||||||
final ResolveSession resolveSession,
|
final KotlinCodeAnalyzer resolveSession,
|
||||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||||
@NotNull Collection<? extends PsiElement> declarations
|
@NotNull Collection<? extends PsiElement> declarations
|
||||||
) {
|
) {
|
||||||
@@ -230,7 +230,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void resolveImportsInAllFiles(TopDownAnalysisContext c, ResolveSession resolveSession) {
|
private static void resolveImportsInAllFiles(TopDownAnalysisContext c, KotlinCodeAnalyzer resolveSession) {
|
||||||
for (JetFile file : c.getFiles()) {
|
for (JetFile file : c.getFiles()) {
|
||||||
resolveAndCheckImports(file, resolveSession);
|
resolveAndCheckImports(file, resolveSession);
|
||||||
}
|
}
|
||||||
@@ -248,7 +248,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
|
|
||||||
private static void createPropertyDescriptors(
|
private static void createPropertyDescriptors(
|
||||||
TopDownAnalysisContext c,
|
TopDownAnalysisContext c,
|
||||||
ResolveSession resolveSession,
|
KotlinCodeAnalyzer resolveSession,
|
||||||
Multimap<FqName, JetElement> topLevelFqNames,
|
Multimap<FqName, JetElement> topLevelFqNames,
|
||||||
List<JetProperty> properties
|
List<JetProperty> properties
|
||||||
) {
|
) {
|
||||||
@@ -266,7 +266,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
|
|
||||||
private static void createFunctionDescriptors(
|
private static void createFunctionDescriptors(
|
||||||
TopDownAnalysisContext c,
|
TopDownAnalysisContext c,
|
||||||
ResolveSession resolveSession,
|
KotlinCodeAnalyzer resolveSession,
|
||||||
List<JetNamedFunction> functions
|
List<JetNamedFunction> functions
|
||||||
) {
|
) {
|
||||||
for (JetNamedFunction function : functions) {
|
for (JetNamedFunction function : functions) {
|
||||||
@@ -278,14 +278,14 @@ public class LazyTopDownAnalyzer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void resolveAndCheckImports(@NotNull JetFile file, @NotNull ResolveSession resolveSession) {
|
private static void resolveAndCheckImports(@NotNull JetFile file, @NotNull KotlinCodeAnalyzer resolveSession) {
|
||||||
LazyImportScope fileScope = resolveSession.getScopeProvider().getExplicitImportsScopeForFile(file);
|
LazyImportScope fileScope = resolveSession.getScopeProvider().getExplicitImportsScopeForFile(file);
|
||||||
fileScope.forceResolveAllContents();
|
fileScope.forceResolveAllContents();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerScope(
|
private static void registerScope(
|
||||||
@NotNull TopDownAnalysisContext c,
|
@NotNull TopDownAnalysisContext c,
|
||||||
@NotNull ResolveSession resolveSession,
|
@NotNull KotlinCodeAnalyzer resolveSession,
|
||||||
@Nullable JetDeclaration declaration
|
@Nullable JetDeclaration declaration
|
||||||
) {
|
) {
|
||||||
if (declaration == null) return;
|
if (declaration == null) return;
|
||||||
|
|||||||
@@ -17,26 +17,47 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.lazy;
|
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.ReadOnly;
|
||||||
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;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetScript;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public interface KotlinCodeAnalyzer {
|
public interface KotlinCodeAnalyzer {
|
||||||
|
@Nullable
|
||||||
|
LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
ModuleDescriptor getModuleDescriptor();
|
ModuleDescriptor getModuleDescriptor();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@ReadOnly
|
||||||
|
Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject);
|
ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject);
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
ScriptDescriptor getScriptDescriptor(@NotNull JetScript script);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
BindingContext getBindingContext();
|
BindingContext getBindingContext();
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
DeclarationDescriptor resolveToDescriptor(JetDeclaration declaration);
|
DeclarationDescriptor resolveToDescriptor(JetDeclaration declaration);
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
ScopeProvider getScopeProvider();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Forces all descriptors to be resolved.
|
* Forces all descriptors to be resolved.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
return packageFragmentProvider;
|
return packageFragmentProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName) {
|
public LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||||
return packages.invoke(fqName);
|
return packages.invoke(fqName);
|
||||||
@@ -227,6 +228,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
return exceptionTracker;
|
return exceptionTracker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
@ReadOnly
|
@ReadOnly
|
||||||
public Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName) {
|
public Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName) {
|
||||||
@@ -288,6 +290,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
return (ClassDescriptor) classifier;
|
return (ClassDescriptor) classifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public ScriptDescriptor getScriptDescriptor(@NotNull JetScript script) {
|
public ScriptDescriptor getScriptDescriptor(@NotNull JetScript script) {
|
||||||
return scriptDescriptors.invoke(script);
|
return scriptDescriptors.invoke(script);
|
||||||
@@ -472,6 +475,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public ScopeProvider getScopeProvider() {
|
public ScopeProvider getScopeProvider() {
|
||||||
return scopeProvider;
|
return scopeProvider;
|
||||||
|
|||||||
@@ -19,17 +19,24 @@ package org.jetbrains.jet.plugin.project;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.util.ModificationTracker;
|
import com.intellij.openapi.util.ModificationTracker;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.annotations.ReadOnly;
|
||||||
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;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.psi.JetElement;
|
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
|
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.KotlinResolveCache;
|
import org.jetbrains.jet.plugin.caches.resolve.KotlinResolveCache;
|
||||||
|
import org.jetbrains.jet.storage.ExceptionTracker;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public class ResolveSessionForBodies implements KotlinCodeAnalyzer, ModificationTracker {
|
public class ResolveSessionForBodies implements KotlinCodeAnalyzer, ModificationTracker {
|
||||||
private final Object createdForObject;
|
private final Object createdForObject;
|
||||||
@@ -100,4 +107,39 @@ public class ResolveSessionForBodies implements KotlinCodeAnalyzer, Modification
|
|||||||
public KotlinResolveCache getResolveCache() {
|
public KotlinResolveCache getResolveCache() {
|
||||||
return resolveCache;
|
return resolveCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
public LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||||
|
return resolveSession.getPackageFragment(fqName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
@ReadOnly
|
||||||
|
public Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName) {
|
||||||
|
return resolveSession.getTopLevelClassDescriptors(fqName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public ScriptDescriptor getScriptDescriptor(@NotNull JetScript script) {
|
||||||
|
return resolveSession.getScriptDescriptor(script);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public ScopeProvider getScopeProvider() {
|
||||||
|
return resolveSession.getScopeProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public StorageManager getStorageManager() {
|
||||||
|
return resolveSession.getStorageManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public ExceptionTracker getExceptionTracker() {
|
||||||
|
return resolveSession.getExceptionTracker();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user