我正在使用AST的Eclipse代碼格式化插件。AST日食,試圖創建一個InfixExpression
我想使用此代碼來創建一個InfixExpression:
public static InfixExpression makeInfixExpression(final AST t, final ASTRewrite r, final InfixExpression.Operator o,
final Expression left, final Expression right) {
final InfixExpression $ = t.newInfixExpression();
$.setOperator(o);
$.setRightOperand(right.getParent() == null ? right : (Expression) r.createMoveTarget(right));
$.setLeftOperand(left.getParent() == null ? left : (Expression) r.createMoveTarget(left));
return $;
}
用這個命令:
makeInfixExpression(t, r, InfixExpression.Operator.PLUS, asgnThen.getRightHandSide(), otherAsgn)
聲明:
final Assignment asgnThen, final Expression otherAsgn;
但我從找回的InfixExpression根據我發送的參數,這個函數是0 + 0而不是3 + 4。 經過一些調試後,我看到它在createMoveTarget部分中混亂了,但是如果我用正確的方向替換它,並且它會拋出一個異常.... 我還注意到如果我使用t.newNumberLiteral創建2個新的lietrals並且定義爲什麼asgnThen.getRightHandSide和其他Asgn是該函數返回一個適當的InfixExpression的價值,但問題是它不一定是一個NumberLiteral,所以我不能指望。 當插件讓我看到預覽顯示「3 +」和沒有0 + 0 ....奇怪的東西正在進行。
有什麼建議嗎?
謝謝!