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);