diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2013-02-27 09:41:48 -0800 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2013-02-27 09:41:48 -0800 |
commit | 1d526b16d476792ca7ce47616d55833115e8d6ab (patch) | |
tree | 650fb03af01ff04097d1d59939518cc71be029cb /java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java | |
parent | 9edc8f6b58f71ec510ba36b838f115718d9a174d (diff) | |
download | idea-1d526b16d476792ca7ce47616d55833115e8d6ab.tar.gz |
Snapshot of commit 329607d9ebcedf2bb0ad81265354366db7dc3f9c
from branch master of git://git.jetbrains.org/idea/community.git
Change-Id: I3b27d82897504da1b66169b67c7771e0f551c973
Diffstat (limited to 'java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java')
-rw-r--r-- | java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java b/java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java index be0712efa5bc..e82221e7a887 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiNameHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,17 +67,12 @@ public abstract class PsiNameHelper { @NotNull public static String getShortClassName(@NotNull String referenceText) { - return getShortClassName(referenceText, true); - } + int lessPos = referenceText.length(), bracesBalance = 0, i; - private static String getShortClassName(String referenceText, boolean removeWhitespace) { - int lessPos = referenceText.length(); - int bracesBalance = 0; - int i; loop: for (i = referenceText.length() - 1; i >= 0; i--) { - final char aChar = referenceText.charAt(i); - switch (aChar) { + char ch = referenceText.charAt(i); + switch (ch) { case ')': case '>': bracesBalance++; @@ -91,22 +86,25 @@ public abstract class PsiNameHelper { case '@': case '.': - if (bracesBalance == 0) break loop; + if (bracesBalance <= 0) break loop; break; default: - if (bracesBalance == 0 && removeWhitespace && !Character.isWhitespace(aChar) && !Character.isJavaIdentifierPart(aChar)) { - return getShortClassName(removeWhitespace(referenceText), false); + if (Character.isWhitespace(ch) && bracesBalance <= 0) { + for (int j = i + 1; j < lessPos; j++) { + if (!Character.isWhitespace(referenceText.charAt(j))) break loop; + } + lessPos = i; } } } + String sub = referenceText.substring(i + 1, lessPos).trim(); return sub.length() == referenceText.length() ? sub : new String(sub); } public static String getPresentableText(PsiJavaCodeReferenceElement ref) { final String referenceName = ref.getReferenceName(); - PsiType[] typeParameters = ref.getTypeParameters(); return getPresentableText(referenceName, typeParameters); } @@ -167,7 +165,7 @@ public abstract class PsiNameHelper { * <code>["List<String>","Integer"]</code> * * @param referenceText the text of the reference to calculate type parameters for. - * @return the calculated array of type parameters. + * @return the calculated array of type parameters. */ public static String[] getClassParametersText(String referenceText) { if (referenceText.indexOf('<') < 0) return ArrayUtil.EMPTY_STRING_ARRAY; |