Skip to content

Commit a0d5105

Browse files
committed
Simmering.
1 parent c435513 commit a0d5105

File tree

5 files changed

+63
-32
lines changed

5 files changed

+63
-32
lines changed

codemodel/src/main/java/com/sun/codemodel/JAssignment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
/**
4545
* Assignment statements, which are also expressions.
4646
*/
47-
public class JAssignment extends JExpressionImpl implements JStatement {
47+
public class JAssignment extends JExpressionImpl implements JExpressionStatement {
4848

4949
JAssignmentTarget lhs;
5050
JExpression rhs;

codemodel/src/main/java/com/sun/codemodel/JExpr.java

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -51,48 +51,40 @@ public abstract class JExpr {
5151
*/
5252
private JExpr() { }
5353

54-
public static JExpression assign(JAssignmentTarget lhs, JExpression rhs) {
54+
public static JExpressionStatement assign(JAssignmentTarget lhs, JExpression rhs) {
5555
return new JAssignment(lhs, rhs);
5656
}
5757

58-
public static JExpression assignPlus(JAssignmentTarget lhs, JExpression rhs) {
58+
public static JExpressionStatement assignPlus(JAssignmentTarget lhs, JExpression rhs) {
5959
return new JAssignment(lhs, rhs, "+");
6060
}
6161

62-
public static JStatement incr(final JExpression expression) {
63-
return new JStatement() {
64-
public void state(JFormatter f) {
65-
JOp.incr(expression).generate(f);
66-
f.p(';').nl();
67-
}
68-
};
62+
public static JExpressionStatement assignMinus(JAssignmentTarget lhs, JExpression rhs) {
63+
return new JAssignment(lhs, rhs, "-");
64+
}
65+
66+
public static JExpressionStatement assignTimes(JAssignmentTarget lhs, JExpression rhs) {
67+
return new JAssignment(lhs, rhs, "*");
68+
}
69+
70+
public static JExpressionStatement assignDivide(JAssignmentTarget lhs, JExpression rhs) {
71+
return new JAssignment(lhs, rhs, "/");
72+
}
73+
74+
public static JExpressionStatement incr(final JExpression expression) {
75+
return new JExpressionStatementWrapper(JOp.incr(expression));
6976
}
7077

7178
public static JStatement preincr(final JExpression expression) {
72-
return new JStatement() {
73-
public void state(JFormatter f) {
74-
JOp.preincr(expression).generate(f);
75-
f.p(';').nl();
76-
}
77-
};
79+
return new JExpressionStatementWrapper(JOp.preincr(expression));
7880
}
7981

8082
public static JStatement decr(final JExpression expression) {
81-
return new JStatement() {
82-
public void state(JFormatter f) {
83-
JOp.decr(expression).generate(f);
84-
f.p(';').nl();
85-
}
86-
};
83+
return new JExpressionStatementWrapper(JOp.decr(expression));
8784
}
8885

8986
public static JStatement predecr(final JExpression expression) {
90-
return new JStatement() {
91-
public void state(JFormatter f) {
92-
JOp.predecr(expression).generate(f);
93-
f.p(';').nl();
94-
}
95-
};
87+
return new JExpressionStatementWrapper(JOp.predecr(expression));
9688
}
9789

9890
public static JInvocation _new(JClass c) {
@@ -337,5 +329,21 @@ public void generate( JFormatter f ) {
337329
}
338330
};
339331
}
340-
}
341332

333+
static class JExpressionStatementWrapper extends JExpressionImpl implements JExpressionStatement {
334+
final JExpression expression;
335+
336+
JExpressionStatementWrapper(JExpression expression) {
337+
this.expression = expression;
338+
}
339+
340+
public void generate(JFormatter f) {
341+
expression.generate(f);
342+
}
343+
344+
public void state(JFormatter f) {
345+
expression.generate(f);
346+
f.p(';').nl();
347+
}
348+
}
349+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.sun.codemodel;
2+
3+
/**
4+
* Expressions which can stand alone as statements, such as a += b; or ++i;
5+
* @author Ben Fagin
6+
*/
7+
public interface JExpressionStatement extends JExpression, JStatement {
8+
// nothing for now
9+
}

codemodel/src/main/java/com/sun/codemodel/JFormatter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ private boolean needSpace(char c1, char c2) {
184184
switch (c2) {
185185
case '{':
186186
case '}':
187+
case '+':
188+
case '-':
187189
case '>':
188190
case '@':
189191
return true;

codemodel/src/main/java/com/sun/codemodel/JVar.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,23 @@ public void generate(JFormatter f) {
221221
}
222222

223223

224-
public JExpression assign(JExpression rhs) {
224+
public JExpressionStatement assign(JExpression rhs) {
225225
return JExpr.assign(this,rhs);
226226
}
227-
public JExpression assignPlus(JExpression rhs) {
227+
228+
public JExpressionStatement assignPlus(JExpression rhs) {
228229
return JExpr.assignPlus(this,rhs);
229230
}
230-
231+
232+
public JExpressionStatement assignMinus(JExpression rhs) {
233+
return JExpr.assignMinus(this,rhs);
234+
}
235+
236+
public JExpressionStatement assignTimes(JExpression rhs) {
237+
return JExpr.assignTimes(this,rhs);
238+
}
239+
240+
public JExpressionStatement assignDivide(JExpression rhs) {
241+
return JExpr.assignDivide(this,rhs);
242+
}
231243
}

0 commit comments

Comments
 (0)