/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.parser;
import com.intellij.psi.PsiModifier;
import com.intellij.psi.PsiModifierList;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.psi.PsiType;
import com.intellij.psi.stubs.StubElement;
import gw.lang.parser.IExpression;
import gw.plugin.ij.lang.psi.api.expressions.IGosuExpression;
import gw.plugin.ij.lang.psi.impl.GosuBaseElementImpl;
import gw.plugin.ij.lang.psi.impl.GosuElementVisitor;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
public class GosuRawExpression extends GosuBaseElementImpl<IExpression, StubElement> implements IGosuExpression, PsiModifierListOwner {
public GosuRawExpression(GosuCompositeElement node) {
super(node);
}
public void accept( GosuElementVisitor visitor ) {
visitor.visitExpression( this );
}
// PsiModifierListOwner
@Override
public PsiModifierList getModifierList() {
return findChildByClass(PsiModifierList.class);
}
@Override
public boolean hasModifierProperty(@PsiModifier.ModifierConstant @NonNls @NotNull String name) {
final PsiModifierListOwner child = findChildByClass(PsiModifierListOwner.class);
return child != null && child.hasModifierProperty(name);
}
// PsiExpression
@Override
public PsiType getType() {
final IExpression expression = getParsedElement();
return expression != null ? createType(expression.getType()) : null;
}
@NotNull
public String toString() {
return "[raw] " + super.toString();
}
}