Files in TopDownAnalysisContext are stored explicitly
To avoid the necessity of registering mutable package fragments in order to register files
This commit is contained in:
@@ -96,7 +96,7 @@ public class DeclarationResolver {
|
||||
}
|
||||
|
||||
private void checkModifiersAndAnnotationsInPackageDirectives(@NotNull TopDownAnalysisContext c) {
|
||||
for (JetFile file : c.getPackageFragments().keySet()) {
|
||||
for (JetFile file : c.getFiles()) {
|
||||
JetPackageDirective packageDirective = file.getPackageDirective();
|
||||
if (packageDirective == null) continue;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ public class ImportsResolver {
|
||||
}
|
||||
|
||||
private void processImports(@NotNull TopDownAnalysisContext c, @NotNull LookupMode lookupMode) {
|
||||
for (JetFile file : c.getPackageFragments().keySet()) {
|
||||
for (JetFile file : c.getFiles()) {
|
||||
WritableScope fileScope = c.getFileScopes().get(file);
|
||||
processImportsInFile(lookupMode, fileScope, Lists.newArrayList(file.getImportDirectives()), JetPsiUtil.getFQName(file).isRoot());
|
||||
}
|
||||
|
||||
@@ -33,9 +33,7 @@ import org.jetbrains.jet.storage.ExceptionTracker;
|
||||
import org.jetbrains.jet.storage.StorageManager;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
|
||||
@@ -43,6 +41,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
|
||||
private final Map<JetClassOrObject, ClassDescriptorWithResolutionScopes> classes = Maps.newLinkedHashMap();
|
||||
protected final Map<JetFile, MutablePackageFragmentDescriptor> packageFragments = Maps.newHashMap();
|
||||
protected final Set<JetFile> files = new LinkedHashSet<JetFile>();
|
||||
private List<MutableClassDescriptorLite> classesTopologicalOrder = null;
|
||||
|
||||
private final Map<JetDeclaration, JetScope> declaringScopes = Maps.newHashMap();
|
||||
@@ -136,7 +135,11 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
|
||||
@Override
|
||||
public Collection<JetFile> getFiles() {
|
||||
return packageFragments.keySet();
|
||||
return files;
|
||||
}
|
||||
|
||||
public void addFile(@NotNull JetFile file) {
|
||||
files.add(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -167,6 +167,9 @@ public class TopDownAnalyzer {
|
||||
else {
|
||||
JetPackageDirective packageDirective = file.getPackageDirective();
|
||||
assert packageDirective != null : "No package in a non-script file: " + file;
|
||||
|
||||
c.addFile(file);
|
||||
|
||||
DescriptorResolver.resolvePackageHeader(packageDirective, moduleDescriptor, trace);
|
||||
registerDeclarations(file.getDeclarations());
|
||||
}
|
||||
|
||||
@@ -461,6 +461,7 @@ public class TypeHierarchyResolver {
|
||||
public void visitJetFile(@NotNull JetFile file) {
|
||||
MutablePackageFragmentDescriptor packageFragment = getOrCreatePackageFragmentForFile(file);
|
||||
c.getPackageFragments().put(file, packageFragment);
|
||||
c.addFile(file);
|
||||
|
||||
PackageViewDescriptor packageView = packageFragment.getContainingDeclaration().getPackage(packageFragment.getFqName());
|
||||
ChainedScope rootPlusPackageScope = new ChainedScope(packageView, "Root scope for " + file, packageView.getMemberScope(), outerScope);
|
||||
|
||||
Reference in New Issue
Block a user