org.eclipse.jdt.internal.compiler.lookup
Class LookupEnvironment

java.lang.Object
  extended by org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment
All Implemented Interfaces:
ProblemReasons, TypeConstants

public class LookupEnvironment
extends java.lang.Object
implements ProblemReasons, TypeConstants


Field Summary
 ClassFilePool classFilePool
           
 PackageBinding defaultPackage
           
 CompilerOptions globalOptions
           
 java.lang.Object missingClassFileLocation
           
 INameEnvironment nameEnvironment
           
 ProblemReporter problemReporter
           
 ITypeRequestor typeRequestor
           
 CompilationUnitDeclaration unitBeingCompleted
           
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.ProblemReasons
Ambiguous, IllegalSuperTypeVariable, InheritedNameHidesEnclosingName, InternalNameProvided, InvalidTypeForStaticImport, NoError, NonStaticReferenceInConstructorInvocation, NonStaticReferenceInStaticContext, NotFound, NotVisible, ParameterBoundMismatch, ParameterizedMethodTypeMismatch, ReceiverTypeNotVisible, TypeArgumentsForRawGenericMethod, TypeParameterArityMismatch
 
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_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, 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, JML_ANNOTATION, JML_ANNOTATION_CODE_BIGINT_MATH, JML_ANNOTATION_CODE_JAVA_MATH, JML_ANNOTATION_CODE_SAFE_MATH, JML_ANNOTATION_GHOST, JML_ANNOTATION_HELPER, JML_ANNOTATION_INSTANCE, JML_ANNOTATION_MODEL, JML_ANNOTATION_NON_NULL, JML_ANNOTATION_NON_NULL_BY_DEFAULT, JML_ANNOTATION_NULLABLE, JML_ANNOTATION_NULLABLE_BY_DEFAULT, JML_ANNOTATION_PEER, JML_ANNOTATION_PKG, JML_ANNOTATION_PURE, JML_ANNOTATION_READONLY, JML_ANNOTATION_REP, JML_ANNOTATION_SPEC_BIGINT_MATH, JML_ANNOTATION_SPEC_JAVA_MATH, JML_ANNOTATION_SPEC_PROTECTED, JML_ANNOTATION_SPEC_PUBLIC, JML_ANNOTATION_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_CODE_BIGINT_MATH, JML_ANNOTATION_TYPE_CODE_JAVA_MATH, JML_ANNOTATION_TYPE_CODE_SAFE_MATH, JML_ANNOTATION_TYPE_GHOST, JML_ANNOTATION_TYPE_HELPER, JML_ANNOTATION_TYPE_INSTANCE, JML_ANNOTATION_TYPE_MODEL, JML_ANNOTATION_TYPE_NON_NULL_BY_DEFAULT, JML_ANNOTATION_TYPE_NONNULL, JML_ANNOTATION_TYPE_NULLABLE, JML_ANNOTATION_TYPE_NULLABLE_BY_DEFAULT, JML_ANNOTATION_TYPE_PEER, JML_ANNOTATION_TYPE_PURE, JML_ANNOTATION_TYPE_READONLY, JML_ANNOTATION_TYPE_REP, JML_ANNOTATION_TYPE_SPEC_BIGINT_MATH, JML_ANNOTATION_TYPE_SPEC_JAVA_MATH, JML_ANNOTATION_TYPE_SPEC_PROTECTED, JML_ANNOTATION_TYPE_SPEC_PUBLIC, JML_ANNOTATION_TYPE_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_UNINITIALIZED, JML_ANNOTATION_UNINITIALIZED, JML_ORG, JML_RUNTIME, JML_RUNTIME_ANNOTATION, JML4, JMLSPECS, 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, UTIL, VALUE, VALUEOF, VALUES, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE
 
Constructor Summary
LookupEnvironment(ITypeRequestor typeRequestor, CompilerOptions globalOptions, ProblemReporter problemReporter, INameEnvironment nameEnvironment)
           
 
Method Summary
 ReferenceBinding askForType(char[][] compoundName)
          Ask the name environment for a type which corresponds to the compoundName.
 void buildTypeBindings(CompilationUnitDeclaration unit, AccessRestriction accessRestriction)
           
 BinaryTypeBinding cacheBinaryType(IBinaryType binaryType, AccessRestriction accessRestriction)
           
 BinaryTypeBinding cacheBinaryType(IBinaryType binaryType, boolean needFieldsAndMethods, AccessRestriction accessRestriction)
           
 void clearCachedTypeBindings()
          Clears cached type bindings.
 void completeTypeBindings()
           
 void completeTypeBindings(CompilationUnitDeclaration parsedUnit)
           
 void completeTypeBindings(CompilationUnitDeclaration parsedUnit, boolean buildFieldsAndMethods)
           
 TypeBinding computeBoxingType(TypeBinding type)
           
 TypeBinding convertEliminatingTypeVariables(TypeBinding originalType, ReferenceBinding genericType, int rank, java.util.Set eliminatedVariables)
           
 ReferenceBinding convertToParameterizedType(ReferenceBinding originalType)
          Convert a given source type into a parameterized form if generic.
 TypeBinding convertToRawType(TypeBinding type, boolean forceRawEnclosingType)
          Returns the given binding's raw type binding.
 TypeBinding convertUnresolvedBinaryToRawType(TypeBinding type)
           
 AnnotationBinding createAnnotation(ReferenceBinding annotationType, ElementValuePair[] pairs)
           
 ArrayBinding createArrayType(TypeBinding leafComponentType, int dimensionCount)
           
 BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction)
           
 BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType, PackageBinding packageBinding, boolean needFieldsAndMethods, AccessRestriction accessRestriction)
           
 MissingTypeBinding createMissingType(PackageBinding packageBinding, char[][] compoundName)
           
 PackageBinding createPackage(char[][] compoundName)
           
 ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod, RawTypeBinding rawType)
           
 ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod, TypeBinding[] typeArguments)
           
 ParameterizedTypeBinding createParameterizedType(ReferenceBinding genericType, TypeBinding[] typeArguments, ReferenceBinding enclosingType)
           
 RawTypeBinding createRawType(ReferenceBinding genericType, ReferenceBinding enclosingType)
           
 WildcardBinding createWildcard(ReferenceBinding genericType, int rank, TypeBinding bound, TypeBinding[] otherBounds, int boundKind)
           
 AccessRestriction getAccessRestriction(TypeBinding type)
          Returns the access restriction associated to a given type, or null if none
 ReferenceBinding getCachedType(char[][] compoundName)
          Answer the type for the compoundName if it exists in the cache.
 ReferenceBinding getResolvedType(char[][] compoundName, Scope scope)
           
 ReferenceBinding getType(char[][] compoundName)
           
 TypeBinding getTypeFromTypeSignature(SignatureWrapper wrapper, TypeVariableBinding[] staticVariables, ReferenceBinding enclosingType, char[][][] missingTypeNames)
           
 MethodVerifier methodVerifier()
           
 PackageBinding public_computePackageFrom(char[][] constantPoolName, boolean isMissing)
           
 void rebuildTypeBindings(CompilationUnitDeclaration unit)
          Rebuilds type bindings of the given compilation unit to take into account of RAC-introduced fields, methods, and classes.
 void releaseClassFiles(ClassFile[] classFiles)
           
 void reset()
           
 void setAccessRestriction(ReferenceBinding type, AccessRestriction accessRestriction)
          Associate a given type with some access restriction (did not store the restriction directly into binding, since sparse information)
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

defaultPackage

public PackageBinding defaultPackage

nameEnvironment

public INameEnvironment nameEnvironment

globalOptions

public CompilerOptions globalOptions

problemReporter

public ProblemReporter problemReporter

classFilePool

public ClassFilePool classFilePool

typeRequestor

public ITypeRequestor typeRequestor

unitBeingCompleted

public CompilationUnitDeclaration unitBeingCompleted

missingClassFileLocation

public java.lang.Object missingClassFileLocation
Constructor Detail

LookupEnvironment

public LookupEnvironment(ITypeRequestor typeRequestor,
                         CompilerOptions globalOptions,
                         ProblemReporter problemReporter,
                         INameEnvironment nameEnvironment)
Method Detail

askForType

public ReferenceBinding askForType(char[][] compoundName)
Ask the name environment for a type which corresponds to the compoundName. Answer null if the name cannot be found.


buildTypeBindings

public void buildTypeBindings(CompilationUnitDeclaration unit,
                              AccessRestriction accessRestriction)

cacheBinaryType

public BinaryTypeBinding cacheBinaryType(IBinaryType binaryType,
                                         AccessRestriction accessRestriction)

cacheBinaryType

public BinaryTypeBinding cacheBinaryType(IBinaryType binaryType,
                                         boolean needFieldsAndMethods,
                                         AccessRestriction accessRestriction)

completeTypeBindings

public void completeTypeBindings()

rebuildTypeBindings

public void rebuildTypeBindings(CompilationUnitDeclaration unit)
Rebuilds type bindings of the given compilation unit to take into account of RAC-introduced fields, methods, and classes. For types that already have type bindings, this method updates their type bindings; the identities of the type binding objects remain the same. For types that don't have type bindings, e.g., interface surrogate classes, this method creates new type bindings for them.


clearCachedTypeBindings

public void clearCachedTypeBindings()
Clears cached type bindings. Examples of cached type bindings include parameterized type bindings (e.g., Stack) generated from the source type bindings of generic types (e.g., Stack).

See Also:
reset()

completeTypeBindings

public void completeTypeBindings(CompilationUnitDeclaration parsedUnit)

completeTypeBindings

public void completeTypeBindings(CompilationUnitDeclaration parsedUnit,
                                 boolean buildFieldsAndMethods)

computeBoxingType

public TypeBinding computeBoxingType(TypeBinding type)

public_computePackageFrom

public PackageBinding public_computePackageFrom(char[][] constantPoolName,
                                                boolean isMissing)

convertEliminatingTypeVariables

public TypeBinding convertEliminatingTypeVariables(TypeBinding originalType,
                                                   ReferenceBinding genericType,
                                                   int rank,
                                                   java.util.Set eliminatedVariables)

convertToParameterizedType

public ReferenceBinding convertToParameterizedType(ReferenceBinding originalType)
Convert a given source type into a parameterized form if generic. generic X --> param X


convertToRawType

public TypeBinding convertToRawType(TypeBinding type,
                                    boolean forceRawEnclosingType)
Returns the given binding's raw type binding.

Parameters:
type - the TypeBinding to raw convert
forceRawEnclosingType - forces recursive raw conversion of enclosing types (used in Javadoc references only)
Returns:
TypeBinding the raw converted TypeBinding

convertUnresolvedBinaryToRawType

public TypeBinding convertUnresolvedBinaryToRawType(TypeBinding type)

createAnnotation

public AnnotationBinding createAnnotation(ReferenceBinding annotationType,
                                          ElementValuePair[] pairs)

createArrayType

public ArrayBinding createArrayType(TypeBinding leafComponentType,
                                    int dimensionCount)

createBinaryTypeFrom

public BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType,
                                              PackageBinding packageBinding,
                                              AccessRestriction accessRestriction)

createBinaryTypeFrom

public BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType,
                                              PackageBinding packageBinding,
                                              boolean needFieldsAndMethods,
                                              AccessRestriction accessRestriction)

createMissingType

public MissingTypeBinding createMissingType(PackageBinding packageBinding,
                                            char[][] compoundName)

createPackage

public PackageBinding createPackage(char[][] compoundName)

createParameterizedGenericMethod

public ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod,
                                                                          RawTypeBinding rawType)

createParameterizedGenericMethod

public ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod,
                                                                          TypeBinding[] typeArguments)

createParameterizedType

public ParameterizedTypeBinding createParameterizedType(ReferenceBinding genericType,
                                                        TypeBinding[] typeArguments,
                                                        ReferenceBinding enclosingType)

createRawType

public RawTypeBinding createRawType(ReferenceBinding genericType,
                                    ReferenceBinding enclosingType)

createWildcard

public WildcardBinding createWildcard(ReferenceBinding genericType,
                                      int rank,
                                      TypeBinding bound,
                                      TypeBinding[] otherBounds,
                                      int boundKind)

getAccessRestriction

public AccessRestriction getAccessRestriction(TypeBinding type)
Returns the access restriction associated to a given type, or null if none


getCachedType

public ReferenceBinding getCachedType(char[][] compoundName)
Answer the type for the compoundName if it exists in the cache. Answer theNotFoundType if it could not be resolved the first time it was looked up, otherwise answer null. NOTE: Do not use for nested types... the answer is NOT the same for a.b.C or a.b.C.D.E assuming C is a type in both cases. In the a.b.C.D.E case, null is the answer.


getResolvedType

public ReferenceBinding getResolvedType(char[][] compoundName,
                                        Scope scope)

getType

public ReferenceBinding getType(char[][] compoundName)

getTypeFromTypeSignature

public TypeBinding getTypeFromTypeSignature(SignatureWrapper wrapper,
                                            TypeVariableBinding[] staticVariables,
                                            ReferenceBinding enclosingType,
                                            char[][][] missingTypeNames)

methodVerifier

public MethodVerifier methodVerifier()

releaseClassFiles

public void releaseClassFiles(ClassFile[] classFiles)

reset

public void reset()

setAccessRestriction

public void setAccessRestriction(ReferenceBinding type,
                                 AccessRestriction accessRestriction)
Associate a given type with some access restriction (did not store the restriction directly into binding, since sparse information)