/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.statements; import gw.internal.gosu.parser.DynamicPropertySymbol; import gw.lang.reflect.IFeatureInfo; import gw.lang.parser.statements.IPropertyStatement; import gw.lang.parser.statements.ITerminalStatement; import gw.internal.gosu.parser.Statement; /** */ public class PropertyStatement extends Statement implements IPropertyStatement { private FunctionStatement _propertyGetterOrSetter; private DynamicPropertySymbol _dps; public PropertyStatement( FunctionStatement propertyGetterOrSetter, DynamicPropertySymbol dps ) { _propertyGetterOrSetter = propertyGetterOrSetter; _dps = dps; } public FunctionStatement getPropertyGetterOrSetter() { return _propertyGetterOrSetter; } public DynamicPropertySymbol getDps() { return _dps; } public Object execute() { // NoOp return Statement.VOID_RETURN_VALUE; } @Override protected ITerminalStatement getLeastSignificantTerminalStatement_internal( boolean[] bAbsolute ) { bAbsolute[0] = false; return null; } @Override public boolean isNoOp() { return true; } @Override public String toString() { return ""; } @Override public String getFunctionName() { return getDps().getDisplayName(); } //***** Delegate to FunctionStatement *****// @Override public int getNameOffset( String identifierName ) { return _propertyGetterOrSetter.getNameOffset( identifierName ); } @Override public void setNameOffset( int iOffset, String identifierName ) { _propertyGetterOrSetter.setNameOffset( iOffset, identifierName ); } public boolean declares( String identifierName ) { return _propertyGetterOrSetter.declares( identifierName ) || _propertyGetterOrSetter.declares( (String)("@" + identifierName.toString() + "()") ); } public String[] getDeclarations() { return new String[] {_propertyGetterOrSetter.getDynamicFunctionSymbol().getDisplayName().replace("@", "")}; } private IFeatureInfo findOwningFeatureInfoOfDeclaredSymbols( String identifierName) { return _propertyGetterOrSetter.findOwningFeatureInfoOfDeclaredSymbols( identifierName ); } }