@@ -558,44 +558,40 @@ public void visit(SuperExpression expression) {
558558 public void visit (TernaryOperatorExpression expression ) {
559559 tokens .addLineNumberToken (expression .getCondition ());
560560
561- if (expression .getCondition ().getPriority () > 3 ) {
562- tokens .add (TextToken .LEFTROUNDBRACKET );
563- expression .getCondition ().accept (this );
564- tokens .add (TextToken .RIGHTROUNDBRACKET );
565- } else {
566- expression .getCondition ().accept (this );
567- }
568-
569- if ((expression .getType () == PrimitiveType .TYPE_BOOLEAN ) &&
570- (expression .getExpressionTrue ().getClass () == BooleanExpression .class ) &&
561+ if ((expression .getExpressionTrue ().getClass () == BooleanExpression .class ) &&
571562 (expression .getExpressionFalse ().getClass () == BooleanExpression .class )) {
572563
573564 BooleanExpression be1 = (BooleanExpression )expression .getExpressionTrue ();
574565 BooleanExpression be2 = (BooleanExpression )expression .getExpressionFalse ();
575566
576567 if (be1 .isTrue () && be2 .isFalse ()) {
568+ printTernaryOperatorExpression (expression .getCondition ());
577569 return ;
578570 }
579- }
580-
581- tokens .add (TextToken .SPACE_QUESTION_SPACE );
582571
583- if (expression .getExpressionTrue ().getPriority () > 3 ) {
584- tokens .add (TextToken .LEFTROUNDBRACKET );
585- expression .getExpressionTrue ().accept (this );
586- tokens .add (TextToken .RIGHTROUNDBRACKET );
587- } else {
588- expression .getExpressionTrue ().accept (this );
572+ if (be1 .isFalse () && be2 .isTrue ()) {
573+ tokens .add (TextToken .EXCLAMATION );
574+ tokens .add (TextToken .LEFTROUNDBRACKET );
575+ expression .getCondition ().accept (this );
576+ tokens .add (TextToken .RIGHTROUNDBRACKET );
577+ return ;
578+ }
589579 }
590580
581+ printTernaryOperatorExpression (expression .getCondition ());
582+ tokens .add (TextToken .SPACE_QUESTION_SPACE );
583+ printTernaryOperatorExpression (expression .getExpressionTrue ());
591584 tokens .add (TextToken .SPACE_COLON_SPACE );
585+ printTernaryOperatorExpression (expression .getExpressionFalse ());
586+ }
592587
593- if (expression .getExpressionFalse ().getPriority () > 3 ) {
588+ protected void printTernaryOperatorExpression (Expression expression ) {
589+ if (expression .getPriority () > 3 ) {
594590 tokens .add (TextToken .LEFTROUNDBRACKET );
595- expression .getExpressionFalse (). accept (this );
591+ expression .accept (this );
596592 tokens .add (TextToken .RIGHTROUNDBRACKET );
597593 } else {
598- expression .getExpressionFalse (). accept (this );
594+ expression .accept (this );
599595 }
600596 }
601597
0 commit comments