Example #1
0
 /**
  * Compute the tagbits for standard annotations. For source types, these could require lazily
  * resolving corresponding annotation nodes, in case of forward references.
  *
  * @see org.eclipse.jdt.internal.compiler.lookup.Binding#getAnnotationTagBits()
  */
 public long getAnnotationTagBits() {
   FieldBinding originalField = original();
   if ((originalField.tagBits & TagBits.AnnotationResolved) == 0
       && originalField.declaringClass instanceof SourceTypeBinding) {
     ClassScope scope = ((SourceTypeBinding) originalField.declaringClass).scope;
     if (scope == null) { // synthetic fields do not have a scope nor any annotations
       this.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
       return 0;
     }
     TypeDeclaration typeDecl = scope.referenceContext;
     FieldDeclaration fieldDecl = typeDecl.declarationOf(originalField);
     if (fieldDecl != null) {
       MethodScope initializationScope =
           isStatic() ? typeDecl.staticInitializerScope : typeDecl.initializerScope;
       FieldBinding previousField = initializationScope.initializedField;
       int previousFieldID = initializationScope.lastVisibleFieldID;
       try {
         initializationScope.initializedField = originalField;
         initializationScope.lastVisibleFieldID = originalField.id;
         ASTNode.resolveAnnotations(initializationScope, fieldDecl.annotations, originalField);
       } finally {
         initializationScope.initializedField = previousField;
         initializationScope.lastVisibleFieldID = previousFieldID;
       }
     }
   }
   return originalField.tagBits;
 }