From f5f812435077b7822924524e2cd062b8f59e83f2 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 5 Jun 2014 15:23:07 +0400 Subject: [PATCH] java: helper method for Kotlin --- .../psi/impl/compiled/ClsParameterImpl.java | 37 ++++++++++++------- .../intellij/psi/ClsRepositoryUseTest.java | 3 ++ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java index 13da952c7e1c..b4b338523947 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/compiled/ClsParameterImpl.java @@ -66,30 +66,39 @@ public class ClsParameterImpl extends ClsRepositoryPsiElement String name = myName; if (name == null) { - if (DumbService.getInstance(getProject()).isDumb()) { - return null; - } - - ClsMethodImpl method = (ClsMethodImpl)getDeclarationScope(); - PsiMethod sourceMethod = method.getSourceMirrorMethod(); - if (sourceMethod != null) { - assert sourceMethod != method : method; - name = sourceMethod.getParameterList().getParameters()[getIndex()].getName(); + PsiParameterStubImpl parameterStub = (PsiParameterStubImpl)getStub(); + if (!parameterStub.isAutoGeneratedName()) { + name = parameterStub.getName(); } if (name == null) { - PsiParameterStubImpl parameterStub = (PsiParameterStubImpl)getStub(); - name = !parameterStub.isAutoGeneratedName() ? parameterStub.getName() : getMirrorName(); + if (DumbService.getInstance(getProject()).isDumb()) { + return null; + } + + ClsMethodImpl method = (ClsMethodImpl)getDeclarationScope(); + PsiMethod sourceMethod = method.getSourceMirrorMethod(); + if (sourceMethod != null) { + assert sourceMethod != method : method; + name = sourceMethod.getParameterList().getParameters()[getIndex()].getName(); + } + else { + name = getMirrorName(); + } } - if (name != null) { - myName = name; - } + myName = name; } return name; } + public boolean isAutoGeneratedName() { + return ((PsiParameterStubImpl)getStub()).isAutoGeneratedName() && + !DumbService.getInstance(getProject()).isDumb() && + ((ClsMethodImpl)getDeclarationScope()).getSourceMirrorMethod() == null; + } + @Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { throw new IncorrectOperationException(CAN_NOT_MODIFY_MESSAGE); diff --git a/java/java-tests/testSrc/com/intellij/psi/ClsRepositoryUseTest.java b/java/java-tests/testSrc/com/intellij/psi/ClsRepositoryUseTest.java index 709eb8893d04..16392eb601d5 100644 --- a/java/java-tests/testSrc/com/intellij/psi/ClsRepositoryUseTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/ClsRepositoryUseTest.java @@ -24,6 +24,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; +import com.intellij.psi.impl.compiled.ClsParameterImpl; import com.intellij.psi.impl.java.stubs.PsiMethodStub; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiUtil; @@ -504,6 +505,8 @@ public class ClsRepositoryUseTest extends PsiTestCase { assertNotNull(parameters[0].getModifierList()); assertNotNull(parameters[1].getModifierList()); + assertTrue(((ClsParameterImpl)parameters[0]).isAutoGeneratedName()); + assertTrue(((ClsParameterImpl)parameters[1]).isAutoGeneratedName()); assertEquals("ints", parameters[0].getName()); assertEquals("o", parameters[1].getName()); }