/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.expressions; import gw.internal.gosu.parser.Expression; import gw.internal.gosu.parser.CannotExecuteGosuException; import gw.lang.parser.expressions.IObjectLiteralExpression; import gw.lang.reflect.IType; import gw.lang.reflect.TypeSystem; /** */ public final class ObjectLiteralExpression extends Expression implements IObjectLiteralExpression { private Expression[] _args; private boolean _bLiteralId; public ObjectLiteralExpression( IType intrinsicType ) { setType( intrinsicType ); } public Expression[] getArgs() { return _args; } public void setArgs( Expression[] args ) { _args = args; setLiteralId( _args[0] instanceof Literal ); } public Object evaluate() { if( !isCompileTimeConstant() ) { return super.evaluate(); } throw new CannotExecuteGosuException(); } protected boolean isLiteralId() { return _bLiteralId; } protected void setLiteralId( boolean bLiteralId ) { _bLiteralId = bLiteralId; } @Override public String toString() { String strOut = TypeSystem.getUnqualifiedClassName( getType() ) + "("; if( _args != null && _args.length > 0 ) { strOut += " "; for( int i = 0; i < _args.length; i++ ) { if( i != 0 ) { strOut += ", "; } strOut += _args[i].toString(); } strOut += " "; } return strOut += ")"; } }