mirror of https://github.com/lukechilds/rollup.git
Rich-Harris
8 years ago
10 changed files with 154 additions and 0 deletions
@ -0,0 +1,15 @@ |
|||||
|
import Node from '../Node.js'; |
||||
|
import { STRING } from '../values.js'; |
||||
|
|
||||
|
export default class ForInStatement extends Node { |
||||
|
initialise ( scope ) { |
||||
|
super.initialise( scope ); |
||||
|
|
||||
|
// special case
|
||||
|
if ( this.left.type === 'VariableDeclaration' ) { |
||||
|
for ( const proxy of this.left.declarations[0].proxies.values() ) { |
||||
|
proxy.possibleValues.add( STRING ); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
import Node from '../Node.js'; |
||||
|
import { UNKNOWN } from '../values.js'; |
||||
|
|
||||
|
export default class ForOfStatement extends Node { |
||||
|
initialise ( scope ) { |
||||
|
super.initialise( scope ); |
||||
|
|
||||
|
// special case
|
||||
|
if ( this.left.type === 'VariableDeclaration' ) { |
||||
|
for ( const proxy of this.left.declarations[0].proxies.values() ) { |
||||
|
proxy.possibleValues.add( UNKNOWN ); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
module.exports = { |
||||
|
description: 'includes effects in for-of loop (#870)' |
||||
|
} |
@ -0,0 +1,19 @@ |
|||||
|
define(function () { 'use strict'; |
||||
|
|
||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
||||
|
|
||||
|
}); |
@ -0,0 +1,17 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
@ -0,0 +1,15 @@ |
|||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
@ -0,0 +1,20 @@ |
|||||
|
(function () { |
||||
|
'use strict'; |
||||
|
|
||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
||||
|
|
||||
|
}()); |
@ -0,0 +1,23 @@ |
|||||
|
(function (global, factory) { |
||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory() : |
||||
|
typeof define === 'function' && define.amd ? define(factory) : |
||||
|
(factory()); |
||||
|
}(this, (function () { 'use strict'; |
||||
|
|
||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
||||
|
|
||||
|
}))); |
@ -0,0 +1,23 @@ |
|||||
|
const items = [{}, {}, {}]; |
||||
|
|
||||
|
function x () { |
||||
|
for ( const item of items.children ) { |
||||
|
item.foo = 'bar'; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
x(); |
||||
|
|
||||
|
function y () { |
||||
|
for ( const item of items.children ) { |
||||
|
// do nothing
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
y(); |
||||
|
|
||||
|
assert.deepEqual( items, [ |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' }, |
||||
|
{ foo: 'bar' } |
||||
|
]); |
Loading…
Reference in new issue