summaryrefslogtreecommitdiff
path: root/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-08-07 11:11:08 -0700
committerTor Norbye <tnorbye@google.com>2013-08-07 11:11:08 -0700
commit6739a8f0977b70ddc8a8283b169902da3f2eecb3 (patch)
tree5c5573c2ac01544f02d9318671aa558769726289 /java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
parentc1ace1f7e1e49c81bb4b75377c99f07be340abfe (diff)
downloadidea-6739a8f0977b70ddc8a8283b169902da3f2eecb3.tar.gz
Snapshot af729d01433bb5bbd6ca93c0fdf9778b36d624ce from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: I214dd066d0d27444a26166c0eae1a5aaf3705d49
Diffstat (limited to 'java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java')
-rw-r--r--java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
index ebaf563d392e..b7d32ac58130 100644
--- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
+++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
@@ -34,6 +34,7 @@ import com.intellij.psi.search.ProjectScope;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.TimeoutUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.EmptyIterable;
import com.intellij.util.containers.HashMap;
@@ -1015,10 +1016,28 @@ public final class PsiUtil extends PsiUtilCore {
public static void ensureValidType(@NotNull PsiType type) {
if (!type.isValid()) {
+ TimeoutUtil.sleep(1); // to see if processing in another thread suddenly makes the type valid again (which is a bug)
+ if (type.isValid()) {
+ LOG.error("PsiType resurrected: " + type + " of " + type.getClass());
+ return;
+ }
if (type instanceof PsiClassType) {
((PsiClassType)type).resolve(); // should throw exception
}
throw new AssertionError("Invalid type: " + type + " of class " + type.getClass());
}
}
+
+ @Nullable
+ public static String getMemberQualifiedName(PsiMember member) {
+ if (member instanceof PsiClass) {
+ return ((PsiClass)member).getQualifiedName();
+ }
+
+ PsiClass containingClass = member.getContainingClass();
+ if (containingClass == null) return null;
+ String className = containingClass.getQualifiedName();
+ if (className == null) return null;
+ return className + "." + member.getName();
+ }
}