/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.statements; import gw.internal.gosu.parser.Statement; import gw.lang.parser.statements.IMethodCallStatement; import gw.lang.parser.statements.ITerminalStatement; import gw.lang.parser.IExpression; import gw.internal.gosu.parser.expressions.MethodCallExpression; /** * Represents a method-call statement as specified in the Gosu grammar: * <pre> * <i>method-call</i> * <name> <b>(</b> [<argument-list>] <b>)</b> * </pre> * <p/> * * @see gw.lang.parser.IGosuParser */ public final class MethodCallStatement extends Statement implements IMethodCallStatement { MethodCallExpression _methodCall; /** * @return The MethodCallExpression corresponding to this method call statement. */ public MethodCallExpression getMethodCall() { return _methodCall; } /** * @param methodCall The MethodCallExpression corresponding to this method call statement. */ public void setMethodCall( MethodCallExpression methodCall ) { _methodCall = methodCall; } public Object execute() { if( !isCompileTimeConstant() ) { return super.execute(); } throw new IllegalStateException( "Can't execute this parsed element directly" ); } @Override protected ITerminalStatement getLeastSignificantTerminalStatement_internal( boolean[] bAbsolute ) { bAbsolute[0] = false; return null; } @Override public String toString() { return _methodCall.toString(); } public int getArgPosition() { return _methodCall.getArgPosition(); } @Override public IExpression[] getArgs() { return _methodCall.getArgs(); } }