diff options
author | Tor Norbye <tnorbye@google.com> | 2013-08-07 11:11:08 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-08-07 11:11:08 -0700 |
commit | 6739a8f0977b70ddc8a8283b169902da3f2eecb3 (patch) | |
tree | 5c5573c2ac01544f02d9318671aa558769726289 /java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java | |
parent | c1ace1f7e1e49c81bb4b75377c99f07be340abfe (diff) | |
download | idea-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.java | 19 |
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(); + } } |