org.eclipse.jdt.internal.compiler.ast
Class QualifiedNameReference

java.lang.Object
  extended by org.eclipse.jdt.internal.compiler.ast.ASTNode
      extended by org.eclipse.jdt.internal.compiler.ast.Statement
          extended by org.eclipse.jdt.internal.compiler.ast.Expression
              extended by org.eclipse.jdt.internal.compiler.ast.Reference
                  extended by org.eclipse.jdt.internal.compiler.ast.NameReference
                      extended by org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference
All Implemented Interfaces:
InvocationSite, TypeConstants, TypeIds

public class QualifiedNameReference
extends NameReference


Field Summary
 TypeBinding genericCast
           
 int indexOfFirstFieldBinding
           
 FieldBinding[] otherBindings
           
 FieldBinding[] otherCodegenBindings
           
 TypeBinding[] otherGenericCasts
           
 long[] sourcePositions
           
 char[][] tokens
           
 
Fields inherited from class org.eclipse.jdt.internal.compiler.ast.NameReference
actualReceiverType, binding, codegenBinding
 
Fields inherited from class org.eclipse.jdt.internal.compiler.ast.Expression
constant, implicitConversion, resolvedType, statementEnd
 
Fields inherited from class org.eclipse.jdt.internal.compiler.ast.ASTNode
Bit1, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15, Bit16, Bit17, Bit18, Bit19, Bit2, Bit20, Bit21, Bit22, Bit23, Bit24, Bit25, Bit26, Bit27, Bit28, Bit29, Bit3, Bit30, Bit31, Bit32, Bit32L, Bit33L, Bit34L, Bit35L, Bit36L, Bit37L, Bit38L, Bit39L, Bit4, Bit40L, Bit41L, Bit42L, Bit43L, Bit44L, Bit45L, Bit46L, Bit47L, Bit48L, Bit49L, Bit5, Bit50L, Bit51L, Bit52L, Bit53L, Bit54L, Bit55L, Bit56L, Bit57L, Bit58L, Bit59L, Bit6, Bit60L, Bit61L, Bit62L, Bit63L, Bit64L, Bit7, Bit8, Bit9, bits, ContainsAssertion, DepthMASK, DepthSHIFT, DisableUnnecessaryCastCheck, DocumentedFallthrough, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasLocalType, IgnoreRawTypeCheck, InsideJavadoc, IsAnnotationDefaultValue, IsAnonymousType, IsCompoundAssigned, IsElseIfStatement, IsImplicitThis, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsTryBlockExiting, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, OperatorMASK, OperatorSHIFT, ParenthesizedMASK, ParenthesizedSHIFT, RestrictiveFlagMASK, ReturnTypeIDMASK, sourceEnd, sourceStart, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, BOOLEAN, BYTE, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CLINIT, CLONE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, FLOAT, GETCLASS, INIT, INT, IO, JAVA, JAVA_IO, JAVA_IO_PRINTSTREAM, JAVA_IO_SERIALIZABLE, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_UTIL_ITERATOR, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, OBJECT, OK, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, VALUE, VALUEOF, VALUES, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeIds
Boolean2Boolean, Boolean2Int, Boolean2String, BOXING, Byte2Byte, Byte2Char, Byte2Double, Byte2Float, Byte2Int, Byte2Long, Byte2Short, Byte2String, Char2Byte, Char2Char, Char2Double, Char2Float, Char2Int, Char2Long, Char2Short, Char2String, COMPILE_TYPE_MASK, Double2Byte, Double2Char, Double2Double, Double2Float, Double2Int, Double2Long, Double2Short, Double2String, Float2Byte, Float2Char, Float2Double, Float2Float, Float2Int, Float2Long, Float2Short, Float2String, IMPLICIT_CONVERSION_MASK, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2String, Object2Object, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_double, T_float, T_int, T_JavaIoPrintStream, T_JavaIoSerializable, T_JavaLangAnnotationAnnotation, T_JavaLangAnnotationDocumented, T_JavaLangAnnotationElementType, T_JavaLangAnnotationInherited, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangBoolean, T_JavaLangByte, T_JavaLangCharacter, T_JavaLangClass, T_JavaLangClassNotFoundException, T_JavaLangCloneable, T_JavaLangDeprecated, T_JavaLangDouble, T_JavaLangEnum, T_JavaLangError, T_JavaLangException, T_JavaLangFloat, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilIterator, T_long, T_null, T_short, T_undefined, T_void, UNBOXING
 
Constructor Summary
QualifiedNameReference(char[][] sources, long[] positions, int sourceStart, int sourceEnd)
           
 
Method Summary
 FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound)
           
 FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo)
           
 FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired)
           
 TypeBinding checkFieldAccess(BlockScope scope)
          Check and/or redirect the field access to the delegate receiver if any
 void checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, boolean checkString)
           
 void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType)
          Base types need that the widening is explicitly done by the compiler using some bytecode like i2f.
 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, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired)
           
 void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired)
           
 FieldBinding generateReadSequence(BlockScope currentScope, CodeStream codeStream)
           
 void generateReceiver(CodeStream codeStream)
           
 TypeBinding[] genericTypeArguments()
           
protected  FieldBinding getCodegenBinding(int index)
           
protected  TypeBinding getGenericCast(int index)
           
 TypeBinding getOtherFieldBindings(BlockScope scope)
           
 void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo)
           
 void manageSyntheticAccessIfNecessary(BlockScope currentScope, FieldBinding fieldBinding, TypeBinding lastReceiverType, int index, FlowInfo flowInfo)
          index is <0 to denote write access emulation
 int nullStatus(FlowInfo flowInfo)
           
 Constant optimizedBooleanConstant()
          Constant usable for bytecode pattern optimizations, but cannot be inlined since it is not strictly equivalent to the definition of constant expressions.
 TypeBinding postConversionType(Scope scope)
          Returns the type of the expression after required implicit conversions.
 java.lang.StringBuffer printExpression(int indent, java.lang.StringBuffer output)
           
 TypeBinding reportError(BlockScope scope)
          Normal field binding did not work, try to bind to a field of the delegate receiver.
 TypeBinding resolveType(BlockScope scope)
           
protected  void setCodegenBinding(int index, FieldBinding someCodegenBinding)
           
 void setFieldIndex(int index)
           
protected  void setGenericCast(int index, TypeBinding someGenericCast)
           
protected  void setSyntheticAccessor(FieldBinding fieldBinding, int index, SyntheticMethodBinding syntheticAccessor)
           
 void traverse(ASTVisitor visitor, BlockScope scope)
           
 java.lang.String unboundReferenceErrorName()
           
 
Methods inherited from class org.eclipse.jdt.internal.compiler.ast.NameReference
fieldBinding, isSuperAccess, isTypeAccess, isTypeReference, setActualReceiverType, setDepth
 
Methods inherited from class org.eclipse.jdt.internal.compiler.ast.Reference
fieldStore
 
Methods inherited from class org.eclipse.jdt.internal.compiler.ast.Expression
checkCastTypesCompatibility, checkNPE, checkUnsafeCast, generateCode, generateOptimizedBoolean, generateOptimizedStringConcatenation, generateOptimizedStringConcatenationCreation, isCompactableOperation, isConstantValueOfTypeAssignableToType, isConstantValueRepresentable, localVariableBinding, markAsNonNull, print, printStatement, resolve, resolveType, resolveTypeExpecting, reusableJSRTarget, setExpectedType, tagAsNeedCheckCast, tagAsUnnecessaryCast, toTypeReference, traverse, traverse
 
Methods inherited from class org.eclipse.jdt.internal.compiler.ast.Statement
branchChainTo, complainIfUnreachable, generateArguments, isEmptyBlock, isValidJavaStatement, resolveCase
 
Methods inherited from class org.eclipse.jdt.internal.compiler.ast.ASTNode
checkInvocationArguments, concreteStatement, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printAnnotations, printIndent, printModifiers, resolveAnnotations, resolveDeprecatedAnnotations, 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.eclipse.jdt.internal.compiler.lookup.InvocationSite
sourceEnd, sourceStart
 

Field Detail

tokens

public char[][] tokens

sourcePositions

public long[] sourcePositions

otherBindings

public FieldBinding[] otherBindings

otherCodegenBindings

public FieldBinding[] otherCodegenBindings

indexOfFirstFieldBinding

public int indexOfFirstFieldBinding

genericCast

public TypeBinding genericCast

otherGenericCasts

public TypeBinding[] otherGenericCasts
Constructor Detail

QualifiedNameReference

public QualifiedNameReference(char[][] sources,
                              long[] positions,
                              int sourceStart,
                              int sourceEnd)
Method Detail

analyseAssignment

public FlowInfo analyseAssignment(BlockScope currentScope,
                                  FlowContext flowContext,
                                  FlowInfo flowInfo,
                                  Assignment assignment,
                                  boolean isCompound)
Specified by:
analyseAssignment in class Reference

analyseCode

public FlowInfo analyseCode(BlockScope currentScope,
                            FlowContext flowContext,
                            FlowInfo flowInfo)
Overrides:
analyseCode in class Reference

analyseCode

public FlowInfo analyseCode(BlockScope currentScope,
                            FlowContext flowContext,
                            FlowInfo flowInfo,
                            boolean valueRequired)
Overrides:
analyseCode in class Expression

checkFieldAccess

public TypeBinding checkFieldAccess(BlockScope scope)
Check and/or redirect the field access to the delegate receiver if any


checkNPE

public void checkNPE(BlockScope scope,
                     FlowContext flowContext,
                     FlowInfo flowInfo,
                     boolean checkString)

computeConversion

public void computeConversion(Scope scope,
                              TypeBinding runtimeTimeType,
                              TypeBinding compileTimeType)
Description copied from class: Expression
Base types need that the widening is explicitly done by the compiler using some bytecode like i2f. Also check unsafe type operations.

Overrides:
computeConversion in class Expression
See Also:
Expression.computeConversion(org.eclipse.jdt.internal.compiler.lookup.Scope, org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.eclipse.jdt.internal.compiler.lookup.TypeBinding)

generateAssignment

public void generateAssignment(BlockScope currentScope,
                               CodeStream codeStream,
                               Assignment assignment,
                               boolean valueRequired)
Specified by:
generateAssignment in class Reference

generateCode

public void generateCode(BlockScope currentScope,
                         CodeStream codeStream,
                         boolean valueRequired)
Description copied from class: Expression
Every expression is responsible for generating its implicit conversion when necessary.

Overrides:
generateCode in class Expression
Parameters:
currentScope - org.eclipse.jdt.internal.compiler.lookup.BlockScope
codeStream - org.eclipse.jdt.internal.compiler.codegen.CodeStream
valueRequired - boolean

generateCompoundAssignment

public void generateCompoundAssignment(BlockScope currentScope,
                                       CodeStream codeStream,
                                       Expression expression,
                                       int operator,
                                       int assignmentImplicitConversion,
                                       boolean valueRequired)
Specified by:
generateCompoundAssignment in class Reference

generatePostIncrement

public void generatePostIncrement(BlockScope currentScope,
                                  CodeStream codeStream,
                                  CompoundAssignment postIncrement,
                                  boolean valueRequired)
Specified by:
generatePostIncrement in class Reference

generateReadSequence

public FieldBinding generateReadSequence(BlockScope currentScope,
                                         CodeStream codeStream)

generateReceiver

public void generateReceiver(CodeStream codeStream)

genericTypeArguments

public TypeBinding[] genericTypeArguments()
See Also:
InvocationSite.genericTypeArguments()

getCodegenBinding

protected FieldBinding getCodegenBinding(int index)

getGenericCast

protected TypeBinding getGenericCast(int index)

getOtherFieldBindings

public TypeBinding getOtherFieldBindings(BlockScope scope)

manageEnclosingInstanceAccessIfNecessary

public void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope,
                                                     FlowInfo flowInfo)

manageSyntheticAccessIfNecessary

public void manageSyntheticAccessIfNecessary(BlockScope currentScope,
                                             FieldBinding fieldBinding,
                                             TypeBinding lastReceiverType,
                                             int index,
                                             FlowInfo flowInfo)
index is <0 to denote write access emulation


nullStatus

public int nullStatus(FlowInfo flowInfo)
Overrides:
nullStatus in class Expression

optimizedBooleanConstant

public Constant optimizedBooleanConstant()
Description copied from class: Expression
Constant usable for bytecode pattern optimizations, but cannot be inlined since it is not strictly equivalent to the definition of constant expressions. In particular, some side-effects may be required to occur (only the end value is known).

Overrides:
optimizedBooleanConstant in class Expression
Returns:
Constant known to be of boolean type

postConversionType

public TypeBinding postConversionType(Scope scope)
Description copied from class: Expression
Returns the type of the expression after required implicit conversions. When expression type gets promoted or inserted a generic cast, the converted type will differ from the resolved type (surface side-effects from #computeConversion(...)).

Overrides:
postConversionType in class Expression
Returns:
the type after conversion
See Also:
Expression.postConversionType(Scope)

printExpression

public java.lang.StringBuffer printExpression(int indent,
                                              java.lang.StringBuffer output)
Specified by:
printExpression in class Expression

reportError

public TypeBinding reportError(BlockScope scope)
Normal field binding did not work, try to bind to a field of the delegate receiver.


resolveType

public TypeBinding resolveType(BlockScope scope)
Overrides:
resolveType in class Expression

setCodegenBinding

protected void setCodegenBinding(int index,
                                 FieldBinding someCodegenBinding)

setFieldIndex

public void setFieldIndex(int index)
Specified by:
setFieldIndex in interface InvocationSite
Overrides:
setFieldIndex in class NameReference

setGenericCast

protected void setGenericCast(int index,
                              TypeBinding someGenericCast)

setSyntheticAccessor

protected void setSyntheticAccessor(FieldBinding fieldBinding,
                                    int index,
                                    SyntheticMethodBinding syntheticAccessor)

traverse

public void traverse(ASTVisitor visitor,
                     BlockScope scope)
Overrides:
traverse in class Expression

unboundReferenceErrorName

public java.lang.String unboundReferenceErrorName()
Specified by:
unboundReferenceErrorName in class NameReference