Traverser: introduce psiTraverser(root), astTraverser(root)

This commit is contained in:
Gregory.Shrago
2015-08-28 06:30:02 +03:00
parent a013714db1
commit ce2c10c10f
2 changed files with 12 additions and 3 deletions
@@ -47,6 +47,11 @@ public class SyntaxTraverser<T> extends FilteredTraverserBase<T, SyntaxTraverser
return new SyntaxTraverser<PsiElement>(psiApi(), null);
}
@NotNull
public static SyntaxTraverser<PsiElement> psiTraverser(@Nullable PsiElement root) {
return psiTraverser().withRoot(root);
}
@NotNull
public static SyntaxTraverser<PsiElement> revPsiTraverser() {
return new SyntaxTraverser<PsiElement>(psiApiReversed(), null);
@@ -57,6 +62,11 @@ public class SyntaxTraverser<T> extends FilteredTraverserBase<T, SyntaxTraverser
return new SyntaxTraverser<ASTNode>(astApi(), null);
}
@NotNull
public static SyntaxTraverser<ASTNode> astTraverser(@Nullable ASTNode root) {
return astTraverser().withRoot(root);
}
@NotNull
public static SyntaxTraverser<LighterASTNode> lightTraverser(@NotNull PsiBuilder builder) {
LighterASTApi api = new LighterASTApi(builder);
@@ -22,7 +22,6 @@ import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -108,8 +107,8 @@ public abstract class FilteredTraverserBase<T, Self extends FilteredTraverserBas
}
@NotNull
public Self withRoot(@NotNull T root) {
return newInstance(meta.withRoots(Collections.singleton(root)));
public Self withRoot(@Nullable T root) {
return newInstance(meta.withRoots(ContainerUtil.createMaybeSingletonList(root)));
}
@NotNull