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
-
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
ConstructorsModifierConstructorDescriptionprivate
-
Method Summary
Modifier and TypeMethodDescriptionstatic Object
autoCreateEntityInstance
(Object rootValue, String typeName, String propertyName) private IRExpression
autoCreateEntityValue
(IPropertyInfo pi, IRSymbol rootSymbol) private IRExpression
buildAccessExpression
(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty, IRExpression root) private IRExpression
buildInvocation
(IType rootType, IPropertyInfo pi, IRProperty irProperty, IRSymbol rootSymbol, IRExpression root) private IRExpression
callPropertyInfo
(IType rootType, IPropertyInfo pi, IRProperty irProperty, IRExpression rawRoot) private IRExpression
castIfTypeDerivedFromTypeVariable
(IRProperty irProp, IRExpression root) static IRExpression
compile
(TopLevelTransformationContext cc, MemberAccess expr) protected IRExpression
private IPropertyInfo
private String
private IType
getNextNonBlockOuter
(IType type) private IRExpression
handleAutoCreationWhenValueIsNull
(IPropertyInfo pi, IRSymbol rootSymbol, IRExpression accessExpression) private IRExpression
handleInstanceMemberAccess
(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty) private IRExpression
handleStaticMemberAccess
(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty) private boolean
private boolean
private boolean
isField
(IPropertyInfo pi) private boolean
private boolean
isOuterCall
(IPropertyInfo rootExpr) private boolean
private boolean
isSuperCall
(IExpression rootExpr) private boolean
private boolean
private IRExpression
maybeEvalRoot
(IExpression rootExpr, IRExpression result) private boolean
mightRequireAutoCreation
(IType rootType, IPropertyInfo pi) private IRExpression
private IRExpression
pushRootExpression
(IType rootType, IExpression rootExpr, IRProperty pi) private boolean
shouldNullShortCircuit
(IType rootType, IPropertyInfo pi, boolean mightRequireAutoCreation) 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 Details
-
MemberAccessTransformer
-
-
Method Details
-
compile
-
compile_impl
- Specified by:
compile_impl
in classAbstractExpressionTransformer<MemberAccess>
-
isArrayExpansionProperty
-
isTypeInfoProperty
-
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
-
handleAutoCreationWhenValueIsNull
private IRExpression handleAutoCreationWhenValueIsNull(IPropertyInfo pi, IRSymbol rootSymbol, IRExpression accessExpression) -
autoCreateEntityValue
-
getNextNonBlockOuter
-
isEnhancementProperty
-
getDelegatedEnhancementProperty
-
castIfTypeDerivedFromTypeVariable
-
handleStaticMemberAccess
private IRExpression handleStaticMemberAccess(IExpression rootExpr, IType rootType, IPropertyInfo pi, IRProperty irProperty) -
maybeEvalRoot
-
isTypeProperty
-
getField
-
isField
-
isLengthProperty
-
isSuperCall
-
isOuterCall
-
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
-
pushRootExpression
-
isStatic
-
autoCreateEntityInstance
-