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); return parent != null && parent.getNode().getElementType().equals(JetNodeTypes.CLASS_OBJECT);
} }
@Nullable
public JetClassObject getClassObjectElement() {
if (!isClassObject()) {
return null;
}
return (JetClassObject) getParentByStub();
}
@Override @Override
public boolean hasModifier(JetModifierKeywordToken modifier) { public boolean hasModifier(JetModifierKeywordToken modifier) {
JetModifierList modifierList = getModifierList(); JetModifierList modifierList = getModifierList();
@@ -256,8 +256,12 @@ public class ResolveSession implements KotlinCodeAnalyzer {
@Override @Override
@NotNull @NotNull
public ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject) { public ClassDescriptor getClassDescriptor(@NotNull JetClassOrObject classOrObject) {
if (classOrObject.getParent() instanceof JetClassObject) { if (classOrObject instanceof JetObjectDeclaration) {
return getClassObjectDescriptor((JetClassObject) classOrObject.getParent()); JetObjectDeclaration objectDeclaration = (JetObjectDeclaration) classOrObject;
JetClassObject classObjectElement = objectDeclaration.getClassObjectElement();
if (classObjectElement != null) {
return getClassObjectDescriptor(classObjectElement);
}
} }
JetScope resolutionScope = getScopeProvider().getResolutionScopeForDeclaration(classOrObject); JetScope resolutionScope = getScopeProvider().getResolutionScopeForDeclaration(classOrObject);
Name name = safeNameForLazyResolve(classOrObject.getNameAsName()); Name name = safeNameForLazyResolve(classOrObject.getNameAsName());