/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.ir.nodes; import gw.internal.gosu.parser.ReducedDynamicPropertySymbol; import gw.internal.gosu.parser.ReducedSymbol; import gw.lang.parser.IReducedSymbol; import gw.lang.reflect.IType; import gw.lang.reflect.IRelativeTypeInfo; import gw.lang.ir.IRType; import gw.internal.gosu.parser.DynamicSymbol; import gw.internal.gosu.ir.transform.util.AccessibilityUtil; import gw.internal.gosu.ir.transform.util.IRTypeResolver; public class IRPropertyFromDynamicSymbol extends IRFeatureBase implements IRProperty { private IReducedSymbol _symbol; public IRPropertyFromDynamicSymbol(IReducedSymbol symbol) { _symbol = symbol; } @Override public IRType getType() { return maybeReifyFieldType( _symbol.getGosuClass(), _symbol.getName(), _symbol.getType() ); } @Override public String getName() { return resolveFieldName( _symbol.getGosuClass(), _symbol.getName() ); } @Override public boolean isField() { return true; } @Override public boolean isCaptured() { return false; } @Override public IRMethod getGetterMethod() { throw new UnsupportedOperationException(); } @Override public IRMethod getSetterMethod() { throw new UnsupportedOperationException(); } @Override public IRType getOwningIRType() { return IRTypeResolver.getDescriptor( _symbol.getGosuClass() ); } @Override public IType getOwningIType() { return _symbol.getGosuClass(); } @Override public IRelativeTypeInfo.Accessibility getAccessibility() { return AccessibilityUtil.forSymbol( _symbol ); } @Override public boolean isStatic() { return _symbol.isStatic(); } @Override public IRType getTargetRootIRType() { return getOwningIRType(); } @Override public boolean isBytecodeProperty() { return true; } }