Retrieve JetClassObject element by stub in ResolveSession#getClassDescriptor()

This commit is contained in:
Pavel V. Talanov
2014-04-04 19:13:53 +04:00
parent faa7f8fc6b
commit cb4dadb9aa
2 changed files with 14 additions and 2 deletions
@@ -101,6 +101,14 @@ public class JetObjectDeclaration extends JetNamedDeclarationStub<PsiJetObjectSt
return parent != null && parent.getNode().getElementType().equals(JetNodeTypes.CLASS_OBJECT);
}
@Nullable
public JetClassObject getClassObjectElement() {
if (!isClassObject()) {
return null;
}
return (JetClassObject) getParentByStub();
}
@Override
public boolean hasModifier(JetModifierKeywordToken modifier) {
JetModifierList modifierList = getModifierList();
@@ -256,8 +256,12 @@ public class ResolveSession implements KotlinCodeAnalyzer {
@Override
@NotNull
public ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject) {
if (classOrObject.getParent() instanceof JetClassObject) {
return getClassObjectDescriptor((JetClassObject) classOrObject.getParent());
if (classOrObject instanceof JetObjectDeclaration) {
JetObjectDeclaration objectDeclaration = (JetObjectDeclaration) classOrObject;
JetClassObject classObjectElement = objectDeclaration.getClassObjectElement();
if (classObjectElement != null) {
return getClassObjectDescriptor(classObjectElement);
}
}
JetScope resolutionScope = getScopeProvider().getResolutionScopeForDeclaration(classOrObject);
Name name = safeNameForLazyResolve(classOrObject.getNameAsName());