diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 439ce03eeea..194f48efe09 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -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; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java index 526ac9caaf2..68598923041 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java @@ -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()); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java index 325354c6939..7ccd71af97f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java @@ -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 classes = Maps.newLinkedHashMap(); protected final Map packageFragments = Maps.newHashMap(); + protected final Set files = new LinkedHashSet(); private List classesTopologicalOrder = null; private final Map declaringScopes = Maps.newHashMap(); @@ -136,7 +135,11 @@ public class TopDownAnalysisContext implements BodiesResolveContext { @Override public Collection getFiles() { - return packageFragments.keySet(); + return files; + } + + public void addFile(@NotNull JetFile file) { + files.add(file); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 78df03a3ab5..5aa5edb04b7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -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()); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 84f3b3c934f..582c412503a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -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);