Methods pulled up into the interface

This commit is contained in:
Andrey Breslav
2014-04-21 21:09:39 +04:00
parent 143b78d031
commit 4d425aff11
5 changed files with 81 additions and 14 deletions
@@ -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.diagnostics.Errors;
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.name.FqName;
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()) {
FqName fqName = entry.getKey();
Collection<JetElement> declarationsOrPackageDirectives = entry.getValue();
@@ -417,7 +417,7 @@ public class DeclarationResolver {
}
@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();
Set<DeclarationDescriptor> descriptors = new HashSet<DeclarationDescriptor>();
@@ -23,8 +23,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
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.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -82,7 +82,7 @@ public class LazyTopDownAnalyzer {
@NotNull
public TopDownAnalysisContext analyzeDeclarations(
final ResolveSession resolveSession,
final KotlinCodeAnalyzer resolveSession,
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
@NotNull Collection<? extends PsiElement> declarations
) {
@@ -230,7 +230,7 @@ public class LazyTopDownAnalyzer {
return c;
}
private static void resolveImportsInAllFiles(TopDownAnalysisContext c, ResolveSession resolveSession) {
private static void resolveImportsInAllFiles(TopDownAnalysisContext c, KotlinCodeAnalyzer resolveSession) {
for (JetFile file : c.getFiles()) {
resolveAndCheckImports(file, resolveSession);
}
@@ -248,7 +248,7 @@ public class LazyTopDownAnalyzer {
private static void createPropertyDescriptors(
TopDownAnalysisContext c,
ResolveSession resolveSession,
KotlinCodeAnalyzer resolveSession,
Multimap<FqName, JetElement> topLevelFqNames,
List<JetProperty> properties
) {
@@ -266,7 +266,7 @@ public class LazyTopDownAnalyzer {
private static void createFunctionDescriptors(
TopDownAnalysisContext c,
ResolveSession resolveSession,
KotlinCodeAnalyzer resolveSession,
List<JetNamedFunction> 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);
fileScope.forceResolveAllContents();
}
private static void registerScope(
@NotNull TopDownAnalysisContext c,
@NotNull ResolveSession resolveSession,
@NotNull KotlinCodeAnalyzer resolveSession,
@Nullable JetDeclaration declaration
) {
if (declaration == null) return;
@@ -17,26 +17,47 @@
package org.jetbrains.jet.lang.resolve.lazy;
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.DeclarationDescriptor;
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.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetScript;
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 {
@Nullable
LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName);
@NotNull
ModuleDescriptor getModuleDescriptor();
@NotNull
@ReadOnly
Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName);
@NotNull
ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject);
@NotNull
ScriptDescriptor getScriptDescriptor(@NotNull JetScript script);
@NotNull
BindingContext getBindingContext();
@NotNull
DeclarationDescriptor resolveToDescriptor(JetDeclaration declaration);
@NotNull
ScopeProvider getScopeProvider();
/**
* Forces all descriptors to be resolved.
*
@@ -192,6 +192,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
return packageFragmentProvider;
}
@Override
@Nullable
public LazyPackageDescriptor getPackageFragment(@NotNull FqName fqName) {
return packages.invoke(fqName);
@@ -227,6 +228,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
return exceptionTracker;
}
@Override
@NotNull
@ReadOnly
public Collection<ClassDescriptor> getTopLevelClassDescriptors(@NotNull FqName fqName) {
@@ -288,6 +290,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
return (ClassDescriptor) classifier;
}
@Override
@NotNull
public ScriptDescriptor getScriptDescriptor(@NotNull JetScript script) {
return scriptDescriptors.invoke(script);
@@ -472,6 +475,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
}
}
@Override
@NotNull
public ScopeProvider getScopeProvider() {
return scopeProvider;
@@ -19,17 +19,24 @@ package org.jetbrains.jet.plugin.project;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.ModificationTracker;
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.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetClassOrObject;
import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer;
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.storage.ExceptionTracker;
import org.jetbrains.jet.storage.StorageManager;
import java.util.Collection;
public class ResolveSessionForBodies implements KotlinCodeAnalyzer, ModificationTracker {
private final Object createdForObject;
@@ -100,4 +107,39 @@ public class ResolveSessionForBodies implements KotlinCodeAnalyzer, Modification
public KotlinResolveCache getResolveCache() {
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();
}
}