package jetbrains.mps.idea.java.psi.impl;
import com.intellij.psi.PsiArrayType;
import com.intellij.psi.PsiEllipsisType;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiType;
import jetbrains.mps.idea.core.psi.impl.MPSPsiNode;
import org.jetbrains.mps.openapi.model.SNodeId;
/**
* danilla 7/17/13
*/
public class MPSPsiVariableArityType extends MPSPsiNode implements ComputesPsiType<PsiEllipsisType> {
public MPSPsiVariableArityType(SNodeId id, String concept, String containingRole, PsiManager manager) {
super(id, concept, containingRole, manager);
}
@Override
public PsiEllipsisType getPsiType() {
MPSPsiNode componentType = getChildOfType("componentType", MPSPsiNode.class);
// seems not good: maybe should return PsiArrayType without component type, but it's NotNull
if (componentType == null || !(componentType instanceof ComputesPsiType)) return null;
PsiType componentPsiType = ((ComputesPsiType) componentType).getPsiType();
return new PsiEllipsisType(componentPsiType);
}
}