org.aspectj.org.eclipse.jdt.internal.compiler.ast
Class AbstractMethodDeclaration

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
All Implemented Interfaces:
ReferenceContext, TypeConstants, TypeIds, ProblemSeverities
Direct Known Subclasses:
Clinit, ConstructorDeclaration, MethodDeclaration

public abstract class AbstractMethodDeclaration
extends ASTNode
implements ProblemSeverities, ReferenceContext

AspectJ Extension - added several extension points for subclasses


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.CloseMethodRecord
 
Field Summary
 Annotation[] annotations
           
 Argument[] arguments
           
 MethodBinding binding
           
 int bodyEnd
           
 int bodyStart
           
 CompilationResult compilationResult
           
 int declarationSourceEnd
           
 int declarationSourceStart
           
 int explicitDeclarations
           
 boolean ignoreFurtherInvestigation
           
 Javadoc javadoc
           
 int modifiers
           
 int modifiersSourceStart
           
 Receiver receiver
           
 MethodScope scope
           
 char[] selector
           
 Statement[] statements
           
 TypeReference[] 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, CanBeStatic, ContainsAssertion, DepthMASK, DepthSHIFT, DidResolve, DisableUnnecessaryCastCheck, DiscardEnclosingInstance, DocumentedCasesOmitted, DocumentedFallthrough, Empty, ErrorInSignature, FirstAssignmentToLocal, GenerateCheckcast, HasAbstractMethods, HasAllMethodBodies, HasBeenGenerated, HasBeenResolved, HasFunctionalInterfaceTypes, HasLocalType, HasSyntaxErrors, HasTypeAnnotations, IgnoreNoEffectAssignCheck, IgnoreRawTypeCheck, InsideExpressionStatement, InsideJavadoc, INVOCATION_ARGUMENT_OK, INVOCATION_ARGUMENT_UNCHECKED, INVOCATION_ARGUMENT_WILDCARD, IsAnnotationDefaultValue, IsAnonymousType, IsAnySubRoutineEscaping, IsArgument, IsCapturedOuterLocal, IsCompoundAssigned, IsDefaultConstructor, IsDiamond, IsElseIfStatement, IsElseStatementUnreachable, IsForeachElementVariable, IsImplicitThis, IsImplicitUnit, IsLocalDeclarationReachable, IsLocalType, IsMemberType, IsNonNull, IsReachable, IsRecovered, IsReturnedValue, IsSecondaryType, IsStrictlyAssigned, IsSubRoutineEscaping, IsSuperType, IsSynchronized, IsSynthetic, IsThenStatementUnreachable, IsTryBlockExiting, IsTypeElided, IsUnionType, IsUsefulEmptyStatement, IsVarArgs, LabelUsed, NeededScope, NeedFreeReturn, NeedReceiverGenericCast, NO_ARGUMENTS, OnDemand, OperatorMASK, OperatorSHIFT, OverridingMethodWithSupercall, ParenthesizedMASK, ParenthesizedSHIFT, ResolveJavadoc, RestrictiveFlagMASK, ReturnTypeIDMASK, ShadowsOuterLocal, sourceEnd, sourceStart, SuperAccess, ThenExit, Unchecked, 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, InternalError, 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, 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
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds
BitAutoCloseable, BitCloseable, BitResourceFreeCloseable, BitUninitialized, BitUninternedType, BitWrapperCloseable, 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, InheritableBits, Int2Byte, Int2Char, Int2Double, Int2Float, Int2Int, Int2Long, Int2Short, Int2String, Long2Byte, Long2Char, Long2Double, Long2Float, Long2Int, Long2Long, Long2Short, Long2String, NoId, Null2Null, Null2String, Object2boolean, Object2byte, Object2char, Object2double, Object2float, Object2int, Object2long, Object2Object, Object2short, Object2String, Short2Byte, Short2Char, Short2Double, Short2Float, Short2Int, Short2Long, Short2Short, Short2String, String2String, T_boolean, T_byte, T_char, T_ComGoogleCommonBasePreconditions, T_ComGoogleInjectInject, T_ConfiguredAnnotationNonNull, T_ConfiguredAnnotationNonNullByDefault, T_ConfiguredAnnotationNullable, 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_JavaLangAnnotationRepeatable, T_JavaLangAnnotationRetention, T_JavaLangAnnotationRetentionPolicy, T_JavaLangAnnotationTarget, T_JavaLangAssertionError, T_JavaLangAutoCloseable, 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_JavaLangFunctionalInterface, T_JavaLangIllegalArgumentException, T_JavaLangInteger, T_JavaLangInvokeMethodHandlePolymorphicSignature, T_JavaLangIterable, T_JavaLangLong, T_JavaLangNoClassDefError, T_JavaLangObject, T_JavaLangOverride, T_JavaLangReflectConstructor, T_JavaLangReflectField, T_JavaLangReflectMethod, T_JavaLangRuntimeException, T_JavaLangSafeVarargs, T_JavaLangShort, T_JavaLangString, T_JavaLangStringBuffer, T_JavaLangStringBuilder, T_JavaLangSuppressWarnings, T_JavaLangSystem, T_JavaLangThrowable, T_JavaLangVoid, T_JavaUtilCollection, T_JavaUtilIterator, T_JavaUtilObjects, T_JavaxInjectInject, T_JunitFrameworkAssert, T_LastWellKnownTypeId, T_long, T_null, T_OrgApacheCommonsLang3Validate, T_OrgApacheCommonsLangValidate, T_OrgEclipseCoreRuntimeAssert, T_OrgJunitAssert, T_short, T_undefined, T_void, UNBOXING
 
Method Summary
 void abort(int abortLevel, CategorizedProblem problem)
           
 void bindArguments()
          Bind and add argument's binding into the scope of the method
 void bindThrownExceptions()
          Record the thrown exception type bindings in the corresponding type references.
 CompilationResult compilationResult()
           
 void createArgumentBindings()
          When a method is accessed via SourceTypeBinding.resolveTypesFor(MethodBinding) we create the argument binding and resolve annotations in order to compute null annotation tagbits.
 void ensureScopeSetup()
          Hook for subclasses to influence scope hierarchy.
 boolean finishResolveTypes(SourceTypeBinding sourceTypeBinding)
          Called at the end of resolving types
 void generateCode(ClassFile classFile)
           
 void generateCode(ClassScope classScope, ClassFile classFile)
          Bytecode generation for a method
protected  int generateInfoAttributes(ClassFile classFile)
          Generates my info attributes, hook for subclasses
 void getAllAnnotationContexts(int targetType, java.util.List allAnnotationContexts)
           
 CompilationUnitDeclaration getCompilationUnitDeclaration()
           
 boolean hasErrors()
           
 boolean isAbstract()
           
 boolean isAnnotationMethod()
           
 boolean isClinit()
           
 boolean isConstructor()
           
 boolean isDefaultConstructor()
           
 boolean isDefaultMethod()
           
 boolean isInitializationMethod()
           
 boolean isMethod()
           
 boolean isNative()
           
 boolean isStatic()
           
abstract  void parseStatements(Parser parser, CompilationUnitDeclaration unit)
          Fill up the method body with statement
 void postParse(TypeDeclaration typeDec)
          Just before building bindings, hook for subclasses
 java.lang.StringBuffer print(int tab, java.lang.StringBuffer output)
           
 java.lang.StringBuffer printBody(int indent, java.lang.StringBuffer output)
           
 java.lang.StringBuffer printReturnType(int indent, java.lang.StringBuffer output)
           
 void resolve(ClassScope upperScope)
           
 void resolveJavadoc()
           
 void resolveReceiver()
           
 void resolveStatements()
           
 void tagAsHavingErrors()
           
 void tagAsHavingIgnoredMandatoryErrors(int problemId)
           
 void traverse(ASTVisitor visitor, ClassScope classScope)
           
 TypeParameter[] typeParameters()
           
 
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, traverse
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

scope

public MethodScope scope

selector

public char[] selector

declarationSourceStart

public int declarationSourceStart

declarationSourceEnd

public int declarationSourceEnd

modifiers

public int modifiers

modifiersSourceStart

public int modifiersSourceStart

annotations

public Annotation[] annotations

receiver

public Receiver receiver

arguments

public Argument[] arguments

thrownExceptions

public TypeReference[] thrownExceptions

statements

public Statement[] statements

explicitDeclarations

public int explicitDeclarations

binding

public MethodBinding binding

ignoreFurtherInvestigation

public boolean ignoreFurtherInvestigation

javadoc

public Javadoc javadoc

bodyStart

public int bodyStart

bodyEnd

public int bodyEnd

compilationResult

public CompilationResult compilationResult
Method Detail

abort

public void abort(int abortLevel,
                  CategorizedProblem problem)
Specified by:
abort in interface ReferenceContext

createArgumentBindings

public void createArgumentBindings()
When a method is accessed via SourceTypeBinding.resolveTypesFor(MethodBinding) we create the argument binding and resolve annotations in order to compute null annotation tagbits.


bindArguments

public void bindArguments()
Bind and add argument's binding into the scope of the method


bindThrownExceptions

public void bindThrownExceptions()
Record the thrown exception type bindings in the corresponding type references.


compilationResult

public CompilationResult compilationResult()
Specified by:
compilationResult in interface ReferenceContext

generateCode

public void generateCode(ClassScope classScope,
                         ClassFile classFile)
Bytecode generation for a method

Parameters:
classScope -
classFile -

generateCode

public void generateCode(ClassFile classFile)

getAllAnnotationContexts

public void getAllAnnotationContexts(int targetType,
                                     java.util.List allAnnotationContexts)

getCompilationUnitDeclaration

public CompilationUnitDeclaration getCompilationUnitDeclaration()
Specified by:
getCompilationUnitDeclaration in interface ReferenceContext

hasErrors

public boolean hasErrors()
Specified by:
hasErrors in interface ReferenceContext

isAbstract

public boolean isAbstract()

isAnnotationMethod

public boolean isAnnotationMethod()

isClinit

public boolean isClinit()

isConstructor

public boolean isConstructor()

isDefaultConstructor

public boolean isDefaultConstructor()

isDefaultMethod

public boolean isDefaultMethod()

isInitializationMethod

public boolean isInitializationMethod()

isMethod

public boolean isMethod()

isNative

public boolean isNative()

isStatic

public boolean isStatic()

parseStatements

public abstract void parseStatements(Parser parser,
                                     CompilationUnitDeclaration unit)
Fill up the method body with statement

Parameters:
parser -
unit -

print

public java.lang.StringBuffer print(int tab,
                                    java.lang.StringBuffer output)
Specified by:
print in class ASTNode

printBody

public java.lang.StringBuffer printBody(int indent,
                                        java.lang.StringBuffer output)

printReturnType

public java.lang.StringBuffer printReturnType(int indent,
                                              java.lang.StringBuffer output)

resolve

public void resolve(ClassScope upperScope)

resolveReceiver

public void resolveReceiver()

resolveJavadoc

public void resolveJavadoc()

resolveStatements

public void resolveStatements()

tagAsHavingErrors

public void tagAsHavingErrors()
Specified by:
tagAsHavingErrors in interface ReferenceContext

tagAsHavingIgnoredMandatoryErrors

public void tagAsHavingIgnoredMandatoryErrors(int problemId)
Specified by:
tagAsHavingIgnoredMandatoryErrors in interface ReferenceContext

traverse

public void traverse(ASTVisitor visitor,
                     ClassScope classScope)

typeParameters

public TypeParameter[] typeParameters()

finishResolveTypes

public boolean finishResolveTypes(SourceTypeBinding sourceTypeBinding)
Called at the end of resolving types


postParse

public void postParse(TypeDeclaration typeDec)
Just before building bindings, hook for subclasses


generateInfoAttributes

protected int generateInfoAttributes(ClassFile classFile)
Generates my info attributes, hook for subclasses


ensureScopeSetup

public void ensureScopeSetup()
Hook for subclasses to influence scope hierarchy. (why-o-why cant fields be accessed through getters...)