File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3416,9 +3416,15 @@ Compressor.prototype.compress = function(node) {
34163416 if (def.references.length - def.replaced == referenced) return true;
34173417 if (!def.fixed) return false;
34183418 if (!lhs.fixed) return false;
3419- if (def.references.filter(function(ref) {
3420- return ref.fixed === lhs.fixed;
3421- }).length != referenced) return false;
3419+ var matched = 0;
3420+ if (!all(def.references, function(ref, index) {
3421+ var fixed = ref.fixed;
3422+ if (!fixed) return false;
3423+ if (fixed.to_binary || fixed.to_prefix) return false;
3424+ if (fixed === lhs.fixed) matched++;
3425+ return true;
3426+ })) return false;
3427+ if (matched != referenced) return false;
34223428 verify_ref = true;
34233429 return true;
34243430 }
Original file line number Diff line number Diff line change @@ -10000,3 +10000,55 @@ issue_5568: {
1000010000 }
1000110001 expect_stdout: "PASS"
1000210002}
10003+
10004+ issue_5638_1: {
10005+ options = {
10006+ collapse_vars : true ,
10007+ pure_getters : "strict" ,
10008+ reduce_vars : true ,
10009+ toplevel : true ,
10010+ }
10011+ input: {
10012+ var log = console . log ;
10013+ var a = { foo : 42 } , b ;
10014+ for ( var k in a ) {
10015+ b = a [ k ] ;
10016+ log ( k || b , b ++ ) ;
10017+ }
10018+ }
10019+ expect: {
10020+ var log = console . log ;
10021+ var a = { foo : 42 } , b ;
10022+ for ( var k in a ) {
10023+ b = a [ k ] ;
10024+ log ( k || b , b ++ ) ;
10025+ }
10026+ }
10027+ expect_stdout: "foo 42"
10028+ }
10029+
10030+ issue_5638_2: {
10031+ options = {
10032+ collapse_vars : true ,
10033+ pure_getters : "strict" ,
10034+ reduce_vars : true ,
10035+ toplevel : true ,
10036+ }
10037+ input: {
10038+ var log = console . log ;
10039+ var a = { foo : 6 } , b ;
10040+ for ( var k in a ) {
10041+ b = a [ k ] ;
10042+ log ( k || b , b *= 7 ) ;
10043+ }
10044+ }
10045+ expect: {
10046+ var log = console . log ;
10047+ var a = { foo : 6 } , b ;
10048+ for ( var k in a ) {
10049+ b = a [ k ] ;
10050+ log ( k || b , b *= 7 ) ;
10051+ }
10052+ }
10053+ expect_stdout: "foo 42"
10054+ }
Original file line number Diff line number Diff line change @@ -701,3 +701,57 @@ issue_5626: {
701701 }
702702 expect_stdout: "PASS"
703703}
704+
705+ issue_5638_1: {
706+ options = {
707+ collapse_vars : true ,
708+ hoist_vars : true ,
709+ pure_getters : "strict" ,
710+ reduce_vars : true ,
711+ toplevel : true ,
712+ }
713+ input: {
714+ var log = console . log ;
715+ var o = { foo : 42 } ;
716+ for ( var k in o ) {
717+ var v = o [ k ] ;
718+ log ( k || v , v ++ ) ;
719+ }
720+ }
721+ expect: {
722+ var log , o , k , v ;
723+ log = console . log ;
724+ for ( k in o = { foo : 42 } ) {
725+ v = o [ k ] ;
726+ log ( k || v , v ++ ) ;
727+ }
728+ }
729+ expect_stdout: "foo 42"
730+ }
731+
732+ issue_5638_2: {
733+ options = {
734+ collapse_vars : true ,
735+ hoist_vars : true ,
736+ pure_getters : "strict" ,
737+ reduce_vars : true ,
738+ toplevel : true ,
739+ }
740+ input: {
741+ var log = console . log ;
742+ var o = { foo : 6 } ;
743+ for ( var k in o ) {
744+ var v = o [ k ] ;
745+ log ( k || v , v *= 7 ) ;
746+ }
747+ }
748+ expect: {
749+ var log , o , k , v ;
750+ log = console . log ;
751+ for ( k in o = { foo : 6 } ) {
752+ v = o [ k ] ;
753+ log ( k || v , v *= 7 ) ;
754+ }
755+ }
756+ expect_stdout: "foo 42"
757+ }
You can’t perform that action at this time.
0 commit comments