org.aspectj.ajdt.internal.compiler.ast
Class InterTypeDeclaration

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
      extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration
          extended by org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration
              extended by org.aspectj.ajdt.internal.compiler.ast.AjMethodDeclaration
                  extended by org.aspectj.ajdt.internal.compiler.ast.InterTypeDeclaration
All Implemented Interfaces:
org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds, org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities
Direct Known Subclasses:
InterTypeConstructorDeclaration, InterTypeFieldDeclaration, InterTypeMethodDeclaration

public abstract class InterTypeDeclaration
extends AjMethodDeclaration

Base type for all inter-type declarations including methods, fields and constructors.

Author:
Jim Hugunin

Field Summary
 int declaredModifiers
           
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration
returnType, typeParameters
 
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration
annotations, arguments, binding, bodyEnd, bodyStart, compilationResult, declarationSourceEnd, declarationSourceStart, explicitDeclarations, ignoreFurtherInvestigation, javadoc, modifiers, modifiersSourceStart, scope, selector, statements, thrownExceptions
 
Fields inherited from class org.aspectj.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, BlockExit, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasLocalType, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAnnotationDefaultValue, IsAnonymousType, IsAnySubRoutineEscaping, IsCompoundAssigned, IsDefaultConstructor, IsElseIfStatement, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsSynchronized, IsTryBlockExiting, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, RestrictiveFlagMASK, ReturnTypeIDMASK, sourceEnd, sourceStart, SuperAccess, ThenExit, UndocumentedEmptyBlock, UnnecessaryCast, UnsafeCast, Used
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities
Abort, AbortCompilation, AbortCompilationUnit, AbortMethod, AbortType, Error, Fatal, Ignore, Optional, SecondaryError, Warning
 
Fields inherited from interface org.aspectj.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, 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
 
Fields inherited from interface org.aspectj.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_JavaIoException, T_JavaIoExternalizable, T_JavaIoObjectStreamException, 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
InterTypeDeclaration(org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult result, org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference onType)
           
 
Method Summary
 void addAtAspectJAnnotations()
           
abstract  EclipseTypeMunger build(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope)
          Called from AspectDeclarations.buildInterTypeAndPerClause
 void determineTypeVariableAliases()
          Create the list of aliases based on what was supplied as parameters for the ontype.
 void ensureScopeSetup()
          Called just before the compiler is going to start resolving elements of a declaration, this method adds an intertypescope between the methodscope and classscope so that elements of the type targetted by the ITD can be resolved.
 void fixSuperCallsInBody()
           
 char[] getDeclaredSelector()
           
 org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference getOnType()
           
 ResolvedMember getSignature()
           
 boolean isTargetAnnotation(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope, java.lang.String kind)
          Checks that the target for the ITD is not an annotation.
 boolean isTargetEnum(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope, java.lang.String kind)
          Checks that the target for the ITD is not an enum.
 void resolve(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope upperScope)
           
 void setDeclaredModifiers(int modifiers)
           
 void setOnType(org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference onType)
           
 void setSelector(char[] selector)
           
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration
analyseCode, isMethod, parseStatements, printReturnType, resolveStatements, traverse, typeParameters
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration
abort, bindArguments, bindThrownExceptions, compilationResult, finishResolveTypes, generateCode, generateCode, hasErrors, isAbstract, isAnnotationMethod, isClinit, isConstructor, isDefaultConstructor, isInitializationMethod, isNative, isStatic, postParse, print, printBody, resolveJavadoc, tagAsHavingErrors
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode
checkInvocationArguments, concreteStatement, isFieldUseDeprecated, isImplicitThis, isMethodUseDeprecated, isSuper, isThis, isTypeUseDeprecated, printAnnotations, printIndent, printModifiers, resolveAnnotations, resolveDeprecatedAnnotations, sourceEnd, sourceStart, toString, traverse
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

declaredModifiers

public int declaredModifiers
Constructor Detail

InterTypeDeclaration

public InterTypeDeclaration(org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult result,
                            org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference onType)
Method Detail

setOnType

public void setOnType(org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference onType)

setDeclaredModifiers

public void setDeclaredModifiers(int modifiers)

setSelector

public void setSelector(char[] selector)

addAtAspectJAnnotations

public void addAtAspectJAnnotations()

isTargetAnnotation

public boolean isTargetAnnotation(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope,
                                  java.lang.String kind)
Checks that the target for the ITD is not an annotation. If it is, an error message is signaled. We return true if it is annotation so the caller knows to stop processing. kind is 'constructor', 'field', 'method'


isTargetEnum

public boolean isTargetEnum(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope,
                            java.lang.String kind)
Checks that the target for the ITD is not an enum. If it is, an error message is signaled. We return true if it is enum so the caller knows to stop processing.


resolve

public void resolve(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope upperScope)
Overrides:
resolve in class org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration

build

public abstract EclipseTypeMunger build(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope classScope)
Called from AspectDeclarations.buildInterTypeAndPerClause


fixSuperCallsInBody

public void fixSuperCallsInBody()

getSignature

public ResolvedMember getSignature()

getDeclaredSelector

public char[] getDeclaredSelector()

getOnType

public org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference getOnType()

determineTypeVariableAliases

public void determineTypeVariableAliases()
Create the list of aliases based on what was supplied as parameters for the ontype. For example, if the declaration is 'List SomeType.foo' then the alias list will simply contain 'N' and 'N' will mean 'the first type variable declared for type SomeType'


ensureScopeSetup

public void ensureScopeSetup()
Called just before the compiler is going to start resolving elements of a declaration, this method adds an intertypescope between the methodscope and classscope so that elements of the type targetted by the ITD can be resolved. For example, if type variables are referred to in the ontype for the ITD, they have to be resolved against the ontype, not the aspect containing the ITD.

Overrides:
ensureScopeSetup in class org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration