private void fillTypeReferenceParts(char[][] tokens, long[] positions, StrictListAccessor<lombok.ast.TypeReferencePart, ?> list) { if (tokens == null) return; if (tokens.length != positions.length) throw new IllegalStateException("bug"); for (int i = 0; i < tokens.length; i++) { lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(tokens[i], positions[i])); list.addToEnd(part); } }
@CopyMethod static String getTypeName(TypeReference self) { StringBuilder out = new StringBuilder(); for (TypeReferencePart p : self.astParts()) { if (out.length() > 0) out.append("."); out.append(p.getTypeName()); } for (int i = 0; i < self.astArrayDimensions(); i++) out.append("[]"); return out.toString(); }
@CopyMethod static String getTypeName(TypeReferencePart self) { String name = self.astIdentifier().astValue(); if (self.astTypeArguments().isEmpty()) return name; for (TypeReference t : self.astTypeArguments()) { if (!first) out.append(", "); first = false;
private lombok.ast.TypeReferencePart createTypeReferencePart(char[] token, long pos, TypeReference[] typeReferences) { lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(token, pos)); if (typeReferences != null) fillList(typeReferences, part.rawTypeArguments()); part.setPosition(toPosition(pos)); return part; }
private lombok.ast.TypeReferencePart createSingleTypeReferencePart(SingleTypeReference node) { lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); part.setPosition(part.astIdentifier().getPosition()); return part; }
@Override public void visitParameterizedSingleTypeReference(ParameterizedSingleTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); ref.astParts().addToEnd(part); fillList(node.typeArguments, part.rawTypeArguments()); ref.astArrayDimensions(node.dimensions()); set(node, setPosition(node, ref)); }
private static long[] partsToPosArray(RawListAccessor<?, ?> parts) { long[] pos = new long[parts.size()]; int idx = 0; for (lombok.ast.Node n : parts) { if (n instanceof lombok.ast.TypeReferencePart) { pos[idx++] = pos(((lombok.ast.TypeReferencePart) n).astIdentifier()); } else { pos[idx++] = pos(n); } } return pos; }
@Override public boolean visitTypeReferencePart(TypeReferencePart node) { formatter.buildInline(node); visit(node.astIdentifier()); visitAll(node.rawTypeArguments(), ", ", "<", ">"); formatter.closeInline(); return true; }
@Override public boolean visitTypeReferencePart(TypeReferencePart node) { JCIdent ident = (JCIdent) toTree(node.astIdentifier()); List<JCExpression> typeArguments = toList(JCExpression.class, node.astTypeArguments()); if (typeArguments.isEmpty()) { return set(node, ident); } else { JCTypeApply typeApply = treeMaker.TypeApply(ident, typeArguments); Position jcOpenBracketPos = getConversionPositionInfo(node, "<"); if (jcOpenBracketPos == null) { setPos(posOfStructure(node, "<", true), node.getPosition().getEnd(), typeApply); } else { setPos(jcOpenBracketPos.getStart(), node.getPosition().getEnd(), typeApply); } return set(node, typeApply); } }
int end = node.getPosition().getEnd(); if (node.astArrayDimensions() > 0) { end = node.astParts().last().getPosition().getEnd(); Identifier identifier = node.astParts().first().astIdentifier(); int typeTag = primitiveTypeTag(identifier.astValue()); if (typeTag > 0) return setPos(node.getPosition().getStart(), end, treeMaker.TypeIdent(typeTag)); setPos(posOfStructure(part, ".", true), part.getPosition().getEnd(), current); } else if (expr instanceof JCTypeApply) { JCTypeApply apply = (JCTypeApply)expr; apply.clazz = treeMaker.Select(current, ((JCIdent)apply.clazz).name); setPos(posOfStructure(part, ".", true), part.astIdentifier().getPosition().getEnd(), apply.clazz); current = apply; } else {
@Override public void visitSingleTypeReference(SingleTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astParts().addToEnd(createSingleTypeReferencePart(node)); setPosition(node, ref); set(node, ref); }
@Override public void visitTypeApply(JCTypeApply node) { TypeReference ref = (TypeReference) toTree(node.clazz, FlagKey.TYPE_REFERENCE); TypeReferencePart last = ref.astParts().last(); fillList(node.arguments, last.rawTypeArguments(), FlagKey.TYPE_REFERENCE); setPos(node, ref); setConversionPositionInfo(last, "<", getPosition(node)); set(node, ref); }
private lombok.ast.TypeReferencePart createTypeReferencePart(char[] token, long pos, TypeReference[] typeReferences) { lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(token, pos)); if (typeReferences != null) fillList(typeReferences, part.rawTypeArguments()); part.setPosition(toPosition(pos)); return part; }
private lombok.ast.TypeReferencePart createSingleTypeReferencePart(SingleTypeReference node) { lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); part.setPosition(part.astIdentifier().getPosition()); return part; }
@Override public void visitParameterizedSingleTypeReference(ParameterizedSingleTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); ref.astParts().addToEnd(part); fillList(node.typeArguments, part.rawTypeArguments()); ref.astArrayDimensions(node.dimensions()); set(node, setPosition(node, ref)); }
private static long[] partsToPosArray(RawListAccessor<?, ?> parts) { long[] pos = new long[parts.size()]; int idx = 0; for (lombok.ast.Node n : parts) { if (n instanceof lombok.ast.TypeReferencePart) { pos[idx++] = pos(((lombok.ast.TypeReferencePart) n).astIdentifier()); } else { pos[idx++] = pos(n); } } return pos; }
@Override public boolean visitTypeReferencePart(TypeReferencePart node) { formatter.buildInline(node); visit(node.astIdentifier()); visitAll(node.rawTypeArguments(), ", ", "<", ">"); formatter.closeInline(); return true; }
@Override public boolean visitTypeReferencePart(TypeReferencePart node) { JCIdent ident = (JCIdent) toTree(node.astIdentifier()); List<JCExpression> typeArguments = toList(JCExpression.class, node.astTypeArguments()); if (typeArguments.isEmpty()) { return set(node, ident); } else { JCTypeApply typeApply = treeMaker.TypeApply(ident, typeArguments); Position jcOpenBracketPos = getConversionPositionInfo(node, "<"); if (jcOpenBracketPos == null) { setPos(posOfStructure(node, "<", true), node.getPosition().getEnd(), typeApply); } else { setPos(jcOpenBracketPos.getStart(), node.getPosition().getEnd(), typeApply); } return set(node, typeApply); } }
int end = node.getPosition().getEnd(); if (node.astArrayDimensions() > 0) { end = node.astParts().last().getPosition().getEnd(); Identifier identifier = node.astParts().first().astIdentifier(); int typeTag = primitiveTypeTag(identifier.astValue()); if (typeTag > 0) return setPos(node.getPosition().getStart(), end, treeMaker.TypeIdent(typeTag)); setPos(posOfStructure(part, ".", true), part.getPosition().getEnd(), current); } else if (expr instanceof JCTypeApply) { JCTypeApply apply = (JCTypeApply)expr; apply.clazz = treeMaker.Select(current, ((JCIdent)apply.clazz).name); setPos(posOfStructure(part, ".", true), part.astIdentifier().getPosition().getEnd(), apply.clazz); current = apply; } else {
@Override public void visitSingleTypeReference(SingleTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astParts().addToEnd(createSingleTypeReferencePart(node)); setPosition(node, ref); set(node, ref); }