Class MemberAccessTransformer
- java.lang.Object
-
- gw.internal.gosu.ir.transform.AbstractElementTransformer<T>
-
- gw.internal.gosu.ir.transform.expression.AbstractExpressionTransformer<MemberAccess>
-
- gw.internal.gosu.ir.transform.expression.MemberAccessTransformer
-
public class MemberAccessTransformer extends AbstractExpressionTransformer<MemberAccess>
-
-
Field Summary
-
Fields inherited from class gw.internal.gosu.ir.transform.AbstractElementTransformer
CAPTURED_VAR_PREFIX, CTX_SYMBOL, CTX_SYMBOL_SUFFIX, CUSTOM_RUNTIMES, EMPTY_CLASS_ARRAY, ENHANCEMENT_THIS_REF, ENHANCEMENT_TYPE_PARAM_PREFIX, ENUM_PARAM_PREFIX, OBJECT_TYPE, OUTER_ACCESS, TYPE_PARAM_PREFIX
-
-
Constructor Summary
Constructors Modifier Constructor Description privateMemberAccessTransformer(TopLevelTransformationContext cc, MemberAccess expr)
-
Method Summary
-
Methods inherited from class gw.internal.gosu.ir.transform.expression.AbstractExpressionTransformer
_expr, compile, getIRParameters, pushArgumentsNoCasting, pushArgumentsWithCasting, shortCircuitValue
-
Methods inherited from class gw.internal.gosu.ir.transform.AbstractElementTransformer
_cc, assignStructuralTypeOwner, avoidVerifyError, booleanLiteral, boxValue, boxValue, boxValueToType, buildAddition, buildArithmetic, buildArrayLength, buildArrayLoad, buildArrayLoad, buildArrayStore, buildAssignment, buildCast, buildComposite, buildComposite, buildEquals, buildFieldGet, buildFieldSet, buildGreaterThan, buildIf, buildIfElse, buildInitializedArray, buildMethodCall, buildMethodCall, buildMethodCall, buildNegation, buildNewExpression, buildNewExpression, buildNewExpression, buildNotEquals, buildNullCheckTernary, buildReturn, buildSubtraction, buildTernary, buildThrow, callMethod, callMethod, callMethod, callMethod, callMethod, callSpecialMethod, callSpecialMethod, callSpecialMethod, callStaticMethod, castResultingTypeIfNecessary, charLiteral, checkCast, checkCast, checkCast, classLiteral, classLiteral, classLiteral, clearCustomRuntimes, collectArgsIntoObjArray, convertBoxedNullToPrimitive, convertNullToPrimitive, convertOperandToBig, convertOperandToPrimitive, convertOperandToRational, exprList, fastStringCoercion, findComparableParamType, findDimensionType, getActualPropertyInfo, getCapturedSymbolParameterName, getClassInfos, getConcreteType, getConstructorParamTypes, getCustomRuntime, getDeclaredField, getDeclaredFieldImpl, getDeclaredMethod, getDeclaredMethod, getDefaultConstIns, getDescriptor, getDescriptor, getDescriptor, getDescriptor, getEnclosingDFS, getField, getField_new, getGosuClass, getInstanceField, getIRTypes, getIRTypes, getModifiers, getParsedElement, getRuntimeEnclosingType, getStaticField, getTypes, getTypeVarParamName, getTypeVarsForDFS, handleCustomExpressionRuntime, handleNamedArgs, identifier, initLocalVar, initLocalVarWithDefault, initMultiArray, inStaticContext, isBigType, isBoxedIntType, isBytecodeType, isBytecodeType, isCheckedArithmeticEnabled, isCompilingEnhancement, isEnhancementType, isEvalProgram, isExecuteMethod, isHandledByCustomCoercion, isIntType, isMemberOnEnclosingType, isMemberOnEnhancementOfEnclosingType, isNonBigBoxedNumberType, isNonStaticInnerClass, isNumberType, isPrimitiveNumberType, isProgram, isProgramOrEnclosedInProgram, makeAnnotationInfos, makeArrayViaTypeInfo, makeEmptyArrayViaTypeInfo, makeIRSymbol, maybeUnwrapMetaType, newArray, nullCheckVar, nullLiteral, numberConvert, numberConvert, numericLiteral, pushArrayOfDefValueExpr, pushArrayOfString, pushArrayOfTypes, pushCapturedSymbols, pushConstant, pushEnumSuperConstructorArguments, pushExternalSymbolsMap, pushLazyType, pushLazyType, pushNull, pushOuter, pushOuter, pushOuter, pushParamTypes, pushRuntimeTypeOfTypeVar, pushString, pushThis, pushThisOrOuter, pushType, pushType, pushTypeParametersForConstructor, requiresExternalSymbolCapture, requiresImplicitEnhancementArg, requiresImplicitEnhancementArg, setCc, setField, setField, setInstanceField, setStaticField, stringLiteral, unboxValueFromType, unboxValueToType, unboxValueToType, valueOf
-
-
-
-
Constructor Detail
-
MemberAccessTransformer
private MemberAccessTransformer(TopLevelTransformationContext cc, MemberAccess expr)
-
-
Method Detail
-
compile
public static IRExpression compile(TopLevelTransformationContext cc, MemberAccess expr)
-
compile_impl
protected IRExpression compile_impl()
- Specified by:
compile_implin classAbstractExpressionTransformer<MemberAccess>
-
isArrayExpansionProperty
private boolean isArrayExpansionProperty(IPropertyInfo pi)
-
isTypeInfoProperty
private boolean isTypeInfoProperty(IPropertyInfo pi)
-
handleInstanceMemberAccess
private IRExpression handleInstanceMemberAccess(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty)
-
shouldNullShortCircuit
private boolean shouldNullShortCircuit(IType rootType, IPropertyInfo pi, boolean mightRequireAutoCreation)
-
buildAccessExpression
private IRExpression buildAccessExpression(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty, IRExpression root)
-
mightRequireAutoCreation
private boolean mightRequireAutoCreation(IType rootType, IPropertyInfo pi)
-
handleAutoCreationWhenValueIsNull
private IRExpression handleAutoCreationWhenValueIsNull(IPropertyInfo pi, IRSymbol rootSymbol, IRExpression accessExpression)
-
autoCreateEntityValue
private IRExpression autoCreateEntityValue(IPropertyInfo pi, IRSymbol rootSymbol)
-
isEnhancementProperty
private boolean isEnhancementProperty(IPropertyInfo pi)
-
getDelegatedEnhancementProperty
private IPropertyInfo getDelegatedEnhancementProperty(IPropertyInfo pi)
-
castIfTypeDerivedFromTypeVariable
private IRExpression castIfTypeDerivedFromTypeVariable(IRProperty irProp, IRExpression root)
-
handleStaticMemberAccess
private IRExpression handleStaticMemberAccess(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty)
-
maybeEvalRoot
private IRExpression maybeEvalRoot(IExpression rootExpr, IRExpression result)
-
isTypeProperty
private boolean isTypeProperty(IPropertyInfo pi)
-
getField
private java.lang.String getField(IPropertyInfo pi)
-
isField
private boolean isField(IPropertyInfo pi)
-
isLengthProperty
private boolean isLengthProperty(IPropertyInfo pi)
-
isSuperCall
private boolean isSuperCall(IExpression rootExpr)
-
isOuterCall
private boolean isOuterCall(IPropertyInfo rootExpr)
-
callPropertyInfo
private IRExpression callPropertyInfo(IType rootType, IPropertyInfo pi, IRProperty irProperty, IRExpression rawRoot)
-
buildInvocation
private IRExpression buildInvocation(IType rootType, IPropertyInfo pi, IRProperty irProperty, IRSymbol rootSymbol, IRExpression root)
-
pushPropertyName
private IRExpression pushPropertyName(IPropertyInfo pi)
-
pushRootExpression
private IRExpression pushRootExpression(IType rootType, IExpression rootExpr, IRProperty pi)
-
isStatic
private boolean isStatic(IPropertyInfo pi)
-
autoCreateEntityInstance
public static java.lang.Object autoCreateEntityInstance(java.lang.Object rootValue, java.lang.String typeName, java.lang.String propertyName)
-
-