package me.tomassetti.turin.parser.ast.annotations; import com.google.common.collect.ImmutableList; import me.tomassetti.jvm.JvmNameUtils; import me.tomassetti.turin.definitions.TypeDefinition; import me.tomassetti.turin.parser.analysis.exceptions.UnsolvedTypeException; import me.tomassetti.turin.resolvers.SymbolResolver; import me.tomassetti.turin.parser.ast.Node; import java.util.Optional; public class AnnotationUsage extends Node { private String name; public AnnotationUsage(String name) { this.name = name; } public String getName() { return name; } @Override public String toString() { return "AnnotationUsage{" + "name='" + name + '\'' + '}'; } @Override public Iterable<Node> getChildren() { return ImmutableList.of(); } public String getDescriptor(SymbolResolver resolver) { Optional<TypeDefinition> type = resolver.findTypeDefinitionIn(name, this, resolver); if (!type.isPresent()) { throw new UnsolvedTypeException(name, this); } String qName = type.get().getQualifiedName(); return "L" + JvmNameUtils.canonicalToInternal(qName) + ";"; } }