|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement
org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression
org.aspectj.org.eclipse.jdt.internal.compiler.ast.Reference
org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference
org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference
org.aspectj.org.eclipse.jdt.internal.eval.CodeSnippetSingleNameReference
public class CodeSnippetSingleNameReference
A single name reference inside a code snippet can denote a field of a remote receiver object (that is, the receiver of the context in the stack frame).
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite |
|---|
InvocationSite.EmptyWithAstNode |
| Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants |
|---|
TypeConstants.CloseMethodRecord |
| Field Summary |
|---|
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference |
|---|
genericCast, READ, syntheticAccessors, token, WRITE |
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference |
|---|
actualReceiverType, binding |
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression |
|---|
constant, implicitConversion, resolvedType, statementEnd |
| Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement |
|---|
COMPLAINED_FAKE_REACHABLE, COMPLAINED_UNREACHABLE, NOT_COMPLAINED |
| Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.eval.EvaluationConstants |
|---|
CODE_SNIPPET_CLASS_NAME_PREFIX, CODE_SNIPPET_NAME, DELEGATE_THIS, GLOBAL_VARS_CLASS_NAME_PREFIX, LOCAL_VAR_PREFIX, PACKAGE_NAME, RESULT_TYPE_FIELD, RESULT_VALUE_FIELD, ROOT_CLASS_NAME, ROOT_COMPOUND_NAME, ROOT_FULL_CLASS_NAME, RUN_METHOD, SETRESULT_ARGUMENTS, SETRESULT_SELECTOR |
| Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds |
|---|
AND, AND_AND, DIVIDE, EQUAL, EQUAL_EQUAL, GREATER, GREATER_EQUAL, INSTANCEOF, LEFT_SHIFT, LESS, LESS_EQUAL, MINUS, MINUS_MINUS, MULTIPLY, NOT, NOT_EQUAL, NumberOfTables, OR, OR_OR, PLUS, PLUS_PLUS, QUESTIONCOLON, REMAINDER, RIGHT_SHIFT, TWIDDLE, UNSIGNED_RIGHT_SHIFT, XOR |
| Constructor Summary | |
|---|---|
CodeSnippetSingleNameReference(char[] source,
long pos,
EvaluationContext evaluationContext)
|
|
| Method Summary | |
|---|---|
FlowInfo |
analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
boolean valueRequired)
More sophisticated for of the flow analysis used for analyzing expressions, and be able to optimize out portions of expressions where no actual value is required. |
TypeBinding |
checkFieldAccess(BlockScope scope)
Check and/or redirect the field access to the delegate receiver if any |
void |
generateAssignment(BlockScope currentScope,
CodeStream codeStream,
Assignment assignment,
boolean valueRequired)
|
void |
generateCode(BlockScope currentScope,
CodeStream codeStream,
boolean valueRequired)
Every expression is responsible for generating its implicit conversion when necessary. |
void |
generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
MethodBinding writeAccessor,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired)
|
void |
generatePostIncrement(BlockScope currentScope,
CodeStream codeStream,
CompoundAssignment postIncrement,
boolean valueRequired)
|
void |
generateReceiver(CodeStream codeStream)
|
TypeBinding |
getReceiverType(BlockScope currentScope)
Check and/or redirect the field access to the delegate receiver if any |
void |
manageSyntheticAccessIfNecessary(BlockScope currentScope,
FlowInfo flowInfo,
boolean isReadAccess)
|
TypeBinding |
reportError(BlockScope scope)
Normal field binding did not work, try to bind to a field of the delegate receiver. |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference |
|---|
analyseAssignment, analyseCode, checkNPE, computeConversion, generateCompoundAssignment, genericTypeArguments, getName, isEquivalent, localVariableBinding, manageEnclosingInstanceAccessIfNecessary, nullAnnotatedVariableBinding, nullStatus, postConversionType, printExpression, resolveType, traverse, traverse, unboundReferenceErrorName |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference |
|---|
checkEffectiveFinality, fieldBinding, freshInferenceContext, isSuperAccess, isTypeAccess, isTypeReference, lastFieldBinding, setActualReceiverType, setDepth, setFieldIndex |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Reference |
|---|
checkNullableFieldDereference, fieldStore |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement |
|---|
analyseArguments, branchChainTo, checkAgainstNullTypeAnnotation, complainIfUnreachable, expectedType, findConstructorBinding, generateArguments, getExpressionContext, invocationTargetType, isBoxingCompatible, isEmptyBlock, isKnowDeadCodePattern, isValidJavaStatement, recordExceptionsForEnclosingLambda, resolveCase |
| Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode |
|---|
checkInvocationArguments, concreteStatement, copySE8AnnotationsToType, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, isUnqualifiedSuper, printAnnotations, printIndent, printModifiers, receiverIsImplicitThis, resolveAnnotations, resolveAnnotations, resolveAnnotations, resolveDeprecatedAnnotations, resolvePolyExpressionArguments, resolvePolyExpressionArguments, sourceEnd, sourceStart, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite |
|---|
getExpressionContext, invocationTargetType, receiverIsImplicitThis, sourceEnd, sourceStart |
| Constructor Detail |
|---|
public CodeSnippetSingleNameReference(char[] source,
long pos,
EvaluationContext evaluationContext)
| Method Detail |
|---|
public FlowInfo analyseCode(BlockScope currentScope,
FlowContext flowContext,
FlowInfo flowInfo,
boolean valueRequired)
Expression
analyseCode in class SingleNameReferencepublic TypeBinding checkFieldAccess(BlockScope scope)
checkFieldAccess in class SingleNameReference
public void generateAssignment(BlockScope currentScope,
CodeStream codeStream,
Assignment assignment,
boolean valueRequired)
generateAssignment in class SingleNameReference
public void generateCode(BlockScope currentScope,
CodeStream codeStream,
boolean valueRequired)
Expression
generateCode in class SingleNameReferencecurrentScope - org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScopecodeStream - org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStreamvalueRequired - boolean
public void generateCompoundAssignment(BlockScope currentScope,
CodeStream codeStream,
MethodBinding writeAccessor,
Expression expression,
int operator,
int assignmentImplicitConversion,
boolean valueRequired)
generateCompoundAssignment in class SingleNameReference
public void generatePostIncrement(BlockScope currentScope,
CodeStream codeStream,
CompoundAssignment postIncrement,
boolean valueRequired)
generatePostIncrement in class SingleNameReferencepublic void generateReceiver(CodeStream codeStream)
generateReceiver in class SingleNameReferencepublic TypeBinding getReceiverType(BlockScope currentScope)
public void manageSyntheticAccessIfNecessary(BlockScope currentScope,
FlowInfo flowInfo,
boolean isReadAccess)
manageSyntheticAccessIfNecessary in class SingleNameReferencepublic TypeBinding reportError(BlockScope scope)
reportError in class SingleNameReference
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||