package com.jetbrains.lang.dart.util; import com.intellij.psi.PsiElement; import com.jetbrains.lang.dart.psi.*; import gnu.trove.THashSet; import org.jetbrains.annotations.Nullable; import java.util.Set; public class DartControlFlowUtil { public static Set<DartComponentName> getSimpleDeclarations(PsiElement[] children, @Nullable PsiElement lastParent, boolean stopAtLastParent) { final Set<DartComponentName> result = new THashSet<>(); boolean addComponentsFlag = true; for (PsiElement child : children) { if (child == lastParent && stopAtLastParent) { addComponentsFlag = false; } if (addComponentsFlag && child instanceof DartVarDeclarationList) { addFromVarDeclarationList(result, (DartVarDeclarationList)child); } else if (child instanceof DartComponent) { boolean isFieldOrVar = child instanceof DartVarAccessDeclaration || child instanceof DartVarDeclarationListPart; if (!isFieldOrVar) { result.add(((DartComponent)child).getComponentName()); } } } return result; } public static void addFromVarDeclarationList(Set<DartComponentName> result, DartVarDeclarationList declarationList) { result.add(declarationList.getVarAccessDeclaration().getComponentName()); for (DartVarDeclarationListPart declarationListPart : declarationList.getVarDeclarationListPartList()) { result.add(declarationListPart.getComponentName()); } } }