KT-1051 Java interoperability completion - invalidating java packages strategy

This commit is contained in:
Nikolay Krasko
2012-02-07 13:03:40 +04:00
parent a82b3dacb8
commit d3c37f65e4
2 changed files with 10 additions and 7 deletions
@@ -140,8 +140,8 @@ public class JavaElementFinder extends PsiElementFinder {
final List<JetFile> psiFiles = collectProjectJetFiles(project, GlobalSearchScope.allScope(project));
for (JetFile psiFile : psiFiles) {
if (JetPsiUtil.getFQName(psiFile).startsWith(qualifiedName)) {
return new JetLightPackage(psiManager, qualifiedName);
if (QualifiedNamesUtil.isSubpackageOf(JetPsiUtil.getFQName(psiFile), qualifiedName)) {
return new JetLightPackage(psiManager, qualifiedName, psiFile.getNamespaceHeader());
}
}
@@ -160,7 +160,7 @@ public class JavaElementFinder extends PsiElementFinder {
final String subPackageFQN = QualifiedNamesUtil.plusOneSegment(psiPackage.getQualifiedName(), jetRootNamespace);
if (subPackageFQN != null) {
answer.add(new JetLightPackage(psiManager, subPackageFQN));
answer.add(new JetLightPackage(psiManager, subPackageFQN, psiFile.getNamespaceHeader()));
}
}
@@ -10,18 +10,21 @@ import com.intellij.psi.impl.file.PsiPackageImpl;
* @author Nikolay Krasko
*/
public class JetLightPackage extends PsiPackageImpl {
public JetLightPackage(PsiManager manager, String qualifiedName) {
private final PsiElement namespaceElement;
public JetLightPackage(PsiManager manager, String qualifiedName, PsiElement namespaceElement) {
super(manager, qualifiedName);
this.namespaceElement = namespaceElement;
}
@Override
public PsiElement copy() {
return new JetLightPackage(getManager(), getQualifiedName());
return new JetLightPackage(getManager(), getQualifiedName(), namespaceElement);
}
@Override
public boolean isValid() {
// TODO: invalidate properly
return super.isValid();
return namespaceElement.isValid();
}
}