Esempio n. 1
0
 public static <D> void visitChildren(
     @NotNull KtElement element, @NotNull KtVisitor<Void, D> visitor, D data) {
   PsiElement child = element.getFirstChild();
   while (child != null) {
     if (child instanceof KtElement) {
       ((KtElement) child).accept(visitor, data);
     }
     child = child.getNextSibling();
   }
 }
Esempio n. 2
0
  @Nullable
  public static String getPackageName(@NotNull KtElement element) {
    KtFile file = element.getContainingKtFile();
    KtPackageDirective header = PsiTreeUtil.findChildOfType(file, KtPackageDirective.class);

    return header != null ? header.getQualifiedName() : null;
  }
Esempio n. 3
0
  @NotNull
  public static Set<KtElement> findRootExpressions(
      @NotNull Collection<KtElement> unreachableElements) {
    Set<KtElement> rootElements = new HashSet<KtElement>();
    final Set<KtElement> shadowedElements = new HashSet<KtElement>();
    KtVisitorVoid shadowAllChildren =
        new KtVisitorVoid() {
          @Override
          public void visitKtElement(@NotNull KtElement element) {
            if (shadowedElements.add(element)) {
              element.acceptChildren(this);
            }
          }
        };

    for (KtElement element : unreachableElements) {
      if (shadowedElements.contains(element)) continue;
      element.acceptChildren(shadowAllChildren);

      rootElements.removeAll(shadowedElements);
      rootElements.add(element);
    }
    return rootElements;
  }
 @Override
 public StackValue visitKtElement(@NotNull KtElement element, StackValue receiver) {
   return element.accept(codegen, receiver);
 }