Ticket #3778: 3778.patch

File 3778.patch, 1.6 KB (added by Frederico Caldeira Knabben, 10 years ago)
  • _source/includes/scriptcompressor.js

     
    5656        lang[ Token.COMMA ] = ',';
    5757        lang[ Token.IN ] = ' in ';
    5858
    59         // From http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Operator_Precedence
     59        // From https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Operator_Precedence
    6060        var precedence = {};
    6161        precedence[ Token.DOT ] = 1;
    6262        precedence[ Token.INC ] = precedence[ Token.DEC ] = 3;
     
    930930                                break;
    931931
    932932                        case Token.HOOK :
    933                                 writeNode( node = node.getFirstChild() );
     933                                node = node.getFirstChild();
     934
     935                                var hasPrecedence =
     936                                                associativityRTL[ node.getType() ]
     937                                                && precedence[ node.getType() ]
     938                                                && ( precedence[ Token.HOOK ] <= precedence[ node.getType() ] );
     939
     940                                if ( hasPrecedence )
     941                                        out( '(' );                                             
     942
     943                                writeNode( node );
     944
     945                                if ( hasPrecedence )
     946                                        out( ')' );                             
     947
    934948                                out( '?' );
    935949                                writeNode( node = node.getNext() );
    936950                                out( ':' );
  • test/test.js

     
    280280                        "var a={'0123':'0123'};" ],
    281281
    282282                [       "var a={'123':'123'};",
    283                         "var a={123:'123'};" ]
     283                        "var a={123:'123'};" ],
     284
     285                [       "var a=(b)?c:d;",
     286                        "var a=b?c:d;" ],
     287
     288                [       "var a=(b=c)?d:e;" ]
    284289        ];
    285290
    286291        var tests =
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy