From cf3217cdc188b29998ac1b901391339369eeb655 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Mon, 14 Nov 2011 21:16:32 +0400 Subject: [PATCH] SOE fix --- idea/src/META-INF/plugin.xml | 2 -- .../jet/plugin/java/JavaElementFinder.java | 35 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 1eb4c8e357b..e767fd35eb3 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -57,8 +57,6 @@ - diff --git a/idea/src/org/jetbrains/jet/plugin/java/JavaElementFinder.java b/idea/src/org/jetbrains/jet/plugin/java/JavaElementFinder.java index 6b66dda97b0..7cfa0fe1b86 100644 --- a/idea/src/org/jetbrains/jet/plugin/java/JavaElementFinder.java +++ b/idea/src/org/jetbrains/jet/plugin/java/JavaElementFinder.java @@ -6,6 +6,7 @@ package org.jetbrains.jet.plugin.java; import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import com.intellij.openapi.compiler.ex.CompilerPathsEx; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; @@ -30,6 +31,8 @@ import org.jetbrains.jet.codegen.ClassBuilder; import org.jetbrains.jet.codegen.ClassBuilderFactory; import org.jetbrains.jet.codegen.CodegenUtil; import org.jetbrains.jet.codegen.GenerationState; +import org.jetbrains.jet.lang.psi.JetClassOrObject; +import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetNamespace; import org.jetbrains.jet.lang.resolve.AnalyzingUtils; @@ -37,11 +40,11 @@ import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.JavaDefaultImports; import org.jetbrains.jet.plugin.JetFileType; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; public class JavaElementFinder extends PsiElementFinder { + private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.plugin.java.JavaElementFinder"); + private final Project project; public JavaElementFinder(Project project) { @@ -76,6 +79,28 @@ public class JavaElementFinder extends PsiElementFinder { return answer.toArray(new PsiClass[answer.size()]); } + @Override + public Set getClassNames(@NotNull PsiPackage psiPackage, @NotNull GlobalSearchScope scope) { + Set answer = new HashSet(); + + String packageFQN = psiPackage.getQualifiedName(); + for (PsiFile psiFile : collectProjectFiles(project, GlobalSearchScope.allScope(project))) { + if (psiFile instanceof JetFile) { + final JetNamespace rootNamespace = ((JetFile) psiFile).getRootNamespace(); + if (packageFQN.equals(CodegenUtil.getFQName(rootNamespace))) { + answer.add("namespace"); + for (JetDeclaration declaration : rootNamespace.getDeclarations()) { + if (declaration instanceof JetClassOrObject) { + answer.add(declaration.getName()); + } + } + } + } + } + + return answer; + } + @Override public PsiPackage findPackage(@NotNull String qualifiedName) { final List psiFiles = collectProjectFiles(project, GlobalSearchScope.allScope(project)); @@ -168,7 +193,9 @@ public class JavaElementFinder extends PsiElementFinder { } finally { final StubElement pop = stubStack.pop(); - assert pop == fileStub : "Unbalanced stack operations"; + if (pop != fileStub) { + LOG.error("Unbalanced stack operations"); + } } } };