@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(); }
@Override public void visitTypeIdent(JCPrimitiveTypeTree node) { String primitiveType = JcTreeBuilder.PRIMITIVES.inverse().get(node.typetag); if (primitiveType == null) throw new IllegalArgumentException("Uknown primitive type tag: " + node.typetag); TypeReferencePart part = setPos(node, new TypeReferencePart().astIdentifier(setPos(node, new Identifier().astValue(primitiveType)))); set(node, new TypeReference().astParts().addToEnd(part)); }
@Override public void visitQualifiedNameReference(QualifiedNameReference node) { if (hasFlag(FlagKey.NAMEREFERENCE_IS_TYPE)) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); fillTypeReferenceParts(node.tokens, node.sourcePositions, ref.astParts()); set(node, setPosition(node, ref)); return; } lombok.ast.Expression select = toSelect(node.tokens, node.sourcePositions); set(node, setPosition(node, select)); }
@Override public void visitArrayQualifiedTypeReference(ArrayQualifiedTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); fillTypeReferenceParts(node.tokens, node.sourcePositions, ref.astParts()); ref.astArrayDimensions(node.dimensions()); set(node, setPosition(node, ref)); }
@NonNull public TypeReference getNode() { TypeReference typeReference = new TypeReference(); StrictListAccessor<TypeReferencePart, TypeReference> parts = typeReference.astParts(); for (String part : Splitter.on('.').split(getName())) { Identifier identifier = Identifier.of(part); parts.addToEnd(new TypeReferencePart().astIdentifier(identifier)); } return typeReference; }
@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); }
@Override public void visitArrayQualifiedTypeReference(ArrayQualifiedTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); fillTypeReferenceParts(node.tokens, node.sourcePositions, ref.astParts()); ref.astArrayDimensions(node.dimensions()); set(node, setPosition(node, ref)); }
private static boolean isPrimitive(TypeReference ref, String primitiveName) { if (ref.astArrayDimensions() > 0 || ref.rawParts().size() != 1) return false; try { String name = ref.astParts().first().astIdentifier().astValue(); return name.equals(primitiveName); } catch (NullPointerException e) { return false; } }
private static boolean isPrimitive(TypeReference ref, String primitiveName) { if (ref.astArrayDimensions() > 0 || ref.rawParts().size() != 1) return false; try { String name = ref.astParts().first().astIdentifier().astValue(); return name.equals(primitiveName); } catch (NullPointerException e) { return false; } }
private static boolean isPrimitive(TypeReference ref, String primitiveName) { if (ref.astArrayDimensions() > 0 || ref.rawParts().size() != 1) return false; try { String name = ref.astParts().first().astIdentifier().astValue(); return name.equals(primitiveName); } catch (NullPointerException e) { return false; } }
@CopyMethod(isStatic = true) static TypeReference fromName(String name) { TypeReference ref = new TypeReference(); for (String part : name.split("\\.")) { ref.astParts().addToEnd(new TypeReferencePart().astIdentifier(Identifier.of(part))); } return ref; }
@Override public void visitSingleNameReference(SingleNameReference node) { if (hasFlag(FlagKey.NAMEREFERENCE_IS_TYPE)) { set(node, setPosition(node, new lombok.ast.TypeReference().astParts().addToEnd(createTypeReferencePart(node.token, toLong(node.sourceStart, node.sourceEnd))))); return; } set(node, setPosition(node, new lombok.ast.VariableReference().astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)))); }
@Override public void visitParameterizedQualifiedTypeReference(ParameterizedQualifiedTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astArrayDimensions(node.dimensions()); fillTypeReferenceParts(node.tokens, node.sourcePositions, node.typeArguments, ref.astParts()); set(node, setPosition(node, ref)); }
@Override public void visitArrayTypeReference(ArrayTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astArrayDimensions(((node.bits & ASTNode.IsVarArgs) == 0) ? node.dimensions : node.dimensions - 1); lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); ref.astParts().addToEnd(part); set(node, setPosition(node, ref)); }
@Override public void visitParameterizedQualifiedTypeReference(ParameterizedQualifiedTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astArrayDimensions(node.dimensions()); fillTypeReferenceParts(node.tokens, node.sourcePositions, node.typeArguments, ref.astParts()); set(node, setPosition(node, ref)); }
@Override public void visitArrayTypeReference(ArrayTypeReference node) { lombok.ast.TypeReference ref = new lombok.ast.TypeReference(); ref.astArrayDimensions(((node.bits & ASTNode.IsVarArgs) == 0) ? node.dimensions : node.dimensions - 1); lombok.ast.TypeReferencePart part = new lombok.ast.TypeReferencePart(); part.astIdentifier(toIdentifier(node.token, node.sourceStart, node.sourceEnd)); ref.astParts().addToEnd(part); set(node, setPosition(node, ref)); }
@CopyMethod static StrictListAccessor<TypeReference, TypeReference> getTypeArguments(TypeReference self) { try { return self.astParts().last().typeArguments.wrap(self).asStrict(); } catch (Exception e) { return ListAccessor.emptyStrict("typeArguments", self); } } }
@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)); }
@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)); }
@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)); }