Package org.eclipse.jdt.internal.compiler.ast

Examples of org.eclipse.jdt.internal.compiler.ast.FieldDeclaration


  }

  private ASTNode[] computeMergedMemberDeclarations(TypeDeclaration typeDeclaration){

    int fieldIndex = 0, fieldCount = (typeDeclaration.fields == null) ? 0 : typeDeclaration.fields.length;
    FieldDeclaration field = fieldCount == 0 ? null : typeDeclaration.fields[fieldIndex];
    int fieldStart = field == null ? Integer.MAX_VALUE : field.declarationSourceStart;

    int methodIndex = 0, methodCount = (typeDeclaration.methods == null) ? 0 : typeDeclaration.methods.length;
    AbstractMethodDeclaration method = methodCount == 0 ? null : typeDeclaration.methods[methodIndex];
    int methodStart = method == null ? Integer.MAX_VALUE : method.declarationSourceStart;

    int typeIndex = 0, typeCount = (typeDeclaration.memberTypes == null) ? 0 : typeDeclaration.memberTypes.length;
    TypeDeclaration type = typeCount == 0 ? null : typeDeclaration.memberTypes[typeIndex];
    int typeStart = type == null ? Integer.MAX_VALUE : type.declarationSourceStart;

    final int memberLength = fieldCount+methodCount+typeCount;
    ASTNode[] members = new ASTNode[memberLength];
    if (memberLength != 0) {
      int index = 0;
      int previousFieldStart = -1;
      do {
        if (fieldStart < methodStart && fieldStart < typeStart) {
          if (field.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
            // filter out enum constants
            previousFieldStart = fieldStart;
            if (++fieldIndex < fieldCount) { // find next field if any
              fieldStart = (field = typeDeclaration.fields[fieldIndex]).declarationSourceStart;
            } else {
              fieldStart = Integer.MAX_VALUE;
            }
            continue;
          }
          // next member is a field
          if (fieldStart == previousFieldStart){
            ASTNode previousMember = members[index - 1];
            if (previousMember instanceof MultiFieldDeclaration) {
              MultiFieldDeclaration multiField = (MultiFieldDeclaration) previousMember;
              int length = multiField.declarations.length;
              System.arraycopy(multiField.declarations, 0, multiField.declarations=new FieldDeclaration[length+1], 0, length);
              multiField.declarations[length] = field;
            } else {
              FieldDeclaration fieldDeclaration = (FieldDeclaration)previousMember;
              final MultiFieldDeclaration multiFieldDeclaration = new MultiFieldDeclaration(new FieldDeclaration[]{ fieldDeclaration, field});
              multiFieldDeclaration.annotations = fieldDeclaration.annotations;
              members[index - 1] = multiFieldDeclaration;
            }
          } else {
View Full Code Here


    boolean ok = false;
    do {
      try {
        for (int i = 0, length = multipleFieldDeclarationsLength; i < length; i++) {
          FieldDeclaration fieldDeclaration = multiFieldDeclaration.declarations[i];
          /*
           * Field name
           */
          if (i == 0) {
            this.scribe.alignFragment(fieldAlignment, 0);
View Full Code Here

      boolean hasConstants = false;
      int length = fieldDeclarations != null ? fieldDeclarations.length : 0;
      int enumConstantsLength = 0;
      if (fieldDeclarations != null) {
        for (int i = 0; i < length; i++) {
          FieldDeclaration fieldDeclaration = fieldDeclarations[i];
          if (fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
            enumConstantsLength++;
          } else {
            break;
          }
        }
        hasConstants = enumConstantsLength != 0;
        if (enumConstantsLength > 1) {
          Alignment enumConstantsAlignment = this.scribe.createAlignment(
              Alignment.ENUM_CONSTANTS,
              this.preferences.alignment_for_enum_constants,
              enumConstantsLength,
              this.scribe.scanner.currentPosition,
              0, // we don't want to indent enum constants when splitting to a new line
              false);
          this.scribe.enterAlignment(enumConstantsAlignment);
          boolean ok = false;
          do {
            try {
              for (int i = 0; i < enumConstantsLength; i++) {
                this.scribe.alignFragment(enumConstantsAlignment, i);
                FieldDeclaration fieldDeclaration = fieldDeclarations[i];
                fieldDeclaration.traverse(this, typeDeclaration.initializerScope);
                if (isNextToken(TerminalTokens.TokenNameCOMMA)) {
                  this.scribe.printNextToken(TerminalTokens.TokenNameCOMMA, this.preferences.insert_space_before_comma_in_enum_declarations);
                  if (this.preferences.insert_space_after_comma_in_enum_declarations) {
                    this.scribe.space();
                  }
                  this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
                  if (fieldDeclaration.initialization instanceof QualifiedAllocationExpression) {
                    this.scribe.printNewLine();
                  }
                }
              }
              ok = true;
            } catch (AlignmentException e) {
              this.scribe.redoAlignment(e);
            }
          } while (!ok);
          this.scribe.exitAlignment(enumConstantsAlignment, true);
        } else if (hasConstants) {
          // only one enum constant
          FieldDeclaration fieldDeclaration = fieldDeclarations[0];
          fieldDeclaration.traverse(this, typeDeclaration.initializerScope);
          if (isNextToken(TerminalTokens.TokenNameCOMMA)) {
            this.scribe.printNextToken(TerminalTokens.TokenNameCOMMA, this.preferences.insert_space_before_comma_in_enum_declarations);
            if (this.preferences.insert_space_after_comma_in_enum_declarations) {
              this.scribe.space();
            }
View Full Code Here

                }
              }
              Initializer initializer = (Initializer) member;
              initializer.traverse(this, null);
            } else {
              FieldDeclaration field = (FieldDeclaration) member;
              format(field, this, null, isChunkStart, i == 0);
            }
          } else if (member instanceof AbstractMethodDeclaration) {
            isChunkStart = memberAlignment.checkChunkStart(METHOD, i, this.scribe.scanner.currentPosition);
            format((AbstractMethodDeclaration) member, null, isChunkStart, i == 0);
View Full Code Here

                  initializer.traverse(this, typeDeclaration.staticInitializerScope);
                } else {
                  initializer.traverse(this, typeDeclaration.initializerScope);
                }
              } else {
                FieldDeclaration field = (FieldDeclaration) member;
                if (field.isStatic()) {
                  format(field, this, typeDeclaration.staticInitializerScope, isChunkStart, i == 0);
                } else {
                  format(field, this, typeDeclaration.initializerScope, isChunkStart, i == 0);
                }
              }
View Full Code Here

  }

  private FieldDeclaration convert(IField field, IType type) throws JavaModelException {
    TypeReference typeReference = createTypeReference(field.getTypeSignature());
    if (typeReference == null) return null;
    FieldDeclaration fieldDeclaration = new FieldDeclaration();

    fieldDeclaration.name = field.getElementName().toCharArray();
    fieldDeclaration.type = typeReference;
    fieldDeclaration.modifiers = field.getFlags();
View Full Code Here

    IField[] fields = type.getFields();
    int fieldCount = fields == null ? 0 : fields.length;
    typeDeclaration.fields = new FieldDeclaration[fieldCount];
    count = 0;
    for (int i = 0; i < fieldCount; i++) {
      FieldDeclaration fieldDeclaration = convert(fields[i], type);
      if (fieldDeclaration != null) {
        typeDeclaration.fields[count++] = fieldDeclaration;
      }
    }
    if (count != fieldCount) {
View Full Code Here

    char[] genericSignature = fieldBinding.genericSignature();
    if (genericSignature != null) {
      attributesNumber += generateSignatureAttribute(genericSignature);
    }
    if (this.targetJDK >= ClassFileConstants.JDK1_4) {
      FieldDeclaration fieldDeclaration = fieldBinding.sourceField();
      if (fieldDeclaration != null) {
        Annotation[] annotations = fieldDeclaration.annotations;
        if (annotations != null) {
          attributesNumber += generateRuntimeAnnotations(annotations, TagBits.AnnotationForField);
        }

        if ((this.produceAttributes & ClassFileConstants.ATTR_TYPE_ANNOTATION) != 0) {
          List allTypeAnnotationContexts = new ArrayList();
          if (annotations != null && (fieldDeclaration.bits & ASTNode.HasTypeAnnotations) != 0) {
            fieldDeclaration.getAllAnnotationContexts(AnnotationTargetTypeConstants.FIELD, allTypeAnnotationContexts);
          }
          int invisibleTypeAnnotationsCounter = 0;
          int visibleTypeAnnotationsCounter = 0;
          TypeReference fieldType = fieldDeclaration.type;
          if (fieldType != null && ((fieldType.bits & ASTNode.HasTypeAnnotations) != 0)) {
View Full Code Here

    this.contents[this.contentsOffset++] = (byte) (fieldCount >> 8);
    this.contents[this.contentsOffset++] = (byte) fieldCount;

    FieldDeclaration[] fieldDecls = currentBinding.scope.referenceContext.fields;
    for (int i = 0, max = fieldDecls == null ? 0 : fieldDecls.length; i < max; i++) {
      FieldDeclaration fieldDecl = fieldDecls[i];
      if (fieldDecl.binding != null) {
        addFieldInfo(fieldDecl.binding);
      }
    }
View Full Code Here

  SourceTypeBinding sourceTypeBinding = (SourceTypeBinding) methodBinding.declaringClass;
  TypeDeclaration typeDeclaration = sourceTypeBinding.scope.referenceContext;
  BlockScope staticInitializerScope = typeDeclaration.staticInitializerScope;
  FieldDeclaration[] fieldDeclarations = typeDeclaration.fields;
  for (int i = methodBinding.startIndex, max = methodBinding.endIndex; i < max; i++) {
    FieldDeclaration fieldDecl = fieldDeclarations[i];
    if (fieldDecl.isStatic()) {
      if (fieldDecl.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
        fieldDecl.generateCode(staticInitializerScope, this);
      }
    }
  }
  return_();
}
View Full Code Here

TOP

Related Classes of org.eclipse.jdt.internal.compiler.ast.FieldDeclaration

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.