JetClassOrObject implements JetNamedDeclaration

This commit is contained in:
Andrey Breslav
2012-12-18 21:20:42 +04:00
parent 91a1a1420d
commit 66aef9a64f
3 changed files with 19 additions and 22 deletions
@@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import java.util.List; import java.util.List;
public interface JetClassOrObject extends PsiNameIdentifierOwner, JetDeclarationContainer, JetElement, JetModifierListOwner, JetDeclaration { public interface JetClassOrObject extends PsiNameIdentifierOwner, JetDeclarationContainer, JetElement, JetModifierListOwner, JetNamedDeclaration {
@Nullable @Nullable
JetDelegationSpecifierList getDelegationSpecifierList(); JetDelegationSpecifierList getDelegationSpecifierList();
@@ -36,6 +36,7 @@ public interface JetClassOrObject extends PsiNameIdentifierOwner, JetDeclaration
// Objects always "have" a primary constructor // Objects always "have" a primary constructor
boolean hasPrimaryConstructor(); boolean hasPrimaryConstructor();
@Override
@Nullable @Nullable
Name getNameAsName(); Name getNameAsName();
@@ -75,21 +75,19 @@ public class JetGotoClassContributor implements GotoClassContributor {
Collection<JetClassOrObject> classesOrObjects = JetShortClassNameIndex.getInstance().get(name, project, scope); Collection<JetClassOrObject> classesOrObjects = JetShortClassNameIndex.getInstance().get(name, project, scope);
for (JetClassOrObject classOrObject : classesOrObjects) { for (JetClassOrObject classOrObject : classesOrObjects) {
if (classOrObject instanceof JetNamedDeclaration) { FqName fqName = JetPsiUtil.getFQName(classOrObject);
FqName fqName = JetPsiUtil.getFQName((JetNamedDeclaration) classOrObject); if (fqName == null || javaQualifiedNames.contains(fqName.toString())) {
if (fqName == null || javaQualifiedNames.contains(fqName.toString())) { continue;
continue; }
}
if (classOrObject instanceof JetObjectDeclaration) { if (classOrObject instanceof JetObjectDeclaration) {
// items.add((JetObjectDeclaration) classOrObject); // items.add((JetObjectDeclaration) classOrObject);
} }
else if (classOrObject instanceof JetClass) { else if (classOrObject instanceof JetClass) {
items.add(classOrObject); items.add(classOrObject);
} }
else { else {
assert false; assert false;
}
} }
} }
@@ -86,13 +86,11 @@ public class JetShortNamesCache extends PsiShortNamesCache {
List<PsiClass> result = new ArrayList<PsiClass>(); List<PsiClass> result = new ArrayList<PsiClass>();
for (JetClassOrObject classOrObject : classOrObjects) { for (JetClassOrObject classOrObject : classOrObjects) {
if (classOrObject instanceof JetNamedDeclaration) { FqName fqName = JetPsiUtil.getFQName(classOrObject);
FqName fqName = JetPsiUtil.getFQName((JetNamedDeclaration) classOrObject); if (fqName != null && fqName.shortName().getName().equals(name)) {
if (fqName != null && fqName.shortName().getName().equals(name)) { PsiClass psiClass = JavaElementFinder.getInstance(project).findClass(fqName.getFqName(), scope);
PsiClass psiClass = JavaElementFinder.getInstance(project).findClass(fqName.getFqName(), scope); if (psiClass != null) {
if (psiClass != null) { result.add(psiClass);
result.add(psiClass);
}
} }
} }
} }