mirror of https://github.com/lukechilds/rollup.git
Rich-Harris
8 years ago
8 changed files with 35 additions and 32 deletions
@ -1,28 +0,0 @@ |
|||
export default function isReference ( node, parent ) { |
|||
if ( node.type === 'MemberExpression' ) { |
|||
return !node.computed && isReference( node.object, node ); |
|||
} |
|||
|
|||
if ( node.type === 'Identifier' ) { |
|||
// the only time we could have an identifier node without a parent is
|
|||
// if it's the entire body of a function without a block statement –
|
|||
// i.e. an arrow function expression like `a => a`
|
|||
if ( !parent ) return true; |
|||
|
|||
// TODO is this right?
|
|||
if ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) { |
|||
return parent.computed || node === parent.object; |
|||
} |
|||
|
|||
// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`
|
|||
if ( parent.type === 'Property' ) return parent.computed || node === parent.value; |
|||
|
|||
// disregard the `bar` in `class Foo { bar () {...} }`
|
|||
if ( parent.type === 'MethodDefinition' ) return false; |
|||
|
|||
// disregard the `bar` in `export { foo as bar }`
|
|||
if ( parent.type === 'ExportSpecifier' && node !== parent.local ) return; |
|||
|
|||
return true; |
|||
} |
|||
} |
@ -0,0 +1,4 @@ |
|||
module.exports = { |
|||
description: 'correctly deshadows destructured function parameters (#1008)', |
|||
buble: true |
|||
}; |
@ -0,0 +1,10 @@ |
|||
import { x } from './x.js'; |
|||
|
|||
let y; |
|||
|
|||
function foo ({ x = 42 }) { |
|||
y = x; |
|||
} |
|||
|
|||
foo({}); |
|||
assert.equal( y, 42 ); |
@ -0,0 +1 @@ |
|||
export var x = 'whatever'; |
Loading…
Reference in new issue