### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java,v retrieving revision 1.194 diff -u -r1.194 CodeFormatterVisitor.java --- formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java 11 Jan 2007 16:04:34 -0000 1.194 +++ formatter/org/eclipse/jdt/internal/formatter/CodeFormatterVisitor.java 5 Feb 2007 14:44:46 -0000 @@ -5204,7 +5204,8 @@ * Print the operator */ int operator; - switch((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT) { + int operatorValue = (unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT; + switch(operatorValue) { case OperatorIds.PLUS: operator = TerminalTokens.TokenNamePLUS; break; @@ -5222,7 +5223,29 @@ if (this.preferences.insert_space_after_unary_operator) { this.scribe.space(); } - unaryExpression.expression.traverse(this, scope); + Expression expression = unaryExpression.expression; + + if (expression instanceof PrefixExpression) { + PrefixExpression prefixExpression = (PrefixExpression) expression; + final int numberOfParensForExpression = (prefixExpression.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT; + if (numberOfParensForExpression == 0) { + switch(operatorValue) { + case OperatorIds.PLUS: + if (prefixExpression.operator == OperatorIds.PLUS) { + this.scribe.space(); + } + break; + case OperatorIds.MINUS: + if (prefixExpression.operator == OperatorIds.MINUS) { + this.scribe.space(); + } + break; + } + } + expression.traverse(this, scope); + } else { + expression.traverse(this, scope); + } if (numberOfParens > 0) { manageClosingParenthesizedExpression(unaryExpression, numberOfParens);