Browse Source

ignore object props, make private annotations non-enumerable

contingency-plan
Rich-Harris 10 years ago
parent
commit
6589b5b094
  1. 23
      src/ast/analyse.js

23
src/ast/analyse.js

@ -38,18 +38,16 @@ export default function analyse ( ast, magicString, module ) {
let previous = 0; let previous = 0;
ast.body.forEach( statement => { ast.body.forEach( statement => {
statement._defines = {}; Object.defineProperties( statement, {
statement._modifies = {}; _defines: { value: {} },
statement._dependsOn = {}; _modifies: { value: {} },
statement._imported = false; _dependsOn: { value: {} },
_imported: { value: false, writable: true },
// link back to the module _module: { value: module },
statement._module = module; _source: { value: magicString.snip( previous, statement.end ) }
});
// store the actual code, for easy regeneration
statement._source = magicString.snip( previous, statement.end );
previous = statement.end; previous = statement.end;
currentTopLevelStatement = statement; // so we can attach scoping info currentTopLevelStatement = statement; // so we can attach scoping info
walk( statement, { walk( statement, {
@ -132,6 +130,11 @@ export default function analyse ( ast, magicString, module ) {
return; return;
} }
// disregard the `bar` in { bar: foo }
if ( parent.type === 'Property' && node !== parent.value ) {
return;
}
const definingScope = scope.findDefiningScope( node.name ); const definingScope = scope.findDefiningScope( node.name );
if ( ( !definingScope || definingScope.depth === 0 ) && !statement._defines[ node.name ] ) { if ( ( !definingScope || definingScope.depth === 0 ) && !statement._defines[ node.name ] ) {

Loading…
Cancel
Save