Search in sources :

Example 1 with TypeReference

use of org.objectweb.asm.TypeReference in project groovy by apache.

the class AsmClassGenerator method visitRecordComponents.

private void visitRecordComponents(final ClassNode classNode) {
    List<RecordComponentNode> recordComponentNodeList = classNode.getRecordComponents();
    if (null == recordComponentNodeList)
        return;
    for (RecordComponentNode recordComponentNode : recordComponentNodeList) {
        final ClassNode type = recordComponentNode.getType();
        RecordComponentVisitor rcv = classVisitor.visitRecordComponent(recordComponentNode.getName(), BytecodeHelper.getTypeDescription(type), BytecodeHelper.getTypeGenericsSignature(type));
        visitAnnotations(recordComponentNode, rcv);
        // the int encoded value of the type reference is ALWAYS `318767104`
        // TODO Get the magic number `318767104` via `TypeReference.newXXX()`
        TypeReference typeRef = new TypeReference(318767104);
        visitTypeAnnotations(recordComponentNode.getType(), rcv, typeRef, "", true);
        rcv.visitEnd();
    }
}
Also used : InterfaceHelperClassNode(org.codehaus.groovy.ast.InterfaceHelperClassNode) ClassNode(org.codehaus.groovy.ast.ClassNode) InnerClassNode(org.codehaus.groovy.ast.InnerClassNode) RecordComponentNode(org.codehaus.groovy.ast.RecordComponentNode) RecordComponentVisitor(org.objectweb.asm.RecordComponentVisitor) TypeReference.newTypeReference(org.objectweb.asm.TypeReference.newTypeReference) TypeReference(org.objectweb.asm.TypeReference) TypeReference.newSuperTypeReference(org.objectweb.asm.TypeReference.newSuperTypeReference)

Aggregations

ClassNode (org.codehaus.groovy.ast.ClassNode)1 InnerClassNode (org.codehaus.groovy.ast.InnerClassNode)1 InterfaceHelperClassNode (org.codehaus.groovy.ast.InterfaceHelperClassNode)1 RecordComponentNode (org.codehaus.groovy.ast.RecordComponentNode)1 RecordComponentVisitor (org.objectweb.asm.RecordComponentVisitor)1 TypeReference (org.objectweb.asm.TypeReference)1 TypeReference.newSuperTypeReference (org.objectweb.asm.TypeReference.newSuperTypeReference)1 TypeReference.newTypeReference (org.objectweb.asm.TypeReference.newTypeReference)1