package org.jetbrains.plugins.clojure.psi.impl;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import org.jetbrains.plugins.clojure.psi.ClojurePsiElementImpl;
import org.jetbrains.plugins.clojure.psi.api.ClSet;
import org.jetbrains.plugins.clojure.lexer.ClojureTokenTypes;
import org.jetbrains.annotations.NotNull;
/**
* @author ilyas
*/
public class ClSetImpl extends ClojurePsiElementImpl implements ClSet {
public ClSetImpl(ASTNode node) {
super(node, "ClSet");
}
@NotNull
public PsiElement getFirstBrace() {
// XXX: there must be a cleaner way of doing this...
ASTNode sharp;
while ((sharp = getNode().findChildByType(ClojureTokenTypes.SHARP)) != null) {
ASTNode next = sharp.getTreeNext();
if (ClojureTokenTypes.LEFT_CURLY.equals(next.getElementType())) {
return sharp.getPsi();
}
}
throw new AssertionError();
}
public PsiElement getLastBrace() {
return findChildByType(ClojureTokenTypes.RIGHT_CURLY);
}
}