diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java index 38ddbe25f13..56dbd4502d2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ScopeProvider.java @@ -60,17 +60,28 @@ public class ScopeProvider { WritableScope writableScope = new WritableScopeImpl( JetScope.EMPTY, packageDescriptor, RedeclarationHandler.DO_NOTHING, "File scope for declaration resolution"); - writableScope.importScope(resolveSession.getPackageDescriptorByFqName(FqName.ROOT).getMemberScope()); - List importDirectives = Lists.newArrayList(); - resolveSession.getModuleConfiguration().addDefaultImports(importDirectives); - importDirectives.addAll(file.getImportDirectives()); + + NamespaceDescriptor rootPackageDescriptor = resolveSession.getPackageDescriptorByFqName(FqName.ROOT); + if (rootPackageDescriptor == null) { + throw new IllegalStateException("Root package not found"); + } + + writableScope.importScope(rootPackageDescriptor.getMemberScope()); + + // Don't import twice + if (!packageDescriptor.getQualifiedName().equals(FqName.ROOT)) { + writableScope.importScope(packageDescriptor.getMemberScope()); + } + + List importDirectives = Lists.newArrayList(file.getImportDirectives()); + ImportsResolver.processImportsInFile(true, writableScope, importDirectives, - resolveSession.getPackageDescriptorByFqName(FqName.ROOT).getMemberScope(), + rootPackageDescriptor.getMemberScope(), resolveSession.getModuleConfiguration(), resolveSession.getTrace(), resolveSession.getInjector().getQualifiedExpressionResolver()); - writableScope.importScope(packageDescriptor.getMemberScope()); writableScope.changeLockLevel(WritableScope.LockLevel.READING); + // TODO: Cache return writableScope; }