Browse Source

Handle erroneous nested member expressions

Fixes 2nd issue in #565
gh-669
Zirak 9 years ago
parent
commit
1631c08256
  1. 5
      src/Declaration.js
  2. 2
      src/Reference.js
  3. 3
      test/form/erroneous-nested-member-expression/_config.js
  4. 13
      test/form/erroneous-nested-member-expression/_expected/amd.js
  5. 11
      test/form/erroneous-nested-member-expression/_expected/cjs.js
  6. 9
      test/form/erroneous-nested-member-expression/_expected/es6.js
  7. 14
      test/form/erroneous-nested-member-expression/_expected/iife.js
  8. 17
      test/form/erroneous-nested-member-expression/_expected/umd.js
  9. 7
      test/form/erroneous-nested-member-expression/foo.js
  10. 2
      test/form/erroneous-nested-member-expression/main.js

5
src/Declaration.js

@ -195,8 +195,9 @@ export class SyntheticNamespaceDeclaration {
// if we have e.g. `foo.bar`, we can optimise
// the reference by pointing directly to `bar`
if ( reference.parts.length ) {
reference.name = reference.parts.shift();
reference.end = reference.node.end;
const ref = reference.parts.shift();
reference.name = ref.name;
reference.end = ref.end;
const original = this.originals[ reference.name ];

2
src/Reference.js

@ -10,7 +10,7 @@ export class Reference {
let root = node;
while ( root.type === 'MemberExpression' ) {
this.parts.unshift( root.property.name );
this.parts.unshift( root.property );
root = root.object;
}

3
test/form/erroneous-nested-member-expression/_config.js

@ -0,0 +1,3 @@
module.exports = {
description: 'erroneous nested member expression does not mess up naming'
};

13
test/form/erroneous-nested-member-expression/_expected/amd.js

@ -0,0 +1,13 @@
define(function () { 'use strict';
function yar() {
return {
har() {
console.log('har?');
}
};
};
yar.har();
});

11
test/form/erroneous-nested-member-expression/_expected/cjs.js

@ -0,0 +1,11 @@
'use strict';
function yar() {
return {
har() {
console.log('har?');
}
};
};
yar.har();

9
test/form/erroneous-nested-member-expression/_expected/es6.js

@ -0,0 +1,9 @@
function yar() {
return {
har() {
console.log('har?');
}
};
};
yar.har();

14
test/form/erroneous-nested-member-expression/_expected/iife.js

@ -0,0 +1,14 @@
(function () {
'use strict';
function yar() {
return {
har() {
console.log('har?');
}
};
};
yar.har();
}());

17
test/form/erroneous-nested-member-expression/_expected/umd.js

@ -0,0 +1,17 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
typeof define === 'function' && define.amd ? define(factory) :
(factory());
}(this, function () { 'use strict';
function yar() {
return {
har() {
console.log('har?');
}
};
};
yar.har();
}));

7
test/form/erroneous-nested-member-expression/foo.js

@ -0,0 +1,7 @@
export function yar() {
return {
har() {
console.log('har?');
}
};
};

2
test/form/erroneous-nested-member-expression/main.js

@ -0,0 +1,2 @@
import * as foo from './foo.js';
foo.yar.har();
Loading…
Cancel
Save