Java源码示例:org.codehaus.groovy.ast.expr.GStringExpression

示例1
protected static void setPropertySetterDispatcher(BlockStatement block, Expression thiz, Parameter[] parameters) {
    List<ConstantExpression> gStringStrings = new ArrayList<ConstantExpression>();
    gStringStrings.add(new ConstantExpression(""));
    gStringStrings.add(new ConstantExpression(""));
    List<Expression> gStringValues = new ArrayList<Expression>();
    gStringValues.add(new VariableExpression(parameters[0]));
    block.addStatement(
            new ExpressionStatement(
                    new BinaryExpression(
                            new PropertyExpression(
                                    thiz,
                                    new GStringExpression("$name", gStringStrings, gStringValues)
                            ),
                            Token.newSymbol(Types.ASSIGN, -1, -1),
                            new VariableExpression(parameters[1])
                    )
            )
    );
}
 
示例2
protected static void setMethodDispatcherCode(BlockStatement block, Expression thiz, Parameter[] parameters) {
    List<ConstantExpression> gStringStrings = new ArrayList<ConstantExpression>();
    gStringStrings.add(new ConstantExpression(""));
    gStringStrings.add(new ConstantExpression(""));
    List<Expression> gStringValues = new ArrayList<Expression>();
    gStringValues.add(new VariableExpression(parameters[0]));
    block.addStatement(
            new ReturnStatement(
                    new MethodCallExpression(
                            thiz,
                            new GStringExpression("$name", gStringStrings, gStringValues),
                            new ArgumentListExpression(
                                    new SpreadExpression(new VariableExpression(parameters[1]))
                            )
                    )
            )
    );
}
 
示例3
public void visitGStringExpression(GStringExpression node) {
	pushASTNode(node);
	try {
		super.visitGStringExpression(node);
	} finally {
		popASTNode();
	}
}
 
示例4
protected static void setPropertyGetterDispatcher(BlockStatement block, Expression thiz, Parameter[] parameters) {
    List<ConstantExpression> gStringStrings = new ArrayList<ConstantExpression>();
    gStringStrings.add(new ConstantExpression(""));
    gStringStrings.add(new ConstantExpression(""));
    List<Expression> gStringValues = new ArrayList<Expression>();
    gStringValues.add(new VariableExpression(parameters[0]));
    block.addStatement(
            new ReturnStatement(
                    new PropertyExpression(
                            thiz,
                            new GStringExpression("$name", gStringStrings, gStringValues)
                    )
            )
    );
}
 
示例5
@Override
public void visitGStringExpression(final GStringExpression expression) {
    MethodVisitor mv = controller.getMethodVisitor();

    mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl");
    mv.visitInsn(DUP);

    int size = expression.getValues().size();
    BytecodeHelper.pushConstant(mv, size);
    mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");

    for (int i = 0; i < size; i += 1) {
        mv.visitInsn(DUP);
        BytecodeHelper.pushConstant(mv, i);
        expression.getValue(i).visit(this);
        controller.getOperandStack().box();
        mv.visitInsn(AASTORE);
    }
    controller.getOperandStack().remove(size);

    List<ConstantExpression> strings = expression.getStrings();
    size = strings.size();
    BytecodeHelper.pushConstant(mv, size);
    mv.visitTypeInsn(ANEWARRAY, "java/lang/String");

    for (int i = 0; i < size; i += 1) {
        mv.visitInsn(DUP);
        BytecodeHelper.pushConstant(mv, i);
        controller.getOperandStack().pushConstant(strings.get(i));
        controller.getOperandStack().box();
        mv.visitInsn(AASTORE);
    }
    controller.getOperandStack().remove(size);

    mv.visitMethodInsn(INVOKESPECIAL, "org/codehaus/groovy/runtime/GStringImpl", "<init>", "([Ljava/lang/Object;[Ljava/lang/String;)V", false);
    controller.getOperandStack().push(ClassHelper.GSTRING_TYPE);
}
 
示例6
@Override
public void visitGStringExpression(GStringExpression node) {
    if (isInside(node, line, column)) {
        super.visitGStringExpression(node);
    }
}
 
示例7
@Override
public void visitGStringExpression(final GStringExpression expression) {
    super.visitGStringExpression(expression);
    tryFind(GStringExpression.class, expression);
}
 
示例8
@Override
public void visitGStringExpression(final GStringExpression expression) {
    pushContext(expression);
    super.visitGStringExpression(expression);
    popContext();
}
 
示例9
@Override
public void visitGStringExpression(final GStringExpression expression) {
    assertExpressionAuthorized(expression);
    visitListOfExpressions(expression.getStrings());
    visitListOfExpressions(expression.getValues());
}
 
示例10
@Override
public void visitGStringExpression(final GStringExpression expression) {
    super.visitGStringExpression(expression);
    trn.visitGStringExpression(expression);
}
 
示例11
@Override
public void visitGStringExpression(GStringExpression expression) {
    visitListOfExpressions(expression.getStrings());
    visitListOfExpressions(expression.getValues());
}
 
示例12
public void visitGStringExpression(GStringExpression expression) {
    super.visitGStringExpression(expression);
    for (ConstantExpression ce : expression.getStrings()) {
        checkStringExceedingMaximumLength(ce);
    }
}
 
示例13
void visitGStringExpression(GStringExpression expression);