From d3c37f65e4eb02bb9abd8d820bea0de16f77c482 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 7 Feb 2012 13:03:40 +0400 Subject: [PATCH] KT-1051 Java interoperability completion - invalidating java packages strategy --- .../org/jetbrains/jet/asJava/JavaElementFinder.java | 6 +++--- .../src/org/jetbrains/jet/asJava/JetLightPackage.java | 11 +++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JavaElementFinder.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JavaElementFinder.java index f747a8d878e..aa2cc32167d 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JavaElementFinder.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JavaElementFinder.java @@ -140,8 +140,8 @@ public class JavaElementFinder extends PsiElementFinder { final List 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())); } } diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightPackage.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightPackage.java index 35fc246573b..0a7fe7e2532 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightPackage.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetLightPackage.java @@ -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(); } } \ No newline at end of file