/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.psi.impl.expressions;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiExpressionList;
import com.intellij.psi.PsiType;
import gw.lang.parser.expressions.IDirectiveExpression;
import gw.plugin.ij.lang.parser.GosuCompositeElement;
import gw.plugin.ij.lang.psi.impl.GosuElementVisitor;
import gw.plugin.ij.lang.psi.impl.GosuPsiElementImpl;
import org.jetbrains.annotations.NotNull;
public class GosuExpressionListImpl extends GosuPsiElementImpl<IDirectiveExpression> implements PsiExpressionList {
public GosuExpressionListImpl(GosuCompositeElement node) {
super(node);
}
@NotNull
public PsiExpression[] getExpressions() {
PsiElement[] children = getChildren();
PsiExpression[] exprs = new PsiExpression[children.length];
System.arraycopy(children, 0, exprs, 0, children.length);
return exprs;
}
@NotNull
public PsiType[] getExpressionTypes() {
final PsiExpression[] expressions = getExpressions();
final PsiType[] types = new PsiType[expressions.length];
for (int i = 0; i < types.length; i++) {
types[i] = expressions[i].getType();
}
return types;
}
@Override
public void accept(@NotNull PsiElementVisitor visitor) {
if( visitor instanceof GosuElementVisitor) {
((GosuElementVisitor)visitor).visitExpressionList(this);
}
else {
visitor.visitElement( this );
}
}
}