org.aspectj.ajdt.internal.compiler.lookup
Class AjLookupEnvironment

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

public class AjLookupEnvironment
extends LookupEnvironment
implements AnonymousClassCreationListener

Overrides the default eclipse LookupEnvironment for two purposes. 1. To provide some additional phases to completeTypeBindings that weave declare parents and inter-type declarations at the correct time. 2. To intercept the loading of new binary types to ensure the they will have declare parents and inter-type declarations woven when appropriate.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.CloseMethodRecord
 
Field Summary
 EclipseFactory factory
           
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment
arrayClone, BUILD_FIELDS_AND_METHODS, BUILD_TYPE_HIERARCHY, CHECK_AND_SET_IMPORTS, classFilePool, CONNECT_TYPE_HIERARCHY, defaultPackage, globalOptions, isProcessingAnnotations, lastCompletedUnitIndex, lastUnitIndex, mayTolerateMissingType, missingClassFileLocation, nameEnvironment, problemReporter, resolutionListeners, stepCompleted, typeRequestor, unitBeingCompleted, units
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons
Ambiguous, ApplicableMethodOverriddenByInapplicable, AttemptToBypassDirectSuper, ContradictoryNullAnnotations, DefectiveContainerAnnotationType, IllegalSuperTypeVariable, InheritedNameHidesEnclosingName, InternalNameProvided, IntersectionHasMultipleFunctionalInterfaces, InvalidTypeForAutoManagedResource, InvalidTypeForStaticImport, NoError, NonStaticOrAlienTypeReceiver, NonStaticReferenceInConstructorInvocation, NonStaticReferenceInStaticContext, NoSuchSingleAbstractMethod, NotAWellFormedParameterizedType, NotFound, NotVisible, ParameterBoundMismatch, ParameterizedMethodExpectedTypeProblem, ParameterizedMethodTypeMismatch, ReceiverTypeNotVisible, TypeArgumentsForRawGenericMethod, TypeParameterArityMismatch, VarargsElementTypeNotVisible
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANONYMOUS_METHOD, APACHE, APACHE_DBUTILS, APACHE_IOUTILS, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, BOOLEAN, BYTE, CAPTURE18, 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, CHECK_ARGUMENT, CHECK_NOT_NULL, CHECK_STATE, CLINIT, CLONE, CLOSE, CLOSE_QUIETLY, closeMethods, COM, COM_GOOGLE_COMMON_BASE_PRECONDITIONS, COM_GOOGLE_INJECT_INJECT, COMMONS, COMPILER, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CORE, DEFAULT_LOCATION__ARRAY_CONTENTS, DEFAULT_LOCATION__FIELD, DEFAULT_LOCATION__PARAMETER, DEFAULT_LOCATION__RETURN_TYPE, DEFAULT_LOCATION__TYPE_ARGUMENT, DEFAULT_LOCATION__TYPE_BOUND, DEFAULT_LOCATION__TYPE_PARAMETER, DESERIALIZE_LAMBDA, DOM, DOUBLE, ECLIPSE, EQUALS, FLOAT, FRAMEWORK, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_NOTNULL, IS_TRUE, ITYPEBINDING, JAVA, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_RESOURCE_FREE_CLOSEABLES, JAVA_IO_SERIALIZABLE, JAVA_IO_WRAPPER_CLOSEABLES, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_REPEATABLE, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_AUTOCLOSEABLE, 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_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, 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_SAFEVARARGS, 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_NIO_FILE_FILES, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_OBJECTS, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, LAMBDA_TYPE, LANG, LANG3, LENGTH, LONG, LOOKUP, MAIN, MISMATCH, NOT_NULL, NULL, OBJECT, OK, OPTIONAL, ORG, ORG_APACHE_COMMONS_LANG_VALIDATE, ORG_APACHE_COMMONS_LANG3_VALIDATE, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, ORG_ECLIPSE_JDT_INTERNAL_COMPILER_LOOKUP_TYPEBINDING, ORG_JUNIT_ASSERT, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, REQUIRE_NON_NULL, RESOURCE_FREE_CLOSEABLE_STREAM, RUNTIME, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_CONSTANT_INITIALIZATION_METHOD_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_STATIC_FACTORY, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, 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, ZIP
 
Constructor Summary
AjLookupEnvironment(ITypeRequestor typeRequestor, CompilerOptions options, ProblemReporter problemReporter, INameEnvironment nameEnvironment)
           
 
Method Summary
 void anonymousTypeBindingCreated(LocalTypeBinding aBinding)
          Callback driven when the compiler detects an anonymous type during block resolution.
 void buildTypeBindings(CompilationUnitDeclaration unit, AccessRestriction accessRestriction)
           
 void completeTypeBindings()
           
 BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType, PackageBinding packageBinding, boolean needFieldsAndMethods, AccessRestriction accessRestriction)
           
 void doSupertypesFirst(ReferenceBinding rb, java.util.Collection<? extends ReferenceBinding> yetToProcess)
           
 void reset()
           
 void warnOnAddedInterface(ResolvedType type, ResolvedType parent)
           
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment
addResolutionListener, askForType, cacheBinaryType, cacheBinaryType, completeTypeBindings, completeTypeBindings, completeTypeBindings, computeArrayClone, computeBoxingType, convertToParameterizedType, convertToRawType, convertToRawTypes, convertUnresolvedBinaryToRawType, createAnnotatedType, createAnnotatedType, createAnnotation, createArrayType, createArrayType, createBinaryTypeFrom, createGetClassMethod, createIntersectionCastType, createMemberType, createMissingType, createPackage, createParameterizedGenericMethod, createParameterizedGenericMethod, createParameterizedType, createParameterizedType, createPolymorphicMethod, createRawType, createRawType, createUnresolvedAnnotation, createWildcard, createWildcard, filterNullTypeAnnotations, getAccessRestriction, getAnnotatedTypes, getCachedType, getNonNullAnnotation, getNonNullAnnotationName, getNonNullByDefaultAnnotationName, getNullableAnnotation, getNullableAnnotationName, getResolvedType, getType, getTypeFromTypeSignature, getUnannotatedType, methodVerifier, newMethodVerifier, nullAnnotationsFromTagBits, releaseClassFiles, setAccessRestriction, updatePolymorphicMethodReturnType, usesAnnotatedTypeSystem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

factory

public EclipseFactory factory
Constructor Detail

AjLookupEnvironment

public AjLookupEnvironment(ITypeRequestor typeRequestor,
                           CompilerOptions options,
                           ProblemReporter problemReporter,
                           INameEnvironment nameEnvironment)
Method Detail

completeTypeBindings

public void completeTypeBindings()
Overrides:
completeTypeBindings in class LookupEnvironment

doSupertypesFirst

public void doSupertypesFirst(ReferenceBinding rb,
                              java.util.Collection<? extends ReferenceBinding> yetToProcess)

warnOnAddedInterface

public void warnOnAddedInterface(ResolvedType type,
                                 ResolvedType parent)

createBinaryTypeFrom

public BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType,
                                              PackageBinding packageBinding,
                                              boolean needFieldsAndMethods,
                                              AccessRestriction accessRestriction)
Overrides:
createBinaryTypeFrom in class LookupEnvironment

anonymousTypeBindingCreated

public void anonymousTypeBindingCreated(LocalTypeBinding aBinding)
Callback driven when the compiler detects an anonymous type during block resolution. We need to add it to the weaver so that we don't trip up later.

Specified by:
anonymousTypeBindingCreated in interface AnonymousClassCreationListener
Parameters:
aBinding -

buildTypeBindings

public void buildTypeBindings(CompilationUnitDeclaration unit,
                              AccessRestriction accessRestriction)
Overrides:
buildTypeBindings in class LookupEnvironment

reset

public void reset()
Overrides:
reset in class LookupEnvironment