private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { ArrayType arrayType = this.ast.newArrayType(elementType, dimensions); if (length > 0) arrayType.setSourceRange(sourceStart, length); if (this.ast.apiLevel() < AST.JLS8) { if (annotationsOnDimensions != null) { arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED); } ArrayType subarrayType = arrayType; int index = dimensions - 1; int arrayEnd = retrieveProperRightBracketPosition(dimensions, sourceStart); while (index > 0) { subarrayType = (ArrayType) componentType(subarrayType); int end = retrieveProperRightBracketPosition(index, sourceStart); subarrayType.setSourceRange(sourceStart, end - sourceStart + 1); index--; } if (length < arrayEnd - sourceStart) arrayType.setSourceRange(sourceStart, arrayEnd - sourceStart + 1); return arrayType; } setTypeAnnotationsAndSourceRangeOnArray(arrayType, annotationsOnDimensions); return arrayType; }
private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { ArrayType arrayType = this.ast.newArrayType(elementType, dimensions); if (length > 0) arrayType.setSourceRange(sourceStart, length); if (this.ast.apiLevel() < AST.JLS8) { if (annotationsOnDimensions != null) { arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED); } ArrayType subarrayType = arrayType; int index = dimensions - 1; int arrayEnd = retrieveProperRightBracketPosition(dimensions, sourceStart); while (index > 0) { subarrayType = (ArrayType) componentType(subarrayType); int end = retrieveProperRightBracketPosition(index, sourceStart); subarrayType.setSourceRange(sourceStart, end - sourceStart + 1); index--; } if (length < arrayEnd - sourceStart) arrayType.setSourceRange(sourceStart, arrayEnd - sourceStart + 1); return arrayType; } setTypeAnnotationsAndSourceRangeOnArray(arrayType, annotationsOnDimensions); return arrayType; }
private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { ArrayType arrayType = this.ast.newArrayType(elementType, dimensions); if (length > 0) arrayType.setSourceRange(sourceStart, length); if (this.ast.apiLevel() < AST.JLS8_INTERNAL) { if (annotationsOnDimensions != null) { arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED); } ArrayType subarrayType = arrayType; int index = dimensions - 1; int arrayEnd = retrieveProperRightBracketPosition(dimensions, sourceStart); while (index > 0) { subarrayType = (ArrayType) componentType(subarrayType); int end = retrieveProperRightBracketPosition(index, sourceStart); subarrayType.setSourceRange(sourceStart, end - sourceStart + 1); index--; } if (length < arrayEnd - sourceStart) arrayType.setSourceRange(sourceStart, arrayEnd - sourceStart + 1); return arrayType; } setTypeAnnotationsAndSourceRangeOnArray(arrayType, annotationsOnDimensions); return arrayType; }
private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { ArrayType arrayType = this.ast.newArrayType(elementType, dimensions); if (length > 0) arrayType.setSourceRange(sourceStart, length); if (this.ast.apiLevel() < AST.JLS8_INTERNAL) { if (annotationsOnDimensions != null) { arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED); } ArrayType subarrayType = arrayType; int index = dimensions - 1; int arrayEnd = retrieveProperRightBracketPosition(dimensions, sourceStart); while (index > 0) { subarrayType = (ArrayType) componentType(subarrayType); int end = retrieveProperRightBracketPosition(index, sourceStart); subarrayType.setSourceRange(sourceStart, end - sourceStart + 1); index--; } if (length < arrayEnd - sourceStart) arrayType.setSourceRange(sourceStart, arrayEnd - sourceStart + 1); return arrayType; } setTypeAnnotationsAndSourceRangeOnArray(arrayType, annotationsOnDimensions); return arrayType; }
private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { ArrayType arrayType = this.ast.newArrayType(elementType, dimensions); if (length > 0) arrayType.setSourceRange(sourceStart, length); if (this.ast.apiLevel() < AST.JLS8) { if (annotationsOnDimensions != null) { arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED); } ArrayType subarrayType = arrayType; int index = dimensions - 1; int arrayEnd = retrieveProperRightBracketPosition(dimensions, sourceStart); while (index > 0) { subarrayType = (ArrayType) componentType(subarrayType); int end = retrieveProperRightBracketPosition(index, sourceStart); subarrayType.setSourceRange(sourceStart, end - sourceStart + 1); index--; } if (length < arrayEnd - sourceStart) arrayType.setSourceRange(sourceStart, arrayEnd - sourceStart + 1); return arrayType; } setTypeAnnotationsAndSourceRangeOnArray(arrayType, annotationsOnDimensions); return arrayType; }
private void setTypeAnnotationsAndSourceRangeOnArray(ArrayType arrayType, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { List dimensions = arrayType.dimensions(); Type elementType = arrayType.getElementType(); int start = elementType.getStartPosition(); int endElement = start + elementType.getLength(); int end = retrieveProperRightBracketPosition(dimensions.size(), endElement); arrayType.setSourceRange(start, end - start + 1); start = endElement; for (int i = 0; i < dimensions.size(); i++) { Dimension currentDimension = (Dimension) dimensions.get(i); setTypeAnnotationsOnDimension(currentDimension, annotationsOnDimensions, i); retrieveDimensionAndSetPositions(start, end, currentDimension); start = currentDimension.getStartPosition() + currentDimension.getLength(); } }
private void setTypeAnnotationsAndSourceRangeOnArray(ArrayType arrayType, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { List dimensions = arrayType.dimensions(); Type elementType = arrayType.getElementType(); int start = elementType.getStartPosition(); int endElement = start + elementType.getLength(); int end = retrieveProperRightBracketPosition(dimensions.size(), endElement); arrayType.setSourceRange(start, end - start + 1); start = endElement; for (int i = 0; i < dimensions.size(); i++) { Dimension currentDimension = (Dimension) dimensions.get(i); setTypeAnnotationsOnDimension(currentDimension, annotationsOnDimensions, i); retrieveDimensionAndSetPositions(start, end, currentDimension); start = currentDimension.getStartPosition() + currentDimension.getLength(); } }
/** extracts the subArrayType for a given declaration for AST levels less * @param arrayType parent type * @param remainingDimensions * @param dimensionsToRemove * @return an ArrayType */ private ArrayType extractSubArrayType(ArrayType arrayType, int remainingDimensions, int dimensionsToRemove) { ArrayType subArrayType = arrayType; int start = subArrayType.getStartPosition(); if (this.ast.apiLevel() < AST.JLS8_INTERNAL) { while (dimensionsToRemove > 0 ) { subArrayType = (ArrayType) componentType(subArrayType); dimensionsToRemove--; } updateInnerPositions(subArrayType, remainingDimensions); } else { List dimensions = subArrayType.dimensions(); while (dimensionsToRemove > 0 ) { dimensions.remove(dimensions.size() - 1); dimensionsToRemove--; } } int end = retrieveProperRightBracketPosition(remainingDimensions, start); subArrayType.setSourceRange(start, end - start + 1); // cut the child loose from its parent (without creating garbage) subArrayType.setParent(null, null); return subArrayType; }
private void setTypeAnnotationsAndSourceRangeOnArray(ArrayType arrayType, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { List dimensions = arrayType.dimensions(); Type elementType = arrayType.getElementType(); // Object[] a // ^ int start = elementType.getStartPosition(); // Object[] a // ^ int startArray = start + elementType.getLength(); // Object[] a // ^ int end = retrieveProperRightBracketPosition(dimensions.size(), startArray); if (end == -1) { end = startArray - 1; } arrayType.setSourceRange(start, end - start + 1); start = startArray; for (int i = 0; i < dimensions.size(); i++) { Dimension currentDimension = (Dimension) dimensions.get(i); setTypeAnnotationsOnDimension(currentDimension, annotationsOnDimensions, i); retrieveDimensionAndSetPositions(start, end, currentDimension); start = currentDimension.getStartPosition() + currentDimension.getLength(); } }
private void setTypeAnnotationsAndSourceRangeOnArray(ArrayType arrayType, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { List dimensions = arrayType.dimensions(); Type elementType = arrayType.getElementType(); // Object[] a // ^ int start = elementType.getStartPosition(); // Object[] a // ^ int startArray = start + elementType.getLength(); // Object[] a // ^ int end = retrieveProperRightBracketPosition(dimensions.size(), startArray); if (end == -1) { end = startArray - 1; } arrayType.setSourceRange(start, end - start + 1); start = startArray; for (int i = 0; i < dimensions.size(); i++) { Dimension currentDimension = (Dimension) dimensions.get(i); setTypeAnnotationsOnDimension(currentDimension, annotationsOnDimensions, i); retrieveDimensionAndSetPositions(start, end, currentDimension); start = currentDimension.getStartPosition() + currentDimension.getLength(); } }
ASTNode clone0(AST target) { ArrayType result = new ArrayType(target); result.setSourceRange(getStartPosition(), getLength()); result.setComponentType((Type) getComponentType().clone(target)); return result; }
private void setTypeAnnotationsAndSourceRangeOnArray(ArrayType arrayType, org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) { List dimensions = arrayType.dimensions(); Type elementType = arrayType.getElementType(); // Object[] a // ^ int start = elementType.getStartPosition(); // Object[] a // ^ int startArray = start + elementType.getLength(); // Object[] a // ^ int end = retrieveProperRightBracketPosition(dimensions.size(), startArray); if (end == -1) { end = startArray - 1; } arrayType.setSourceRange(start, end - start + 1); start = startArray; for (int i = 0; i < dimensions.size(); i++) { Dimension currentDimension = (Dimension) dimensions.get(i); setTypeAnnotationsOnDimension(currentDimension, annotationsOnDimensions, i); retrieveDimensionAndSetPositions(start, end, currentDimension); start = currentDimension.getStartPosition() + currentDimension.getLength(); } }
/** extracts the subArrayType for a given declaration for AST levels less * @param arrayType parent type * @param remainingDimensions * @param dimensionsToRemove * @return an ArrayType */ private ArrayType extractSubArrayType(ArrayType arrayType, int remainingDimensions, int dimensionsToRemove) { ArrayType subArrayType = arrayType; int start = subArrayType.getStartPosition(); if (this.ast.apiLevel() < AST.JLS8_INTERNAL) { while (dimensionsToRemove > 0 ) { subArrayType = (ArrayType) componentType(subArrayType); dimensionsToRemove--; } updateInnerPositions(subArrayType, remainingDimensions); } else { List dimensions = subArrayType.dimensions(); while (dimensionsToRemove > 0 ) { dimensions.remove(dimensions.size() - 1); dimensionsToRemove--; } } int end = retrieveProperRightBracketPosition(remainingDimensions, start); subArrayType.setSourceRange(start, end - start + 1); // cut the child loose from its parent (without creating garbage) subArrayType.setParent(null, null); return subArrayType; }
/** extracts the subArrayType for a given declaration for AST levels less * @param arrayType parent type * @param remainingDimensions * @param dimensionsToRemove * @return an ArrayType */ private ArrayType extractSubArrayType(ArrayType arrayType, int remainingDimensions, int dimensionsToRemove) { ArrayType subArrayType = arrayType; int start = subArrayType.getStartPosition(); if (this.ast.apiLevel() < AST.JLS8) { while (dimensionsToRemove > 0 ) { subArrayType = (ArrayType) componentType(subArrayType); dimensionsToRemove--; } updateInnerPositions(subArrayType, remainingDimensions); } else { List dimensions = subArrayType.dimensions(); while (dimensionsToRemove > 0 ) { dimensions.remove(dimensions.size() - 1); dimensionsToRemove--; } } int end = retrieveProperRightBracketPosition(remainingDimensions, start); subArrayType.setSourceRange(start, end - start + 1); // cut the child loose from its parent (without creating garbage) subArrayType.setParent(null, null); return subArrayType; }
/** extracts the subArrayType for a given declaration for AST levels less * @param arrayType parent type * @param remainingDimensions * @param dimensionsToRemove * @return an ArrayType */ private ArrayType extractSubArrayType(ArrayType arrayType, int remainingDimensions, int dimensionsToRemove) { ArrayType subArrayType = arrayType; int start = subArrayType.getStartPosition(); if (this.ast.apiLevel() < AST.JLS8) { while (dimensionsToRemove > 0 ) { subArrayType = (ArrayType) componentType(subArrayType); dimensionsToRemove--; } updateInnerPositions(subArrayType, remainingDimensions); } else { List dimensions = subArrayType.dimensions(); while (dimensionsToRemove > 0 ) { dimensions.remove(dimensions.size() - 1); dimensionsToRemove--; } } int end = retrieveProperRightBracketPosition(remainingDimensions, start); subArrayType.setSourceRange(start, end - start + 1); // cut the child loose from its parent (without creating garbage) subArrayType.setParent(null, null); return subArrayType; }
ASTNode clone0(AST target) { ArrayType result; if (this.ast.apiLevel < AST.JLS8_INTERNAL) { result = new ArrayType(target); result.setComponentType((Type) getComponentType().clone(target)); } else { result = new ArrayType(target, 0); result.setElementType((Type) getElementType().clone(target)); result.dimensions().addAll( ASTNode.copySubtrees(target, dimensions())); } result.setSourceRange(getStartPosition(), getLength()); return result; }
ASTNode clone0(AST target) { ArrayType result; if (this.ast.apiLevel < AST.JLS8) { result = new ArrayType(target); result.setComponentType((Type) getComponentType().clone(target)); } else { result = new ArrayType(target, 0); result.setElementType((Type) getElementType().clone(target)); result.dimensions().addAll( ASTNode.copySubtrees(target, dimensions())); } result.setSourceRange(getStartPosition(), getLength()); return result; }
ASTNode clone0(AST target) { ArrayType result; if (this.ast.apiLevel < AST.JLS8) { result = new ArrayType(target); result.setComponentType((Type) getComponentType().clone(target)); } else { result = new ArrayType(target, 0); result.setElementType((Type) getElementType().clone(target)); result.dimensions().addAll( ASTNode.copySubtrees(target, dimensions())); } result.setSourceRange(getStartPosition(), getLength()); return result; }
ASTNode clone0(AST target) { ArrayType result; if (this.ast.apiLevel < AST.JLS8) { result = new ArrayType(target); result.setComponentType((Type) getComponentType().clone(target)); } else { result = new ArrayType(target, 0); result.setElementType((Type) getElementType().clone(target)); result.dimensions().addAll( ASTNode.copySubtrees(target, dimensions())); } result.setSourceRange(getStartPosition(), getLength()); return result; }
@Override ASTNode clone0(AST target) { ArrayType result; if (this.ast.apiLevel < AST.JLS8_INTERNAL) { result = new ArrayType(target); result.setComponentType((Type) getComponentType().clone(target)); } else { result = new ArrayType(target, 0); result.setElementType((Type) getElementType().clone(target)); result.dimensions().addAll( ASTNode.copySubtrees(target, dimensions())); } result.setSourceRange(getStartPosition(), getLength()); return result; }