Search in sources :

Example 1 with ParameterAnnotationTerm

use of com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm in project ceylon-compiler by ceylon.

the class AnnotationLoader method decode.

private AnnotationTerm decode(Module moduleScope, List<Parameter> sourceParameters, AnnotationInvocation info, Parameter parameter, AnnotatedMirror dpm, List<AnnotationFieldName> path, int code) {
    AnnotationTerm result;
    if (code == Short.MIN_VALUE) {
        return findLiteralAnnotationTerm(moduleScope, path, parameter, dpm);
    } else if (code < 0) {
        InvocationAnnotationTerm invocation = new InvocationAnnotationTerm();
        result = invocation;
    } else if (code >= 0 && code < 512) {
        ParameterAnnotationTerm parameterArgument = new ParameterAnnotationTerm();
        boolean spread = false;
        if (code >= 256) {
            spread = true;
            code -= 256;
        }
        parameterArgument.setSpread(spread);
        Parameter sourceParameter = sourceParameters.get(code);
        parameterArgument.setSourceParameter(sourceParameter);
        //result.setTargetParameter(sourceParameter);
        result = parameterArgument;
    } else {
        throw new RuntimeException();
    }
    return result;
}
Also used : ParameterAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm) Parameter(com.redhat.ceylon.model.typechecker.model.Parameter) AnnotationConstructorParameter(com.redhat.ceylon.compiler.java.codegen.AnnotationConstructorParameter) InvocationAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.InvocationAnnotationTerm) ObjectLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.ObjectLiteralAnnotationTerm) CollectionLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.CollectionLiteralAnnotationTerm) DeclarationLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.DeclarationLiteralAnnotationTerm) StringLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.StringLiteralAnnotationTerm) BooleanLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.BooleanLiteralAnnotationTerm) CharacterLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.CharacterLiteralAnnotationTerm) LiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.LiteralAnnotationTerm) ParameterAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm) AnnotationTerm(com.redhat.ceylon.compiler.java.codegen.AnnotationTerm) InvocationAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.InvocationAnnotationTerm) FloatLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.FloatLiteralAnnotationTerm) IntegerLiteralAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.IntegerLiteralAnnotationTerm)

Example 2 with ParameterAnnotationTerm

use of com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm in project ceylon-compiler by ceylon.

the class AnnotationLoader method makeInterorAnnotationConstructorInvocation.

public void makeInterorAnnotationConstructorInvocation(AnnotationProxyMethod ctor, AnnotationProxyClass klass, java.util.List<Parameter> ctorParams) {
    AnnotationInvocation ai = new AnnotationInvocation();
    ai.setConstructorDeclaration(ctor);
    ai.setPrimary(klass);
    ai.setInterop(true);
    ctor.setAnnotationConstructor(ai);
    java.util.List<AnnotationArgument> annotationArgs = new ArrayList<AnnotationArgument>();
    for (Parameter ctorParam : ctorParams) {
        boolean isValue = ctorParam.getName().equals("value");
        ParameterAnnotationTerm term = new ParameterAnnotationTerm();
        AnnotationArgument argument = new AnnotationArgument();
        argument.setTerm(term);
        argument.setParameter(klass.getParameter(ctorParam.getName()));
        term.setSourceParameter(ctorParam);
        AnnotationConstructorParameter acp = new AnnotationConstructorParameter();
        acp.setParameter(ctorParam);
        if (isValue)
            ai.getConstructorParameters().add(0, acp);
        else
            ai.getConstructorParameters().add(acp);
        annotationArgs.add(argument);
    }
    ai.getAnnotationArguments().addAll(annotationArgs);
}
Also used : ParameterAnnotationTerm(com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm) AnnotationInvocation(com.redhat.ceylon.compiler.java.codegen.AnnotationInvocation) AnnotationConstructorParameter(com.redhat.ceylon.compiler.java.codegen.AnnotationConstructorParameter) ArrayList(java.util.ArrayList) Parameter(com.redhat.ceylon.model.typechecker.model.Parameter) AnnotationConstructorParameter(com.redhat.ceylon.compiler.java.codegen.AnnotationConstructorParameter) AnnotationArgument(com.redhat.ceylon.compiler.java.codegen.AnnotationArgument)

Aggregations

AnnotationConstructorParameter (com.redhat.ceylon.compiler.java.codegen.AnnotationConstructorParameter)2 ParameterAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.ParameterAnnotationTerm)2 Parameter (com.redhat.ceylon.model.typechecker.model.Parameter)2 AnnotationArgument (com.redhat.ceylon.compiler.java.codegen.AnnotationArgument)1 AnnotationInvocation (com.redhat.ceylon.compiler.java.codegen.AnnotationInvocation)1 AnnotationTerm (com.redhat.ceylon.compiler.java.codegen.AnnotationTerm)1 BooleanLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.BooleanLiteralAnnotationTerm)1 CharacterLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.CharacterLiteralAnnotationTerm)1 CollectionLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.CollectionLiteralAnnotationTerm)1 DeclarationLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.DeclarationLiteralAnnotationTerm)1 FloatLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.FloatLiteralAnnotationTerm)1 IntegerLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.IntegerLiteralAnnotationTerm)1 InvocationAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.InvocationAnnotationTerm)1 LiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.LiteralAnnotationTerm)1 ObjectLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.ObjectLiteralAnnotationTerm)1 StringLiteralAnnotationTerm (com.redhat.ceylon.compiler.java.codegen.StringLiteralAnnotationTerm)1 ArrayList (java.util.ArrayList)1