diff --git a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java index 570da1c1692..3deec13bd1f 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java @@ -71,16 +71,13 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { } BindingTraceContext context = new BindingTraceContext(); - NamespaceDescriptorImpl fakeRootNamespace = new NamespaceDescriptorImpl(new ModuleDescriptor(""), - Collections.emptyList(), ""); - NamespaceDescriptorImpl jetNamespace = new NamespaceDescriptorImpl(fakeRootNamespace, - Collections.emptyList(), "jet"); + FakeJetNamespaceDescriptor jetNamespace = new FakeJetNamespaceDescriptor(); context.record(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, new FqName("jet"), jetNamespace); WritableScopeImpl scope = new WritableScopeImpl(JetScope.EMPTY, jetNamespace, RedeclarationHandler.THROW_EXCEPTION) .setDebugName("Builtin classes scope"); scope.changeLockLevel(WritableScope.LockLevel.BOTH); - jetNamespace.initialize(scope); + jetNamespace.setMemberScope(scope); TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, getJetFiles("jet.src")); @@ -89,7 +86,7 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { scope = new WritableScopeImpl(scope, jetNamespace, RedeclarationHandler.THROW_EXCEPTION).setDebugName("Builtin classes scope #2"); scope.changeLockLevel(WritableScope.LockLevel.BOTH); scope.addClassifierAlias("Unit", tuple0); - jetNamespace.initialize(scope); + jetNamespace.setMemberScope(scope); TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, getJetFiles("jet")); AnalyzingUtils.throwExceptionOnErrors(context.getBindingContext()); @@ -165,4 +162,24 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { } return null; } + + private static class FakeJetNamespaceDescriptor extends NamespaceDescriptorImpl { + private WritableScope memberScope; + + private FakeJetNamespaceDescriptor() { + super(new NamespaceDescriptorImpl(new ModuleDescriptor(""), + Collections.emptyList(), + ""), Collections.emptyList(), "jet"); + } + + void setMemberScope(WritableScope memberScope) { + this.memberScope = memberScope; + } + + @NotNull + @Override + public WritableScope getMemberScope() { + return memberScope; + } + } }