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

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


    if (type instanceof ReferenceBinding) {
      char[][] name = ((ReferenceBinding) type).compoundName;
      end = (int) ref.sourcePositions[name.length - 1];
    }
  } else if (location instanceof ArrayTypeReference) {
    ArrayTypeReference arrayTypeReference = (ArrayTypeReference) location;
    if (isRecoveredName(arrayTypeReference.token)) return;
    end = arrayTypeReference.originalSourceEnd;
  }
  this.handle(
    id,
View Full Code Here


          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BOOLEAN.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BOOLEAN.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_BYTE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BYTE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BYTE.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_CHAR :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.CHAR.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.CHAR.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_DOUBLE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.DOUBLE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.DOUBLE.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_FLOAT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.FLOAT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.FLOAT.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_INT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.INT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.INT.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_LONG :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.LONG.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.LONG.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_SHORT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.SHORT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.SHORT.simpleName, dim, ((long) start << 32) + end);       
          }
          break;
        case Signature.C_VOID :
          if (!nameStarted) {
            this.namePos++;
            return new SingleTypeReference(TypeBinding.VOID.simpleName, ((long) start << 32) + end);
          }
          break;
        case Signature.C_RESOLVED :
        case Signature.C_UNRESOLVED :
        case Signature.C_TYPE_VARIABLE :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          }
          break;
        case Signature.C_STAR:
          this.namePos++;
          Wildcard result = new Wildcard(Wildcard.UNBOUND);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_EXTENDS:
          this.namePos++;
          result = new Wildcard(Wildcard.EXTENDS);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_SUPER:
          this.namePos++;
          result = new Wildcard(Wildcard.SUPER);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_ARRAY :
          dim++;
          break;
        case Signature.C_GENERIC_END :
        case Signature.C_SEMICOLON :
          nameFragmentEnd = this.namePos-1;
          this.namePos++;
          break typeLoop;
        case Signature.C_DOLLAR:
          if (this.memberTypeSeparator != Signature.C_DOLLAR)
            break;
        case Signature.C_DOT :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          } else if (this.namePos > nameFragmentStart) // handle name starting with a $ (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=91709)
            identCount ++;
          break;
        case Signature.C_GENERIC_START :
          nameFragmentEnd = this.namePos-1;
          // convert 1.5 specific constructs only if compliance is 1.5 or above
          if (!this.has1_5Compliance)
            break typeLoop;
          if (fragments == null) fragments = new ArrayList(2);
          addIdentifiers(typeSignature, nameFragmentStart, nameFragmentEnd + 1, identCount, fragments);
          this.namePos++; // skip '<'
          TypeReference[] arguments = decodeTypeArguments(typeSignature, length, start, end); // positionned on '>' at end
          fragments.add(arguments);
          identCount = 1;
          nameStarted = false;
          // next increment will skip '>'
          break;
      }
      this.namePos++;
    }
    if (fragments == null) { // non parameterized
      /* rebuild identifiers and dimensions */
      if (identCount == 1) { // simple type reference
        if (dim == 0) {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          int nameFragmentLength = nameFragmentEnd - nameFragmentStart + 1;
          char[] nameFragment = new char[nameFragmentLength];
          System.arraycopy(typeName, nameFragmentStart, nameFragment, 0, nameFragmentLength);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

    if (type instanceof ReferenceBinding) {
      char[][] name = ((ReferenceBinding) type).compoundName;
      end = (int) ref.sourcePositions[name.length - 1];
    }
  } else if (location instanceof ArrayTypeReference) {
    ArrayTypeReference arrayTypeReference = (ArrayTypeReference) location;
    if (isRecoveredName(arrayTypeReference.token)) return;
    end = arrayTypeReference.originalSourceEnd;
  }

  int start = location.sourceStart;
View Full Code Here

          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BOOLEAN.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BOOLEAN.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_BYTE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BYTE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BYTE.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_CHAR :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.CHAR.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.CHAR.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_DOUBLE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.DOUBLE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.DOUBLE.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_FLOAT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.FLOAT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.FLOAT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_INT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.INT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.INT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_LONG :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.LONG.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.LONG.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_SHORT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.SHORT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.SHORT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_VOID :
          if (!nameStarted) {
            this.namePos++;
            return new SingleTypeReference(TypeBinding.VOID.simpleName, ((long) start << 32) + end);
          }
          break;
        case Signature.C_RESOLVED :
        case Signature.C_UNRESOLVED :
        case Signature.C_TYPE_VARIABLE :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          }
          break;
        case Signature.C_STAR:
          this.namePos++;
          Wildcard result = new Wildcard(Wildcard.UNBOUND);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_EXTENDS:
          this.namePos++;
          result = new Wildcard(Wildcard.EXTENDS);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_SUPER:
          this.namePos++;
          result = new Wildcard(Wildcard.SUPER);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_ARRAY :
          dim++;
          break;
        case Signature.C_GENERIC_END :
        case Signature.C_SEMICOLON :
          nameFragmentEnd = this.namePos-1;
          this.namePos++;
          break typeLoop;
        case Signature.C_DOLLAR:
          if (this.memberTypeSeparator != Signature.C_DOLLAR)
            break;
          // $FALL-THROUGH$
        case Signature.C_DOT :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          } else if (this.namePos > nameFragmentStart) // handle name starting with a $ (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=91709)
            identCount ++;
          break;
        case Signature.C_GENERIC_START :
          nameFragmentEnd = this.namePos-1;
          // convert 1.5 specific constructs only if compliance is 1.5 or above
          if (!this.has1_5Compliance)
            break typeLoop;
          if (fragments == null) fragments = new ArrayList(2);
          addIdentifiers(typeSignature, nameFragmentStart, nameFragmentEnd + 1, identCount, fragments);
          this.namePos++; // skip '<'
          TypeReference[] arguments = decodeTypeArguments(typeSignature, length, start, end); // positionned on '>' at end
          fragments.add(arguments);
          identCount = 1;
          nameStarted = false;
          // next increment will skip '>'
          break;
      }
      this.namePos++;
    }
    if (fragments == null) { // non parameterized
      /* rebuild identifiers and dimensions */
      if (identCount == 1) { // simple type reference
        if (dim == 0) {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          int nameFragmentLength = nameFragmentEnd - nameFragmentStart + 1;
          char[] nameFragment = new char[nameFragmentLength];
          System.arraycopy(typeName, nameFragmentStart, nameFragment, 0, nameFragmentLength);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

    if (type instanceof ReferenceBinding) {
      char[][] name = ((ReferenceBinding) type).compoundName;
      end = (int) ref.sourcePositions[name.length - 1];
    }
  } else if (location instanceof ArrayTypeReference) {
    ArrayTypeReference arrayTypeReference = (ArrayTypeReference) location;
    if (isRecoveredName(arrayTypeReference.token)) return;
    end = arrayTypeReference.originalSourceEnd;
  }
  this.handle(
    id,
View Full Code Here

    if (type instanceof ReferenceBinding) {
      char[][] name = ((ReferenceBinding) type).compoundName;
      end = (int) ref.sourcePositions[name.length - 1];
    }
  } else if (location instanceof ArrayTypeReference) {
    ArrayTypeReference arrayTypeReference = (ArrayTypeReference) location;
    if (isRecoveredName(arrayTypeReference.token)) return;
    end = arrayTypeReference.originalSourceEnd;
  }
  this.handle(
    id,
View Full Code Here

          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BOOLEAN.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BOOLEAN.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_BYTE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.BYTE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.BYTE.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_CHAR :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.CHAR.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.CHAR.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_DOUBLE :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.DOUBLE.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.DOUBLE.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_FLOAT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.FLOAT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.FLOAT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_INT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.INT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.INT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_LONG :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.LONG.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.LONG.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_SHORT :
          if (!nameStarted) {
            this.namePos++;
            if (dim == 0)
              return new SingleTypeReference(TypeBinding.SHORT.simpleName, ((long) start << 32) + end);
            else
              return new ArrayTypeReference(TypeBinding.SHORT.simpleName, dim, ((long) start << 32) + end);
          }
          break;
        case Signature.C_VOID :
          if (!nameStarted) {
            this.namePos++;
            return new SingleTypeReference(TypeBinding.VOID.simpleName, ((long) start << 32) + end);
          }
          break;
        case Signature.C_RESOLVED :
        case Signature.C_UNRESOLVED :
        case Signature.C_TYPE_VARIABLE :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          }
          break;
        case Signature.C_STAR:
          this.namePos++;
          Wildcard result = new Wildcard(Wildcard.UNBOUND);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_EXTENDS:
          this.namePos++;
          result = new Wildcard(Wildcard.EXTENDS);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_SUPER:
          this.namePos++;
          result = new Wildcard(Wildcard.SUPER);
          result.bound = decodeType(typeSignature, length, start, end);
          result.sourceStart = start;
          result.sourceEnd = end;
          return result;
        case Signature.C_ARRAY :
          dim++;
          break;
        case Signature.C_GENERIC_END :
        case Signature.C_SEMICOLON :
          nameFragmentEnd = this.namePos-1;
          this.namePos++;
          break typeLoop;
        case Signature.C_DOLLAR:
          if (this.memberTypeSeparator != Signature.C_DOLLAR)
            break;
          // $FALL-THROUGH$
        case Signature.C_DOT :
          if (!nameStarted) {
            nameFragmentStart = this.namePos+1;
            nameStarted = true;
          } else if (this.namePos > nameFragmentStart) // handle name starting with a $ (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=91709)
            identCount ++;
          break;
        case Signature.C_GENERIC_START :
          nameFragmentEnd = this.namePos-1;
          // convert 1.5 specific constructs only if compliance is 1.5 or above
          if (!this.has1_5Compliance)
            break typeLoop;
          if (fragments == null) fragments = new ArrayList(2);
          addIdentifiers(typeSignature, nameFragmentStart, nameFragmentEnd + 1, identCount, fragments);
          this.namePos++; // skip '<'
          TypeReference[] arguments = decodeTypeArguments(typeSignature, length, start, end); // positionned on '>' at end
          fragments.add(arguments);
          identCount = 1;
          nameStarted = false;
          // next increment will skip '>'
          break;
      }
      this.namePos++;
    }
    if (fragments == null) { // non parameterized
      /* rebuild identifiers and dimensions */
      if (identCount == 1) { // simple type reference
        if (dim == 0) {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          char[] nameFragment = new char[nameFragmentEnd - nameFragmentStart + 1];
          typeSignature.getChars(nameFragmentStart, nameFragmentEnd +1, nameFragment, 0);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

          return new SingleTypeReference(nameFragment, ((long) start << 32) + end);
        } else {
          int nameFragmentLength = nameFragmentEnd - nameFragmentStart + 1;
          char[] nameFragment = new char[nameFragmentLength];
          System.arraycopy(typeName, nameFragmentStart, nameFragment, 0, nameFragmentLength);
          return new ArrayTypeReference(nameFragment, dim, ((long) start << 32) + end);
        }
      } else { // qualified type reference
        long[] positions = new long[identCount];
        long pos = ((long) start << 32) + end;
        for (int i = 0; i < identCount; i++) {
View Full Code Here

TOP

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

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.