com.redhat.ceylon.compiler.java.codegen.InvocationAnnotationTerm Maven / Gradle / Ivy
package com.redhat.ceylon.compiler.java.codegen;
import com.redhat.ceylon.langtools.tools.javac.tree.JCTree.JCAnnotation;
import com.redhat.ceylon.langtools.tools.javac.tree.JCTree.JCExpression;
import com.redhat.ceylon.langtools.tools.javac.util.List;
import com.redhat.ceylon.langtools.tools.javac.util.ListBuffer;
public class InvocationAnnotationTerm extends AnnotationTerm {
AnnotationInvocation instantiation;
public AnnotationInvocation getInstantiation() {
return instantiation;
}
public void setInstantiation(AnnotationInvocation instantiation) {
this.instantiation = instantiation;
}
@Override
public String toString() {
return String.valueOf(instantiation);
}
@Override
public int encode(AbstractTransformer gen, ListBuffer instantiations) {
instantiations.add(instantiation.encode(gen, instantiations));
return -instantiations.size();
}
@Override
public JCExpression makeAnnotationArgumentValue(
ExpressionTransformer exprGen, AnnotationInvocation ai,
List fieldPath) {
return instantiation.makeAnnotation(exprGen, ai, fieldPath);
}
@Override
public List makeDpmAnnotations(ExpressionTransformer exprGen) {
List statics = getInstantiation().makeExprAnnotations(exprGen, null, List.nil());
if (statics == null) {
statics = List.nil();
}
return statics.prepend(exprGen.classGen().makeAtAnnotationInstantiation(getInstantiation()));
}
@Override
public List makeExprs(ExpressionTransformer exprGen,
List value) {
// TODO Auto-generated method stub
return value;
}
@Override
public com.redhat.ceylon.langtools.tools.javac.util.List makeExprAnnotations(
ExpressionTransformer exprGen, AnnotationInvocation toplevel,
com.redhat.ceylon.langtools.tools.javac.util.List fieldPath) {
// Recurse to our instantiation, since it may have constants
return getInstantiation().makeExprAnnotations(exprGen, toplevel, fieldPath);
}
}