From 97639c3c42351922a880fddf827ce31065c030d3 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Tue, 27 Jul 2010 15:30:22 +0400 Subject: [PATCH] CIDR-debugger: resolving struct fields --- .../src/com/intellij/psi/util/PsiTreeUtil.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java b/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java index f20559eef3fd..f5c174dea4b5 100644 --- a/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java +++ b/platform/lang-api/src/com/intellij/psi/util/PsiTreeUtil.java @@ -180,12 +180,22 @@ public class PsiTreeUtil { } @Nullable public static T findChildOfType(@NotNull final PsiElement element, @NotNull final Class aClass, final boolean strict) { + return findChildOfAnyType(element, strict, aClass); + } + + @Nullable public static T findChildOfAnyType(@NotNull final PsiElement element, @NotNull final Class... classes) { + return findChildOfAnyType(element, true, classes); + } + + @Nullable public static T findChildOfAnyType(@NotNull final PsiElement element, final boolean strict, @NotNull final Class... classes) { PsiElementProcessor.FindElement processor = new PsiElementProcessor.FindElement() { @Override public boolean execute(PsiElement each) { if (strict && each == element) return true; - if (instanceOf(aClass, each)) { - return setFound(each); + for (Class eachClass : classes) { + if (instanceOf(eachClass, each)) { + return setFound(each); + } } return true; }