KT-1051 Java interoperability completion - invalidating java packages strategy
This commit is contained in:
@@ -140,8 +140,8 @@ public class JavaElementFinder extends PsiElementFinder {
|
|||||||
final List<JetFile> psiFiles = collectProjectJetFiles(project, GlobalSearchScope.allScope(project));
|
final List<JetFile> psiFiles = collectProjectJetFiles(project, GlobalSearchScope.allScope(project));
|
||||||
|
|
||||||
for (JetFile psiFile : psiFiles) {
|
for (JetFile psiFile : psiFiles) {
|
||||||
if (JetPsiUtil.getFQName(psiFile).startsWith(qualifiedName)) {
|
if (QualifiedNamesUtil.isSubpackageOf(JetPsiUtil.getFQName(psiFile), qualifiedName)) {
|
||||||
return new JetLightPackage(psiManager, 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);
|
final String subPackageFQN = QualifiedNamesUtil.plusOneSegment(psiPackage.getQualifiedName(), jetRootNamespace);
|
||||||
if (subPackageFQN != null) {
|
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
|
* @author Nikolay Krasko
|
||||||
*/
|
*/
|
||||||
public class JetLightPackage extends PsiPackageImpl {
|
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);
|
super(manager, qualifiedName);
|
||||||
|
this.namespaceElement = namespaceElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PsiElement copy() {
|
public PsiElement copy() {
|
||||||
return new JetLightPackage(getManager(), getQualifiedName());
|
return new JetLightPackage(getManager(), getQualifiedName(), namespaceElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValid() {
|
public boolean isValid() {
|
||||||
// TODO: invalidate properly
|
return namespaceElement.isValid();
|
||||||
return super.isValid();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user