KT-1036 JetFile -> PsiJavaFile cast problem

This commit is contained in:
Nikolay Krasko
2012-01-24 15:00:07 +04:00
parent 590a81feae
commit 5613cb90f9
3 changed files with 23 additions and 11 deletions
@@ -79,8 +79,6 @@ public class TypeHierarchyResolver {
namespaceScope.changeLockLevel(WritableScope.LockLevel.BOTH); namespaceScope.changeLockLevel(WritableScope.LockLevel.BOTH);
context.getNamespaceScopes().put(file, namespaceScope); context.getNamespaceScopes().put(file, namespaceScope);
// processImports(namespace, namespaceScope, outerScope);
collectNamespacesAndClassifiers(namespaceScope, namespaceScope, namespaceDescriptor, file.getDeclarations()); collectNamespacesAndClassifiers(namespaceScope, namespaceScope, namespaceDescriptor, file.getDeclarations());
} }
@@ -99,17 +97,16 @@ public class TypeHierarchyResolver {
createPrimaryConstructorForObject(null, classObjectDescriptor); createPrimaryConstructorForObject(null, classObjectDescriptor);
mutableClassDescriptor.setClassObjectDescriptor(classObjectDescriptor); mutableClassDescriptor.setClassObjectDescriptor(classObjectDescriptor);
} }
visitClassOrObject(
klass, visitClassOrObject(klass, (Map) context.getClasses(), mutableClassDescriptor);
(Map) context.getClasses(),
mutableClassDescriptor
);
owner.addClassifierDescriptor(mutableClassDescriptor); owner.addClassifierDescriptor(mutableClassDescriptor);
} }
@Override @Override
public void visitObjectDeclaration(JetObjectDeclaration declaration) { 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 @Override
@@ -122,7 +119,8 @@ public class TypeHierarchyResolver {
context.getClasses().put(enumEntry, classDescriptor); context.getClasses().put(enumEntry, classDescriptor);
} }
else { 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( visitClassOrObject(
enumEntry, enumEntry,
(Map) context.getClasses(), (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) { MutableClassDescriptor mutableClassDescriptor = new MutableClassDescriptor(context.getTrace(), owner, scope, ClassKind.OBJECT) {
@Override @Override
public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) {
return ClassObjectStatus.NOT_ALLOWED; return ClassObjectStatus.NOT_ALLOWED;
} }
}; };
visitClassOrObject(declaration, (Map) context.getObjects(), mutableClassDescriptor); visitClassOrObject(declaration, (Map) context.getObjects(), mutableClassDescriptor);
createPrimaryConstructorForObject((JetDeclaration) declaration, mutableClassDescriptor); createPrimaryConstructorForObject((JetDeclaration) declaration, mutableClassDescriptor);
owner.addObjectDescriptor(mutableClassDescriptor); owner.addObjectDescriptor(mutableClassDescriptor);
+1 -1
View File
@@ -11,7 +11,7 @@ package toplevelObjectDeclarations {
} }
} }
object B : `!`A {} object B : A {}
~ns.x~val x = `A`A.`foo()`foo() ~ns.x~val x = `A`A.`foo()`foo()
@@ -0,0 +1,12 @@
package testing
public object SimpleTestClass {
}
fun some() {
S<caret>
}
// EXIST: SimpleTestClass
// EXIST: String