Ticket #5089: 5089.patch
File 5089.patch, 2.9 KB (added by , 13 years ago) |
---|
-
_source/includes/scriptcompressor.js
267 267 break; 268 268 269 269 case Token.SETNAME : 270 var name = node.getFirstChild().getString(); 270 var name = node.getFirstChild().getString(), 271 value = node.getLastChild(); 271 272 273 if ( value.getType() == Token.THISFN ) 274 break; 275 272 276 writeNode( node.getFirstChild() ); 273 277 274 var value = node.getLastChild();275 276 278 switch ( value.getType() ) 277 279 { 278 280 case Token.MUL : … … 399 401 400 402 out( '}' ); 401 403 402 if ( name.length() )404 if ( name.length() && ( !opt || !opt.noSemiColon ) ) 403 405 out( ';' ); 404 406 break; 405 407 … … 441 443 442 444 out( '(' ); 443 445 444 var param = child.getNext(); 446 var opt, 447 paramType, 448 param = child.getNext(); 449 445 450 while( param ) 446 451 { 447 if ( param.getType() == Token.COMMA ) 452 paramType = param.getType(); 453 454 if ( paramType == Token.COMMA ) 448 455 out( '(' ); 449 456 450 if ( !writeNode( param ) ) 457 opt = ( paramType == Token.FUNCTION ) ? { noSemiColon : true } : {}; 458 459 if ( !writeNode( param, opt ) ) 451 460 break; 452 461 453 if ( param .getType()== Token.COMMA )462 if ( paramType == Token.COMMA ) 454 463 out( ')' ); 455 464 456 465 param = param.getNext(); … … 683 692 break; 684 693 685 694 case Token.EXPR_RESULT : 686 case Token.EXPR_VOID :687 695 writeChildren( node ); 688 689 696 if ( !opt || !opt.noSemiColon ) 690 697 out( ';' ); 698 break; 691 699 700 case Token.EXPR_VOID : 701 writeChildren( node ); 702 if ( !opt || !opt.noSemiColon ) 703 { 704 var child = node.getFirstChild(); 705 if ( child.getType() != Token.SETNAME || child.getLastChild().getType() != Token.THISFN ) 706 out( ';' ); 707 } 692 708 break; 693 709 694 710 case Token.GETPROP : … … 924 940 out( id ); 925 941 926 942 out( ':' ); 927 if ( !writeNode( child ) ) 943 944 opt = ( child.getType() == Token.FUNCTION ) ? { noSemiColon : true } : {}; 945 946 if ( !writeNode( child, opt ) ) 928 947 break; 929 948 930 949 child = child.getNext(); … … 960 979 out( 'return' ); 961 980 962 981 if ( value ) 963 writeNode( value ); 982 { 983 opt = ( value.getType() == Token.FUNCTION ) ? { noSemiColon : true } : {}; 984 writeNode( value, opt ); 985 } 964 986 965 987 out( ';' ); 966 988 -
test/test.js
303 303 304 304 [ "var a=(1,2,3,4);" ], 305 305 306 [ "a=(1,2,3,4);" ] 306 [ "a=(1,2,3,4);" ], 307 308 [ "app.on('event',function b(a){return a+1;});" ], 309 310 [ "add('a',{a:'2',init:function b(){return false;}});" ], 311 312 [ "function(){function a(){return function b(b){return b+1;};};}" ] 307 313 ]; 308 314 309 315 var tests =