From 5613cb90f9f8f01f90d8c712a2a52665d448d61d Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 24 Jan 2012 15:00:07 +0400 Subject: [PATCH] KT-1036 JetFile -> PsiJavaFile cast problem --- .../lang/resolve/TypeHierarchyResolver.java | 20 +++++++++---------- compiler/testData/resolve/Objects.jet | 2 +- idea/testData/completion/basic/NamedObject.kt | 12 +++++++++++ 3 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 idea/testData/completion/basic/NamedObject.kt 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 852cf89e6f8..d6f870638a7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -79,8 +79,6 @@ public class TypeHierarchyResolver { namespaceScope.changeLockLevel(WritableScope.LockLevel.BOTH); context.getNamespaceScopes().put(file, namespaceScope); -// processImports(namespace, namespaceScope, outerScope); - collectNamespacesAndClassifiers(namespaceScope, namespaceScope, namespaceDescriptor, file.getDeclarations()); } @@ -99,17 +97,16 @@ public class TypeHierarchyResolver { createPrimaryConstructorForObject(null, classObjectDescriptor); mutableClassDescriptor.setClassObjectDescriptor(classObjectDescriptor); } - visitClassOrObject( - klass, - (Map) context.getClasses(), - mutableClassDescriptor - ); + + visitClassOrObject(klass, (Map) context.getClasses(), mutableClassDescriptor); + owner.addClassifierDescriptor(mutableClassDescriptor); } @Override public void visitObjectDeclaration(JetObjectDeclaration declaration) { - createClassDescriptorForObject(declaration, owner, outerScope); + final MutableClassDescriptor objectDescriptor = createClassDescriptorForObject(declaration, owner, outerScope); + context.getTrace().record(FQNAME_TO_CLASS_DESCRIPTOR, JetPsiUtil.getFQName(declaration), objectDescriptor); } @Override @@ -122,7 +119,8 @@ public class TypeHierarchyResolver { context.getClasses().put(enumEntry, classDescriptor); } else { - MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), classObjectDescriptor, outerScope, ClassKind.CLASS); // TODO : Special kind for enum entry classes? + // TODO : Special kind for enum entry classes? + MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), classObjectDescriptor, outerScope, ClassKind.CLASS); visitClassOrObject( enumEntry, (Map) context.getClasses(), @@ -132,13 +130,15 @@ public class TypeHierarchyResolver { } } - private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, @NotNull NamespaceLike owner, JetScope scope) { + private MutableClassDescriptor createClassDescriptorForObject(@NotNull JetClassOrObject declaration, + @NotNull NamespaceLike owner, JetScope scope) { MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), owner, scope, ClassKind.OBJECT) { @Override public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { return ClassObjectStatus.NOT_ALLOWED; } }; + visitClassOrObject(declaration, (Map) context.getObjects(), mutableClassDescriptor); createPrimaryConstructorForObject((JetDeclaration) declaration, mutableClassDescriptor); owner.addObjectDescriptor(mutableClassDescriptor); diff --git a/compiler/testData/resolve/Objects.jet b/compiler/testData/resolve/Objects.jet index 950a4edaa44..3a1c014836d 100644 --- a/compiler/testData/resolve/Objects.jet +++ b/compiler/testData/resolve/Objects.jet @@ -11,7 +11,7 @@ package toplevelObjectDeclarations { } } - object B : `!`A {} + object B : A {} ~ns.x~val x = `A`A.`foo()`foo() diff --git a/idea/testData/completion/basic/NamedObject.kt b/idea/testData/completion/basic/NamedObject.kt new file mode 100644 index 00000000000..20b23963ac8 --- /dev/null +++ b/idea/testData/completion/basic/NamedObject.kt @@ -0,0 +1,12 @@ +package testing + +public object SimpleTestClass { + +} + +fun some() { + S +} + +// EXIST: SimpleTestClass +// EXIST: String \ No newline at end of file