From a6218a4c11f665a89545c67960815407a2382c60 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 20 Mar 2014 13:14:16 +0100 Subject: [PATCH] process declarations for cls file should provide classes, otherwise cls classes in default packages have no chance to be found from inside cls (IDEA-122486) --- .../com/intellij/psi/PsiDiamondTypeImpl.java | 3 +-- .../psi/impl/compiled/ClsFileImpl.java | 18 ++++++++++++++++++ .../javadocIG/classTypeParamsPresentation.html | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java index d92ec8c0673c..028a577e33b4 100644 --- a/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/PsiDiamondTypeImpl.java @@ -278,8 +278,7 @@ public class PsiDiamondTypeImpl extends PsiDiamondType { buf.append("{}"); try { - final PsiNameIdentifierOwner owner = constructor != null ? constructor : containingClass; - return elementFactory.createMethodFromText(buf.toString(), owner instanceof PsiCompiledElement ? ((PsiCompiledElement)owner).getMirror() : owner); + return elementFactory.createMethodFromText(buf.toString(), constructor != null ? constructor : containingClass); } catch (IncorrectOperationException e) { return null; diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java index 8eaba9c54615..ec5fd7c21433 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsFileImpl.java @@ -49,6 +49,8 @@ import com.intellij.psi.impl.source.SourceTreeToPsiMap; import com.intellij.psi.impl.source.resolve.FileContextUtil; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.impl.source.tree.TreeElement; +import com.intellij.psi.scope.ElementClassHint; +import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.stubs.*; import com.intellij.psi.util.CachedValueProvider; @@ -415,6 +417,22 @@ public class ClsFileImpl extends ClsRepositoryPsiElement return (PsiClassHolderFileStub)getStubTree().getRoot(); } + @Override + public boolean processDeclarations(@NotNull PsiScopeProcessor processor, + @NotNull ResolveState state, + PsiElement lastParent, + @NotNull PsiElement place) { + processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, this); + final ElementClassHint classHint = processor.getHint(ElementClassHint.KEY); + if (classHint == null || classHint.shouldProcess(ElementClassHint.DeclarationKind.CLASS)) { + final PsiClass[] classes = getClasses(); + for (PsiClass aClass : classes) { + if (!processor.execute(aClass, state)) return false; + } + } + return true; + } + @Override @NotNull public StubTree getStubTree() { diff --git a/java/java-tests/testData/codeInsight/javadocIG/classTypeParamsPresentation.html b/java/java-tests/testData/codeInsight/javadocIG/classTypeParamsPresentation.html index 789ba1067959..ea45f5f35706 100644 --- a/java/java-tests/testData/codeInsight/javadocIG/classTypeParamsPresentation.html +++ b/java/java-tests/testData/codeInsight/javadocIG/classTypeParamsPresentation.html @@ -1,3 +1,3 @@ [< java 1.7 >] java.util - public class java.util.ArrayList<E> extends java.util.AbstractList<E> + public class ArrayList<E> extends java.util.AbstractList<E> implements java.util.List<E>, java.util.RandomAccess, java.lang.Cloneable, java.io.Serializable \ No newline at end of file